<?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>173803</bug_id>
          
          <creation_ts>2017-06-23 21:02:48 -0700</creation_ts>
          <short_desc>Assert that callback ID is not 0 or -1 during encoding and decoding</short_desc>
          <delta_ts>2017-06-29 20:03:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Safari Technology Preview</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=173839</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1322554</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-23 21:02:48 -0700</bug_when>
    <thetext>To diagnose a hang inside the m_callbacks in WebPageProxy, assert that callbackID is not 0 or -1 in IPC message encode/decode code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322563</commentid>
    <comment_count>1</comment_count>
      <attachid>313771</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-23 22:58:55 -0700</bug_when>
    <thetext>Created attachment 313771
Adds assertion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322569</commentid>
    <comment_count>2</comment_count>
      <attachid>313773</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-23 23:25:40 -0700</bug_when>
    <thetext>Created attachment 313773
Fixed iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322570</commentid>
    <comment_count>3</comment_count>
      <attachid>313774</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-23 23:35:10 -0700</bug_when>
    <thetext>Created attachment 313774
WPE build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322572</commentid>
    <comment_count>4</comment_count>
      <attachid>313775</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-23 23:55:31 -0700</bug_when>
    <thetext>Created attachment 313775
Another WPE build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322573</commentid>
    <comment_count>5</comment_count>
      <attachid>313776</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-24 00:07:33 -0700</bug_when>
    <thetext>Created attachment 313776
Yet another WPE build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322578</commentid>
    <comment_count>6</comment_count>
      <attachid>313777</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-24 00:21:25 -0700</bug_when>
    <thetext>Created attachment 313777
More GTK+ and WPE build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322581</commentid>
    <comment_count>7</comment_count>
      <attachid>313779</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-24 00:28:35 -0700</bug_when>
    <thetext>Created attachment 313779
Another GTK+ and WPE build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322582</commentid>
    <comment_count>8</comment_count>
      <attachid>313780</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-24 00:38:38 -0700</bug_when>
    <thetext>Created attachment 313780
Yet another GTK+ and WPE build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322584</commentid>
    <comment_count>9</comment_count>
      <attachid>313781</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-24 00:47:47 -0700</bug_when>
    <thetext>Created attachment 313781
Even more GTK+ and WPE build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322585</commentid>
    <comment_count>10</comment_count>
      <attachid>313782</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-24 00:53:32 -0700</bug_when>
    <thetext>Created attachment 313782
Another GTK+ build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322590</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-24 01:09:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/32964323&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322611</commentid>
    <comment_count>12</comment_count>
      <attachid>313782</attachid>
    <who name="">mitz</who>
    <bug_when>2017-06-24 08:04:23 -0700</bug_when>
    <thetext>Comment on attachment 313782
Another GTK+ build fix

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

&gt; Source/WebKit2/ChangeLog:47
&gt; +        (WebKit::SpecificCallbackMap): Added. Used in WebCookieManagerProxy.

In earlier work, we replaced specific maps with generic ones. Why keep the ones in WebCookieManagerProxy separate?

&gt; Source/WebKit2/ChangeLog:646
&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r218782

Stray conflict marker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322755</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-25 21:33:49 -0700</bug_when>
    <thetext>(In reply to mitz from comment #12)
&gt; Comment on attachment 313782 [details]
&gt; Another GTK+ build fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313782&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:47
&gt; &gt; +        (WebKit::SpecificCallbackMap): Added. Used in WebCookieManagerProxy.
&gt; 
&gt; In earlier work, we replaced specific maps with generic ones. Why keep the
&gt; ones in WebCookieManagerProxy separate?

Okay, I wasn&apos;t aware of that refactoring effort. Fixed.

&gt; &gt; Source/WebKit2/ChangeLog:646
&gt; &gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r218782
&gt; 
&gt; Stray conflict marker.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322756</commentid>
    <comment_count>14</comment_count>
      <attachid>313820</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-25 21:34:08 -0700</bug_when>
    <thetext>Created attachment 313820
Updated per Dan&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322758</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-25 21:59:55 -0700</bug_when>
    <thetext>We don’t really need this anymore, do we? I think adding MESSAGE_CHECKs on UI process side for hardening would likely suffice to protect against this in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322765</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-26 00:53:48 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #15)
&gt; We don’t really need this anymore, do we? I think adding MESSAGE_CHECKs on
&gt; UI process side for hardening would likely suffice to protect against this
&gt; in the future.

I think it&apos;s still useful to wrap CallbackID in a class so that we can easily add diagnostics in the future. For example, we should really be making the decode() function fail when a callbackID is not optional and it&apos;s 0 or -1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322913</commentid>
    <comment_count>17</comment_count>
      <attachid>313820</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-06-26 11:02:53 -0700</bug_when>
    <thetext>Comment on attachment 313820
Updated per Dan&apos;s comments

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

&gt; Source/WebKit2/Shared/OptionalCallbackID.h:62
&gt; +    static ALWAYS_INLINE bool isValidCallbackID(uint64_t rawId)
&gt; +    {
&gt; +        return !HashTraits&lt;uint64_t&gt;::isDeletedValue(rawId);
&gt; +    }

Why do we consider emptyValue() to be valid? Isn&apos;t that the bug we&apos;re trying to catch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322916</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-26 11:04:01 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #17)
&gt; Comment on attachment 313820 [details]
&gt; Updated per Dan&apos;s comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313820&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/OptionalCallbackID.h:62
&gt; &gt; +    static ALWAYS_INLINE bool isValidCallbackID(uint64_t rawId)
&gt; &gt; +    {
&gt; &gt; +        return !HashTraits&lt;uint64_t&gt;::isDeletedValue(rawId);
&gt; &gt; +    }
&gt; 
&gt; Why do we consider emptyValue() to be valid? Isn&apos;t that the bug we&apos;re trying
&gt; to catch?

For OptionalCallbackID, we use 0 to mean it&apos;s not set. I have a separate release assertion when the value is used like WTF::Optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323273</commentid>
    <comment_count>19</comment_count>
      <attachid>313820</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-27 15:03:19 -0700</bug_when>
    <thetext>Comment on attachment 313820
Updated per Dan&apos;s comments

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

&gt; Source/WebKit2/Shared/CallbackID.h:35
&gt; +namespace WTF {
&gt; +
&gt; +struct CallbackIDHash;
&gt; +
&gt; +}

I don&apos;t usually see empty lines between namespace and forward decls like this.

&gt; Source/WebKit2/UIProcess/GenericCallback.h:209
&gt; +    // FIXME: Every caller should pass in activityToken
&gt; +    template&lt;typename... T&gt;
&gt; +    CallbackID put(Function&lt;void(T...)&gt;&amp;&amp; function)
&gt; +    {
&gt; +        auto callback = GenericCallbackType&lt;sizeof...(T), T...&gt;::type::create(WTFMove(function));
&gt; +        return put(WTFMove(callback));
&gt; +    }

Is it okay to punt on this FIXME right now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323276</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-27 15:06:23 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #19)
&gt; Comment on attachment 313820 [details]
&gt; Updated per Dan&apos;s comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313820&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/CallbackID.h:35
&gt; &gt; +namespace WTF {
&gt; &gt; +
&gt; &gt; +struct CallbackIDHash;
&gt; &gt; +
&gt; &gt; +}
&gt; 
&gt; I don&apos;t usually see empty lines between namespace and forward decls like
&gt; this.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/GenericCallback.h:209
&gt; &gt; +    // FIXME: Every caller should pass in activityToken
&gt; &gt; +    template&lt;typename... T&gt;
&gt; &gt; +    CallbackID put(Function&lt;void(T...)&gt;&amp;&amp; function)
&gt; &gt; +    {
&gt; &gt; +        auto callback = GenericCallbackType&lt;sizeof...(T), T...&gt;::type::create(WTFMove(function));
&gt; &gt; +        return put(WTFMove(callback));
&gt; &gt; +    }
&gt; 
&gt; Is it okay to punt on this FIXME right now?

I wanted to fix it in a separate patch at least to reduce the chance of this patch introducing a new regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323713</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-06-28 16:05:15 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #20)
&gt; (In reply to Brady Eidson from comment #19)
&gt; &gt; Comment on attachment 313820 [details]
&gt; &gt; Updated per Dan&apos;s comments
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=313820&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/Shared/CallbackID.h:35
&gt; &gt; &gt; +namespace WTF {
&gt; &gt; &gt; +
&gt; &gt; &gt; +struct CallbackIDHash;
&gt; &gt; &gt; +
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; I don&apos;t usually see empty lines between namespace and forward decls like
&gt; &gt; this.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/GenericCallback.h:209
&gt; &gt; &gt; +    // FIXME: Every caller should pass in activityToken
&gt; &gt; &gt; +    template&lt;typename... T&gt;
&gt; &gt; &gt; +    CallbackID put(Function&lt;void(T...)&gt;&amp;&amp; function)
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        auto callback = GenericCallbackType&lt;sizeof...(T), T...&gt;::type::create(WTFMove(function));
&gt; &gt; &gt; +        return put(WTFMove(callback));
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Is it okay to punt on this FIXME right now?
&gt; 
&gt; I wanted to fix it in a separate patch at least to reduce the chance of this
&gt; patch introducing a new regression.

Could we file a bug and include it in the comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324254</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-29 20:03:36 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #21)
&gt; (In reply to Ryosuke Niwa from comment #20)
&gt; &gt; (In reply to Brady Eidson from comment #19)
&gt; &gt; &gt; Comment on attachment 313820 [details]
&gt; &gt; &gt; Updated per Dan&apos;s comments
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=313820&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/Shared/CallbackID.h:35
&gt; &gt; &gt; &gt; +namespace WTF {
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +struct CallbackIDHash;
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +}
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t usually see empty lines between namespace and forward decls like
&gt; &gt; &gt; this.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/GenericCallback.h:209
&gt; &gt; &gt; &gt; +    // FIXME: Every caller should pass in activityToken
&gt; &gt; &gt; &gt; +    template&lt;typename... T&gt;
&gt; &gt; &gt; &gt; +    CallbackID put(Function&lt;void(T...)&gt;&amp;&amp; function)
&gt; &gt; &gt; &gt; +    {
&gt; &gt; &gt; &gt; +        auto callback = GenericCallbackType&lt;sizeof...(T), T...&gt;::type::create(WTFMove(function));
&gt; &gt; &gt; &gt; +        return put(WTFMove(callback));
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; 
&gt; &gt; &gt; Is it okay to punt on this FIXME right now?
&gt; &gt; 
&gt; &gt; I wanted to fix it in a separate patch at least to reduce the chance of this
&gt; &gt; patch introducing a new regression.
&gt; 
&gt; Could we file a bug and include it in the comment?

Filed https://bugs.webkit.org/show_bug.cgi?id=174007 to track this.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324255</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-29 20:03:56 -0700</bug_when>
    <thetext>Committed r218985: &lt;http://trac.webkit.org/changeset/218985&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313771</attachid>
            <date>2017-06-23 22:58:55 -0700</date>
            <delta_ts>2017-06-23 23:25:39 -0700</delta_ts>
            <desc>Adds assertion</desc>
            <filename>bug-173803-20170623225855.patch</filename>
            <type>text/plain</type>
            <size>133074</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxsYmFj
ayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5nIHRo
ZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQgYXNz
ZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0xIGR1
cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBsYXRl
c3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1c2Vk
IGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9mIDAg
KGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxsYmFj
a0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAgICAg
KiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6
aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBuZWl0
aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdlcik6
IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZhbHVl
LgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVzIHRo
ZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVpdGhl
ciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8u
CisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6Q2Fs
bGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6OkNh
bGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNo
VHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICAq
IFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lELCBj
YWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxi
YWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFsQ2Fs
bGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFja0lE
OjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUgY2Fs
bGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQgdGhl
IElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAgICAg
ICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2ViS2l0
OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdlYktp
dDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNrSUQg
Y2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJLaXQ6
Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFja0lE
KTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisgICAg
ICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisgICAg
ICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJDb29r
aWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnB1
dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RyaW5n
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVTdHJp
bmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVD
YWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0Nh
bGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRD
YWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21wbGV0
aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2Fk
aW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVuZGlu
Z1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToKKyAg
ICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29u
ZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29tcHV0
ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdG
b3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvbnRB
dFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNN
b2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0QWxs
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
OgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0
YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENv
bnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJjaGl2
ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFy
a2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVkUmFu
Z2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9p
bnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVByb2Zp
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWRk
VHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKToK
KyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNzZXJ0
aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1lbnRM
b2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAgICAg
ICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIxODc4
MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdLV2Vi
VmlldyBvbiB0aGUgcGhvbmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DYWxsYmFja0lE
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NhbGxiYWNrSUQuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIENhbGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJ
TkUgZXhwbGljaXQgQ2FsbGJhY2tJRCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENh
bGxiYWNrSUQoY29uc3QgQ2FsbGJhY2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVy
SUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1w
dHlWYWx1ZSgpICE9IG1faWQgJiYgIUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1
ZShtX2lkKSk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQm
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2
NF90IHRvSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9
CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRf
dCByYXdJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1w
dHlWYWx1ZSgpICE9IHJhd0lkICYmICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFs
dWUocmF3SWQpOworICAgIH0KKworICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQg
ZnJvbUludGVnZXIodWludDY0X3QgcmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc1ZhbGlkQ2FsbGJhY2tJRChyYXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChy
YXdJZCk7CisgICAgfQorCisgICAgc3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAg
eworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWlu
dDY0X3QgdW5pcXVlQ2FsbGJhY2tJRCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVu
aXF1ZUNhbGxiYWNrSUQrKyk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWlu
dDY0X3QgbmV3SUQpCisgICAgICAgIDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChuZXdJRCAhPSBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisK
KyAgICBmcmllbmQgY2xhc3MgQ2FsbGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENh
bGxiYWNrVHlwZT4gZnJpZW5kIGNsYXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5k
IGNsYXNzIE9wdGlvbmFsQ2FsbGJhY2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJh
Y2tJREhhc2g7CisgICAgZnJpZW5kIHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJ
RD47CisKKyAgICB1aW50NjRfdCBtX2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFs
dWUoKSB9OworfTsKKworfQorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURI
YXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQm
IGNhbGxiYWNrSUQpIHsgcmV0dXJuIGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0
OjpDYWxsYmFja0lEJiBiKSB7IHJldHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxi
YWNrSUQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xv
dCkgeyBzbG90ID0gV2ViS2l0OjpDYWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0
X3Q+OjptYXgoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJL
aXQ6OkNhbGxiYWNrSUQmIHNsb3QpIHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxXZWJLaXQ6OkNhbGxiYWNrSUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhh
c2g7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFj
a0lELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL09wdGlvbmFsQ2FsbGJh
Y2tJRC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENh
bGxiYWNrSUQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBP
cHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgT3B0
aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisgICAgICAgIDogbV9p
ZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgT3B0aW9u
YWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJRCkKKyAgICAgICAg
OiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghSGFzaFRyYWl0czx1
aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAgICB1aW50NjRfdCB0
b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKCkK
KyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFj
a0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7CisgICAgfQorCisg
ICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNrSUQobV9pZCk7IH0K
KyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFja0lEKHVpbnQ2NF90
IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNE
ZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1faWQ7CisgICAgfQor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsgSGFzaFRyYWl0czx1
aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAkocmV2
aXNpb24gMjE4NzgyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVm
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uX2gKICNkZWZpbmUgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb25faAogCisjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgpAQCAtMjYxLDcgKzI2Miw3IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCB0cmFuc2FjdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV90cmFu
c2FjdGlvbklEOyB9CiAgICAgdm9pZCBzZXRUcmFuc2FjdGlvbklEKHVpbnQ2NF90IHRyYW5zYWN0
aW9uSUQpIHsgbV90cmFuc2FjdGlvbklEID0gdHJhbnNhY3Rpb25JRDsgfQogCi0gICAgdHlwZWRl
ZiB1aW50NjRfdCBUcmFuc2FjdGlvbkNhbGxiYWNrSUQ7CisgICAgdHlwZWRlZiBDYWxsYmFja0lE
IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKICAgICBjb25zdCBWZWN0b3I8VHJhbnNhY3Rpb25DYWxs
YmFja0lEPiYgY2FsbGJhY2tJRHMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSURzOyB9CiAg
ICAgdm9pZCBzZXRDYWxsYmFja0lEcyhWZWN0b3I8VHJhbnNhY3Rpb25DYWxsYmFja0lEPiYmIGNh
bGxiYWNrSURzKSB7IG1fY2FsbGJhY2tJRHMgPSBXVEZNb3ZlKGNhbGxiYWNrSURzKTsgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCShyZXZpc2lv
biAyMTg3ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSUVycm9yLmgi
CiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiQ2FsbGJh
Y2tJRC5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTaGFyZWFi
bGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTM0LDcgKzM1LDYgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tJRDsgfQorICAgIENhbGxiYWNrSUQgY2FsbGJhY2tJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tJRDsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4K
ICAgICBUKiBhcygpCkBAIC03MSwyMSArNzEsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgZXhwbGlj
aXQgQ2FsbGJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4pCiAgICAgICAgIDogbV90eXBlKHR5cGUp
Ci0gICAgICAgICwgbV9jYWxsYmFja0lEKGdlbmVyYXRlQ2FsbGJhY2tJRCgpKQorICAgICAgICAs
IG1fY2FsbGJhY2tJRChDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKCkpCiAgICAgICAgICwgbV9hY3Rp
dml0eVRva2VuKGFjdGl2aXR5VG9rZW4pCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVDYWxsYmFja0lEKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDYWxs
YmFja0lEID0gMTsKLSAgICAgICAgcmV0dXJuIHVuaXF1ZUNhbGxiYWNrSUQrKzsKLSAgICB9Ci0K
ICAgICBUeXBlIG1fdHlwZTsKLSAgICB1aW50NjRfdCBtX2NhbGxiYWNrSUQ7CisgICAgQ2FsbGJh
Y2tJRCBtX2NhbGxiYWNrSUQ7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4gbV9hY3Rpdml0eVRva2VuOwogfTsKIApAQCAtMTgwLDEzICsxNzMsMTMgQEAgdm9p
ZCBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAoSGFzaE1hcDx1aW50NgogCiBjbGFzcyBDYWxsYmFja01h
cCB7CiBwdWJsaWM6Ci0gICAgdWludDY0X3QgcHV0KFJlZjxDYWxsYmFja0Jhc2U+JiYgY2FsbGJh
Y2spCisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAu
Y29udGFpbnMoY2FsbGJhY2tJRCkpOwotICAgICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRCwgV1RG
TW92ZShjYWxsYmFjaykpOworICAgICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQoKSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlucyhjYWxsYmFja0lELm1faWQp
KTsKKyAgICAgICAgbV9tYXAuc2V0KGNhbGxiYWNrSUQubV9pZCwgV1RGTW92ZShjYWxsYmFjaykp
OwogICAgICAgICByZXR1cm4gY2FsbGJhY2tJRDsKICAgICB9CiAKQEAgLTIwMSwxOCArMTk0LDE4
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICB1
aW50NjRfdCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5jdGlvbiwgY29uc3QgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4pCisgICAg
Q2FsbGJhY2tJRCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5jdGlvbiwgY29uc3QgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4pCiAg
ICAgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2Yu
Li4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9r
ZW4pOwogICAgICAgICByZXR1cm4gcHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIFJlZlB0cjxUPiB0YWtlKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgUmVmUHRyPFQ+IHRha2UoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgICAgICBhdXRvIGJhc2UgPSBtX21hcC50YWtlKGNhbGxiYWNrSUQpOwor
ICAgICAgICBhdXRvIGJhc2UgPSBtX21hcC50YWtlKGNhbGxiYWNrSUQubV9pZCk7CiAgICAgICAg
IGlmICghYmFzZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMjksNCArMjIy
LDQ1IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPENhbGxiYWNrQmFz
ZT4+IG1fbWFwOwogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4KK2NsYXNz
IFNwZWNpZmljQ2FsbGJhY2tNYXAgeworcHVibGljOgorICAgIENhbGxiYWNrSUQgcHV0KFJlZjxD
YWxsYmFja1R5cGU+JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9p
ZCkpOworICAgICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgIHJldHVybiBjYWxsYmFja0lEOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIFQ+CisgICAgQ2FsbGJhY2tJRCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBm
dW5jdGlvbikKKyAgICB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBDYWxsYmFja1R5cGU6OmNy
ZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxs
YmFjaykpOworICAgIH0KKworICAgIFJlZlB0cjxDYWxsYmFja1R5cGU+IHRha2UoQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5p
c1ZhbGlkKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAg
aWYgKCFiYXNlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKGJhc2UubGVha1JlZigpLT50ZW1wbGF0ZSBhczxDYWxsYmFja1R5cGU+KCkpOwor
ICAgIH0KKworICAgIHZvaWQgaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAg
ICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9tYXAsIGVycm9yKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPENhbGxiYWNrQmFzZT4+IG1fbWFwOworfTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMjE4NzgyKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1
ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tp
ZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsCiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCgpCiB7Ci0gICAgaW52YWxpZGF0ZUNh
bGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2Fz
SW52YWxpZGF0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2Nl
cHRQb2xpY3lDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0
ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2Fz
SW52YWxpZGF0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2h0dHBDb29raWVBY2NlcHRQ
b2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6
OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3Mu
aW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKIAog
ICAgIFZlY3RvcjxPYnNlcnZlcio+IG9ic2VydmVyczsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
U2V0IDogbV9jb29raWVPYnNlcnZlcnMudmFsdWVzKCkpIHsKQEAgLTkxLDE4ICs5MiwxOCBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bvb2xECiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKIHsKLSAgICBp
bnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1faHR0cENvb2tp
ZUFjY2VwdFBvbGljeUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fdm9pZENhbGxiYWNrcywgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1f
Z2V0Q29va2llc0NhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9hcnJheUNhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6OlBy
b2Nlc3NFeGl0ZWQpOworICAgIG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5pbnZh
bGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fdm9pZENh
bGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwor
ICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6
OlByb2Nlc3NFeGl0ZWQpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vz
c0RpZENsb3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVk
KTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlk
YXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9j
ZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5Q2Fs
bGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Cisg
ICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29raWVz
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVu
dCgpCkBAIC0xMTcsMTQgKzExOCwxMSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVy
ZWZXZWJDb250CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5Kiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNh
bGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAg
IG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fYXJyYXlDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbikpOwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBob3N0bmFtZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9IG1fYXJyYXlDYWxsYmFja3MudGFrZShj
YWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNDcsNjkgKzE0NSw1MSBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29vCiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29v
a2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRl
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJ
RCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJh
Y2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2ll
c01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJh
Y2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0
KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNv
b2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25JRCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9
CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxs
YmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lE
ID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBw
cm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29r
aWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5j
dGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxs
YmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxi
YWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMo
c2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFj
azo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNr
cy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
KTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5n
SWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lv
bklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsK
IH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVj
dG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2Fs
bGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShj
b29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tp
ZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRE
ZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9p
ZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4
NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2kK
ICAgICAvLyBUaGUgcG9saWN5IGlzIG5vdCBzZW50IHRvIG5ld2x5IGNyZWF0ZWQgcHJvY2Vzc2Vz
IChvbmx5IFNvdXAgZG9lcyB0aGF0IHZpYSBzZXRJbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSgpKS4gVGhpcyBpcyBub3QgYSBzZXJpb3VzIHByb2JsZW0sIGJlY2F1c2U6CiAgICAgLy8gLSBX
aGVuIHRlc3RpbmcsIHdlIG9ubHkgaGF2ZSBvbmUgV2ViUHJvY2VzcyBhbmQgb25lIE5ldHdvcmtQ
cm9jZXNzLCBhbmQgV2ViS2l0VGVzdFJ1bm5lciBuZXZlciByZXN0YXJ0cyB0aGVtOwogICAgIC8v
IC0gV2hlbiBub3QgdGVzdGluZywgQ29jb2EgaGFzIHRoZSBwb2xpY3kgcGVyc2lzdGVkLCBhbmQg
dGh1cyBuZXcgcHJvY2Vzc2VzIHVzZSBpdCAoZXZlbiBmb3IgZXBoZW1lcmFsIHNlc3Npb25zKS4K
LSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCAwKSk7Ci0KLSAgICBh
dXRvIGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
Ci0gICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxs
YmFja0lEKCkpKTsKIAotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSwgY2FsbGJhY2tJRCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2Vu
ZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koU2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2Fs
bGJhY2sgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pKTsKLQotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+
Y2FsbGJhY2tJRCgpOwotICAgIG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5zZXQo
Y2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0g
bV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy50YWtlKGNh
bGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9saWN5KTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgJKHJldmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDEzICsxMDcsMTMg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkoV2ViUHJvY2Vz
c1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZEdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
KyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBk
aWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZEdldENv
b2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRH
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0OjpDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEKTsKIAog
ICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogCkBAIC0xMzEs
MTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPj4gbV9o
dHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxiYWNrczsKKyAg
ICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxsYmFja3M7Cisg
ICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+IG1f
aHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFw
PFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2FsbGJhY2tNYXA8
R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9sZWdhY3lDb29r
aWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhhc2hTZXQ8T2Jz
ZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDEzICsyMSwxMyBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyUHJveHkgewotICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50
MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZEdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAKLSAgICBEaWRTZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIERpZERlbGV0ZUNvb2tp
ZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZERlbGV0ZUNvb2tpZXMo
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZFNldENvb2tpZXMoV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENvb2tpZXMoVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogCiAg
ICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIx
ODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAi
T3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUg
IlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIK
QEAgLTE2MDMsNyArMTYwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMo
Ym9vbCAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJv
YXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMTYyOCw3ICsxNjI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFu
ZChjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoc2NyaXB0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQog
CkBAIC0yODQ1LDcgKzI4NDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4
dGVybmFsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMjg1Niw3ICsyODU3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxs
YmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOwogfQpAQCAtMjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dENvbnRlbnRzQXNTdHJpbmcoVwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3Ry
aW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0yODgwLDcgKzI4ODEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKFdUCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAtMjg5Miw3
ICsyODkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiB9CkBAIC0yOTMwLDcgKzI5MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
U2VsZWN0aW9uT3JDb250ZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyAr
Mjk0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2gKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NTIsNyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2YKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OwogfQogCkBAIC0yOTYzLDcgKzI5NjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hp
dmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTMwMDcsNyArMzAwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVm
UHRyPFYKICAgICAgICAgfSk7CiAgICAgfTsKIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2sp
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7IAogfQpAQCAtMzI0Myw3ICszMjQ0LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJM
b2FkRGVwZW5kZW50Q2FsbGJhY2tzKCkKIHsKLSAgICBIYXNoU2V0PHVpbnQ2NF90PiBsb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3ZlKG1fbG9hZERlcGVuZGVudFN0cmluZ0Nh
bGxiYWNrSURzKTsKKyAgICBIYXNoU2V0PENhbGxiYWNrSUQ+IGxvYWREZXBlbmRlbnRTdHJpbmdD
YWxsYmFja0lEcyA9IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOwog
ICAgIGZvciAoYXV0byYgY2FsbGJhY2tJRCA6IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lE
cykgewogICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5n
Q2FsbGJhY2s+KGNhbGxiYWNrSUQpKQogICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUo
KTsKQEAgLTUwMDAsNyArNTAwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZl
bnQodWludDMKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtl
PFZvaWRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTAx
MSw3ICs1MDEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayh1aW50NjRfdAog
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4o
Y2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTAyMiw3ICs1MDIzLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUAogICAgIGNhbGxiYWNrLT5w
ZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVy
ZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjppbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBi
aXRtYXBIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW1h
Z2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tz
LnRha2U8SW1hZ2VDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpA
QCAtNTAzMyw3ICs1MDM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29u
c3QgUwogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFw
SGFuZGxlKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0
cmluZyYgcmVzdWx0U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJv
eHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3Ry
aW5nQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcs
NyArNTA0OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCAKICAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlc3VsdFN0cmluZy5p
bXBsKCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmlu
Z0NhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0g
bV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFj
YWxsYmFjaykgewpAQCAtNTA2MSw3ICs1MDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludmFs
aWRhdGVTdHJpbmdDYWxsYgogICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFp
bHMmIGRldGFpbHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2Ny
aXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2Us
IGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8U2NyaXB0VmFsdWVDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNTA4MSw3ICs1MDgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soYwogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRF
eGNlcHRpb24sIGRldGFpbHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90YWxT
Y2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VS
ZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPENvbXB1dGVk
UGFnZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTA5
Miw3ICs1MDkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjawog
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGFnZVJlY3RzLCB0
b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmFs
aWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCBpc0Vu
YWJsZWQsIGludCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29s
IGlzRW5hYmxlZCwgaW50IHN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0
byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMDMsNyArNTEwNCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmEKICAgICBjYWxsYmFjay0+cGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVk
LCBzdGF0ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2
NF90IHJlc3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNp
Z25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQKICAgICBjYWxsYmFjay0+cGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlc3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNr
KGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQoKSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjaygKIH0KIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25z
dCBNYWNoU2VuZFJpZ2h0JiBzZW5kUmlnaHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNl
bmRSaWdodCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBt
X2NhbGxiYWNrcy50YWtlPE1hY2hTZW5kUmlnaHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykKQEAgLTUxOTIsNyArNTE5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojps
b2dTY3JvbGxpbmdFdmVudCh1aW4KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBFZGl0
aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OnJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKGFjdHVhbFJhbmdlLmlzVmFsaWQoKSk7CiAKQEAgLTU5NjEs
NyArNTk2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFj
ay0+Y2FsbGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lz
SW5QcmludGluZ01vZGUgPSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZv
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOwpAQCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcgogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJl
Y3QsIGltYWdlU2l6ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25z
KG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KQEAgLTU5ODcsNyArNTk4OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmEKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgp
LCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGlu
Z1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KQEAgLTU5
OTksNyArNjAwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZygK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBt
X2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZv
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoVwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRS
YW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYzMDcsNyArNjMwOCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTYzMTgsNyArNjMxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZv
clBvaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTYzNzMsNyArNjM3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlU25h
cHNob3QoSW50UmVjdCAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRt
YXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02NTk2LDcg
KzY1OTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDCiAgICAg
YXV0byB2b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25l
eHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApA
QCAtNjc0Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQ
b3NpdAogICAgIG1fcGFnZUNsaWVudC5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6
TGlua0ljb24mIGljb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyKQordm9pZCBXZWJQYWdlUHJv
eHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24s
IENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIpCiB7CiAgICAgbV9pY29uTG9hZGluZ0NsaWVudC0+
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0
cjxXZWJQYWdlUHJveHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKSB7
CiAgICAgICAgIGlmICghaXNWYWxpZCgpKSB7CkBAIC02NzU2LDE1ICs2NzU3LDE1IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY28KICAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgZGVjaXNpb24gPSAoYm9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRf
dCBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpIDogMDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIg
PSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNp
b24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQor
dm9pZCBXZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFj
a0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNr
KGRhdGEsIGNhbGxiYWNrSWRlbnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxi
YWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJs
ZWQoYm9vbCBkaXNhYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtOTM2LDcgKzkzNiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCB1
aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYpOwogI2lm
IFBMQVRGT1JNKElPUykKICAgICB1aW50MzJfdCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERy
YXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBEcmF3VG9QREZDYWxs
YmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKLSAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRh
dGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykKICAg
ICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludElu
Zm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmKTsKQEAgLTExNTksOCArMTE1OSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKLSAgICB2
b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lk
IGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXZWJLaXQ6
OkNhbGxiYWNrSUQpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxi
YWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBzZXRGb2N1cyhi
b29sIGZvY3VzZWQpOwogICAgIHZvaWQgc2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jik7CkBAIC0xNDQ5LDIzICsxNDQ5LDIzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpOwogCi0gICAg
dm9pZCB2b2lkQ2FsbGJhY2sodWludDY0X3QpOwotICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGltYWdlQ2FsbGJhY2so
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzdHJp
bmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRl
U3RyaW5nQ2FsbGJhY2sodWludDY0X3QpOwotICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGNvbXB1dGVkUGFnZXND
YWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUgdG90YWxTY2Fs
ZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCk7Ci0gICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRD
YWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHVu
c2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGVkaXRpbmdSYW5n
ZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHZvaWRD
YWxsYmFjayhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHN0cmluZ0Nh
bGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgaW52YWxpZGF0ZVN0
cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgY29tcHV0ZWRQYWdl
c0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNj
YWxlRmFjdG9yRm9yUHJpbnRpbmcsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdmFsaWRhdGVDb21t
YW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBDYWxsYmFja0lEKTsKKyAgICB2
b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZWRp
dGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBtYWNoU2VuZFJpZ2h0Q2FsbGJhY2soY29uc3QgV2Vi
Q29yZTo6TWFjaFNlbmRSaWdodCYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIG1hY2hTZW5kUmlnaHRD
YWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgQ2FsbGJhY2tJRCk7CiAjZW5k
aWYKLSAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCB1aW50NjRfdCk7CisgICAgdm9pZCByZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQg
YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRl
ZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGZvbnRB
dFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgdWludDY0X3Qp
OworICAgIHZvaWQgYXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29u
c3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgZG91YmxlLCBi
b29sLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGdl
c3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJf
dCwgdWludDMyX3QsIHVpbnQ2NF90KTsKQEAgLTE2OTksNyArMTY5OSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIENhbGxiYWNrTWFwIG1fY2FsbGJhY2tzOwotICAgIEhhc2hTZXQ8dWludDY0
X3Q+IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzOworICAgIEhhc2hTZXQ8Q2FsbGJh
Y2tJRD4gbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHM7CiAKICAgICBIYXNoU2V0PFdl
YkVkaXRDb21tYW5kUHJveHkqPiBtX2VkaXRDb21tYW5kU2V0OwogCkBAIC0xOTU5LDcgKzE5NTks
NyBAQCBwcml2YXRlOgogICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIG1fY29uZmln
dXJhdGlvblByZWZlcmVuY2VWYWx1ZXM7CiAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpOb0ZsYWdzIH07CiAgICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50
c1N5bmNocm9ub3VzUmVwbHkgeyBmYWxzZSB9OwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0
QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKKyAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKIAogICAgIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX21lZGlhU3RhdGUgeyBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpJc05vdFBsYXlpbmcgfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMTg3ODIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQsMjcgKzE1NCwyNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAg
IFdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQs
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKICAgICAjIENhbGxi
YWNrIG1lc3NhZ2VzCi0gICAgVm9pZENhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
RGF0YUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCB1aW50NjRfdCBjYWxs
YmFja0lEKQotICAgIEltYWdlQ2FsbGJhY2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSBiaXRtYXBIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU3RyaW5nQ2FsbGJhY2so
U3RyaW5nIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBJbnZhbGlkYXRl
U3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTY3JpcHRWYWx1ZUNhbGxi
YWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGhhZEV4Y2VwdGlvbiwgc3Ry
dWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0YWlscywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhTdHJpbmcgY29tbWFuZCwgYm9v
bCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRWRp
dGluZ1JhbmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1aW50
NjRfdCBjYWxsYmFja0lEKQotICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJh
bmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFZvaWRDYWxsYmFjayhXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEYXRhQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VsdERhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEltYWdlQ2FsbGJh
Y2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRT
dHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEludmFsaWRhdGVTdHJp
bmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTY3JpcHRWYWx1
ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGhhZEV4Y2VwdGlv
biwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0YWlscywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFZhbGlkYXRlQ29tbWFuZENh
bGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRWRpdGluZ1JhbmdlQ2FsbGJhY2soc3Ry
dWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2Vi
Q29yZTo6SW50UmVjdCByZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFu
Z2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0
OjpBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFj
dHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxi
YWNrKFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVs
dGlwbGVGb250cywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBBdHRyaWJ1dGVkU3RyaW5nRm9y
Q2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHN0
cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb250QXRTZWxlY3Rpb25DYWxsYmFjayhTdHJpbmcg
Zm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb0hhc011bHRpcGxlRm9udHMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3Qg
Z2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICBBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6RmxvYXRS
ZWN0PiB0ZXh0UmVjdHMsIFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCB1aW50NjRf
dCB0cmFpdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0
Q2FsbGJhY2soU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2Vs
ZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3Qg
bGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdGlvbkNvbnRleHRDYWxsYmFj
ayhTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXN0dXJlQ2FsbGJhY2soV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBUb3Vj
aGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVp
bnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBdXRvY29y
cmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiB0ZXh0UmVjdHMs
IFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCB1aW50NjRfdCB0cmFpdHMsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxi
YWNrKFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVk
VGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0
aCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0aW9uQ29udGV4dENh
bGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnRlcnByZXRLZXlF
dmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0ZSwgYm9vbCBpc0NoYXJFdmVudCkg
LT4gKGJvb2wgaGFuZGxlZCkKICAgICBEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1
Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikK
ICAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5k
bGUsIHVpbnQ2NF90IHNpemUpCkBAIC0xODQsMTcgKzE4NCwxNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQpCiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpCiAgICAgRGlzYWJsZURvdWJs
ZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQotICAg
IERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIFNlbGVjdGlvblJlY3RzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OlNl
bGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBE
cmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2Vi
Q29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBTZXRE
YXRhRGV0ZWN0aW9uUmVzdWx0KHN0cnVjdCBXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQgZGF0
YURldGVjdGlvblJlc3VsdCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBQcmludEZp
bmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKKyAgICBQcmludEZpbmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6TWFjaFNlbmRS
aWdodCBzZW5kUmlnaHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgTWFjaFNlbmRSaWdodENh
bGxiYWNrKFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0LCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRv
dWJsZSBzY2FsZUZhY3RvcikKQEAgLTQ4Miw4ICs0ODIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogCiAgICAgRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAotICAgIEdldExvYWRE
ZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgRmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKTsKKyAgICBHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKHN0cnVjdCBXZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lELCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCShyZXZpc2lvbiAyMTg3ODIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yODEsMTAgKzI4MSwxMCBAQCAtICh2b2lkKV9wcmVwYXJlUERGRGF0YUZvclByaW50
aW5nT25TZWNvCiAgICAgICAgICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5u
b3RpZnlPbmUoKTsKICAgICAgICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJh
Y2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sg
PSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmll
dyA9IHNlbGY7Ci0gICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9J
bnRlZ2VyKCk7CiAKICAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZy
YW1lLmdldCgpLCBwcmludEluZm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdl
ICsgMSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIC0gKEJPT0wp
X2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHMKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0Nh
bGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIoY29udGV4dCk7CiAgICAgICAgIHBhZ2VEaWRD
b21wdXRlUGFnZVJlY3RzKHBhZ2VSZWN0cywgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBj
b250ZXh0KTsKICAgICB9KTsKLSAgICBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIF9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFj
ayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAgICAgY29udGV4dC0+dmll
dyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IF9leHBlY3RlZENvbXB1dGVkUGFn
ZXNDYWxsYmFjazsKIApAQCAtNTIxLDExICs1MjEsMTEgQEAgLSAodm9pZClfZHJhd1ByZXZpZXc6
KE5TUmVjdCluc1JlY3QKICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0Nh
bGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIoY29udGV4dCk7CiAgICAgICAgICAgICAgICAg
ICAgIHBhZ2VEaWREcmF3VG9JbWFnZShpbWFnZUhhbmRsZSwgY29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNr
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAgICAgICAgICBfbGF0ZXN0RXhwZWN0
ZWRQcmV2aWV3Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRvSW50ZWdlcigpOwog
ICAgICAgICAgICAgICAgIF9leHBlY3RlZFByZXZpZXdDYWxsYmFja3MuYWRkKF9sYXRlc3RFeHBl
Y3RlZFByZXZpZXdDYWxsYmFjaywgc2NhbGVkUHJpbnRpbmdSZWN0KTsKIAogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAg
ICAgICAgICAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdSZWN0VG9JbWFnZShfd2ViRnJhbWUu
Z2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50SW5mb10pLCBzY2FsZWRQcmlu
dGluZ1JlY3QsIGltYWdlU2l6ZSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCShyZXZpc2lvbiAyMTg3ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgxLDEyICsxODEs
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGbwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdl
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmli
dXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmlu
ZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJS
YW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGlu
Z1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NB
R0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OgogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25DYWxsYmFjayhjb25zdCBTdHJpbmcm
IGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250
cywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rp
b25DYWxsYmFjayhjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wg
c2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNr
PihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTg3
ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM3NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUw
MDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0Eg
LyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBD
aGlsZFByb2Nlc3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDaGlsZFByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRG
ODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1
QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDky
OSw4IEBACiAJCQkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VN
YXAuaCAqLywKIAkJCQlCQ0YxODYzNzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAg
Ki8sCiAJCQkJQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJ
CQk5QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5
RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJE
OTU2RTEyODQ4NTY0MDAxRUI5NjIgLyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2
RDEyODQ4NTY0MDAxRUI5NjIgLyogQ2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1
Qjc1NzAwNEYxMDJBIC8qIENoaWxkUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5jcHAJKHJldmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBA
QCBXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKENoaWxkCiAgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFNlc3Np
b25JRCBzZXNzaW9uSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBIYXNoU2V0PFN0
cmluZz4gaG9zdG5hbWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTc5LDcgKzc5LDcg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKAogICAgICAgICBXZWJD
b3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tp
ZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpk
ZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAg
IHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2llKTsKQEAgLTg3LDE2ICs4NywxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShTZXNzCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUNvb2tpZXMo
Y2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBX
ZWJDb3JlOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSgqc3RvcmFnZVNlc3Npb24sIHRp
bWUpOwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQp
LCAwKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBj
b29raWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTEwNSw3ICsxMDQsNyBAQCB2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2VzCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywg
Y2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMo
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29v
a2llPiBjb29raWVzOwogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIw
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW8KICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0Q29va2llcyhj
b29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0
Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2ll
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0
b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYg
KGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llcyhjb29r
aWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0K
IAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlDb29raWVzRGlkQ2hhbmdlKFNlc3Npb25J
RCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnN0b3BPYnNlcnZpbmdDb29rCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHBvbGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxs
YmFja0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6Omdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAkocmV2aXNpb24g
MjE4NzgyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjE4NzgyKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDE5ICsyNCwxOSBAQAogICovCiAgCiAgbWVzc2FnZXMgLT4gV2ViQ29va2ll
TWFuYWdlciB7Ci0gICAgdm9pZCBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgdm9pZCBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIGhvc3RuYW1lKQogICAgIHZvaWQgRGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCi0gICAgdm9pZCBT
ZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNv
b2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgdm9pZCBTZXRDb29raWVzKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgdm9pZCBHZXRDb29raWVzKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgdm9pZCBEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBTZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAKLSAgICB2b2lkIFNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1
aW50MzJfdCBwb2xpY3ksIFdlYktpdDo6T3B0aW9uYWxDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgdm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIAogICAgIHZvaWQgU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgdm9pZCBTdG9wT2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODEwLDE2ICsxODEwLDE3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZUljb25Mb2FkaW4KIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lv
bkZvckljb24oY29uc3QgTGlua0ljb24mIGljb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkKLSAgICAgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGljb24sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIENhbGxiYWNrSUQ6OmZyb21J
bnRlZ2VyKGNhbGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CisgICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVn
ZXIoY2FsbGJhY2tJZGVudGlmaWVyKTsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1fZnJh
bWUtPnBhZ2UoKSB9KSB7CiAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNr
SWRlbnRpZmllciwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRh
KCkpLCBkYXRhLT5zaXplKCkgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpIH0p
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSWRlbnRpZmllciwgeyBudWxs
cHRyLCAwIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IG51bGxwdHIsIDAgfSkpOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
IkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIC8v
IEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgogICAgIHZpcnR1YWwgdm9pZCBw
YWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Zm9yY2VSZXBhaW50KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVp
bnQ2NF90IC8qY2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsgfQogICAgIHZpcnR1
YWwgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdCB7IHJldHVy
biAwOyB9CkBAIC0xMTYsNyArMTE3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKCk+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFja0lEcyAqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBj
b25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJI
b3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJr
TGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CkBA
IC0xNzQsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlv
bkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxs
YmFja0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0Uo
UkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBtZXNz
YWdlcyAtPiBEcmF3aW5nQXJlYSB7CiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1
aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5LCBkb3VibGUgc3RhcnRUaW1lKQogICAgIEFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXkpCiAgICAg
Ci0gICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
QWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYg
UExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAyMTg3ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmVu
YWJsZUVudW1lcmF0aW5nQWxsTmV0d29yCiB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBh
Z2UoV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1f
YWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUpCi0gICAgICAgIHNldEFj
dGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBmYWxzZSwgVmVjdG9yPHVpbnQ2
NF90PigpKTsKKyAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3Rh
dGUsIGZhbHNlLCBWZWN0b3I8Q2FsbGJhY2tJRD4oKSk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5n
TW9kZSAhPSBwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHNldExheWVySG9z
dGluZ01vZGUocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKTsKIH0KQEAgLTE5MjEsNyArMTky
MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGUKIAogI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCiAKLXZvaWQgV2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qg
c25hcHNob3RSZWN0LCBJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRSZWN0IHNuYXBz
aG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0
YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4ob3B0aW9ucyk7CiAgICAgc25hcHNob3RPcHRpb25z
IHw9IFNuYXBzaG90T3B0aW9uc1NoYXJlYWJsZTsKQEAgLTI0MjIsNyArMjQyMiw3IEBAIHZvaWQg
V2ViUGFnZTo6a2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmQKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2V5Ym9h
cmRFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dmFsaWRhdGVD
b21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYm9vbCBpc0VuYWJsZWQgPSBmYWxzZTsKICAg
ICBpbnQzMl90IHN0YXRlID0gMDsKQEAgLTI2MjUsNyArMjYyNSw3IEBAIHZvaWQgV2ViUGFnZTo6
dmlld1dpbGxFbmRMaXZlUmVzaXplKCkKICAgICAgICAgdmlldy0+d2lsbEVuZExpdmVSZXNpemUo
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29s
IGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9y
d2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
ZXZlbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY5MCw3ICsyNjkwLDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNpYmlsaXR5
RGlkQ2hhbmdlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShB
Y3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpCit2b2lkIFdl
YlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0
ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFj
a0lEPiYgY2FsbGJhY2tJRHMpCiB7CiAgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCA9
IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0g
YWN0aXZpdHlTdGF0ZTsKQEAgLTI4NDEsNyArMjg0MSw3IEBAIEtleWJvYXJkVUlNb2RlIFdlYlBh
Z2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1v
ZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5
Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNU
b0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdo
ZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAg
ICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgpAQCAtMjg2MiwxNCArMjg2
MiwxNCBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVu
Y2UsIGhhZEV4Y2VwdGlvbiwgZGV0YWlscywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3Ry
aW5nIHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCk7CiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcs
IGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0
Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpn
ZXRDb250ZW50c0FzTUhUTUxEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRv
IGJ1ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsK
IApAQCAtMjg4MCw3ICsyODgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxE
YXRhKHVpbgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSByZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bigpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVz
dWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CkBAIC0yODk2LDcgKzI4OTYsNyBAQCBzdGF0aWMgRnJh
bWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhOwpAQCAtMjkxMiw3ICsyOTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNh
bGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpn
ZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBXZWJGcmFtZSogZm9jdXNlZE9yTWFpbkZyYW1lID0gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KSk7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IGZvY3VzZWRPck1haW5GcmFtZS0+c2VsZWN0
aW9uQXNTdHJpbmcoKTsKQEAgLTI5MjEsNyArMjkyMSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2Vs
ZWN0aW9uT3JDb250ZW50c0FzU3QKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0
cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nOwogICAgIGlm
IChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFt
ZUlEKSkKQEAgLTI5MzAsNyArMjkzMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJh
bWUodWludDY0X3QKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxi
YWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0yOTYyLDcgKzI5NjIsNyBAQCBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+
ZGF0YSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
V2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJ
RCkpIHsKQEAgLTI5ODEsNyArMjk4MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKHUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFj
ayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0V2Vi
QXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGRhdGE7CkBAIC0zMDA0LDcgKzMwMDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmZvcmNl
UmVwYWludFdpdGhvdXRDYWxsYmFjCiAgICAgbV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50KCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
aWYgKG1fZHJhd2luZ0FyZWEtPmZvcmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpKQogICAgICAg
ICByZXR1cm47CkBAIC00MzgzLDcgKzQzODMsNyBAQCB2b2lkIFdlYlBhZ2U6OmVuZFByaW50aW5n
KCkKICAgICBtX3ByaW50Q29udGV4dCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlc3VsdFBh
Z2VSZWN0czsKICAgICBkb3VibGUgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nID0g
MTsKQEAgLTQ0MTIsNyArNDQxMiw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdJbXAKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3UmVj
dFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29y
ZUZyYW1lKCkgOiAwOwpAQCAtNDQ2MSw3ICs0NDYxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVj
dFRvSW1hZ2UodWludDY0X3QgZgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1h
Z2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3
UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
dWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VE
YXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBj
b3VudCwgcGRmUGFnZURhdGEpOwpAQCAtNDgzNyw3ICs0ODM3LDcgQEAgdm9pZCBXZWJQYWdlOjpp
bnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5jb25maXJt
Q29tcG9zaXRpb24odGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2VBc3lu
Yyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5j
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC00ODUyLDcgKzQ4NTIs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlQXN5bmModWludDY0CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0aW5nUmFuZ2VDYWxsYmFjayhFZGl0aW5nUmFuZ2Uo
bG9jYXRpb24sIGxlbmd0aCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRT
ZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
U2VsZWN0ZWRSYW5nZUFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
CkBAIC00ODY3LDcgKzQ4NjcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3lu
Yyh1aW50CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0aW5nUmFuZ2VDYWxs
YmFjayhFZGl0aW5nUmFuZ2UobG9jYXRpb24sIGxlbmd0aCksIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpjaGFy
YWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgdWludDY0X3QgaW5kZXggPSBub3RGb3VuZDsK
IApAQCAtNDg4NSw3ICs0ODg1LDcgQEAgdm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBv
aW50QXN5bgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFj
ayhpbmRleCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
QXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIEludFJlY3QgcmVzdWx0KEludFBvaW50KDAsIDApLCBJ
bnRTaXplKDAsIDApKTsKQEAgLTU2OTIsNyArNTY5Miw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
Q2FjaGVkRG9jdW1lbnRMb2FkZXIKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNv
ZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2Rl
UHJvZmlsZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKCFjb21tb25WTSgpLm1f
cGVyQnl0ZWNvZGVQcm9maWxlcikgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlN0cmluZ0NhbGxiYWNrKFN0cmluZygpLCBjYWxsYmFja0lEKSk7CkBAIC01NzA0LDcgKzU3
MDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHQsIGNhbGxiYWNr
SUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikK
ICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gY29tbW9uVk0oKS5zYW1w
bGluZ1Byb2ZpbGVyKCk7CkBAIC01ODg3LDEwICs1ODg3LDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlk
TG9zZVBvaW50ZXJMb2NrKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVp
bnQ2NF90IG5ld0NhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgT3B0aW9uYWxD
YWxsYmFja0lEIG5ld0NhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVy
ID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAg
ICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24s
IGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lEKTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50
ZWdlcigpLCBuZXdDYWxsYmFja0lELnRvSW50ZWdlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpz
ZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAy
MTg3ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJDYWxsYmFj
a0lELmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VG
dWxsU2NyZWVuQ2xpZW50LmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVl
Q29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQ
bHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVk
TWVtb3J5LmgiCkBAIC01NDIsNTAgKzU0NCw1MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNwZWN0
b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
IAogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwotICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1
cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVT
ZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJf
dCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgdXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwotICAgIHZvaWQgc2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1
cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91
Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSk7
CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rpb25C
eU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBz
ZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxh
cml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9u
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVj
dGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIG1v
dmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwg
dWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEKTsK
KyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxiYWNr
SUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFy
eShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgcmVx
dWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXF1
ZXN0RGljdGF0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRl
ZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAg
IHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0
cmluZyYgbmV3VGV4dCk7Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0
IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0
aW9uLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3Ry
aW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rp
b24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBib29sJiBjb3JyZWN0aW9uQXBwbGllZCk7
Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNr
SUQpOworICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGJlZm9yZVRleHQsIFN0
cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJUZXh0
LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0UG9z
aXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYsIElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRp
b25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpOwogICAg
IHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJm
b3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7Ci0gICAgdm9pZCBmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0
QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWRO
b2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0
aW9uKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGb3JFbGVtZW50QXRJbnRlcmFjdGlvbkxv
Y2F0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCk7Ci0gICAgdm9p
ZCBnZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0
U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIGhhbmRsZVR3b0ZpbmdlclRh
cEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwot
ICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMy
X3QsIGludDMyX3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0UmVjdHNBdFNl
bGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25P
ZmZzZXQodWludDMyX3QsIGludDMyX3QsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVjdHNB
dFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
SUQpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgZGlzcGF0Y2hBc3lu
Y2hyb25vdXNUb3VjaEV2ZW50cyhjb25zdCBWZWN0b3I8V2ViVG91Y2hFdmVudCwgMT4mIHF1ZXVl
KTsKICNlbmRpZgogCiAgICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0
IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21t
YW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogCiAgICAgU2Vjb25k
cyBldmVudFRocm90dGxpbmdEZWxheSgpIGNvbnN0OwogCkBAIC02NzMsMTcgKzY3NSwxNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7
CiAKICAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZh
bHNlLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSAodWludDMyX3QpRWRpdGlu
Z1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QsIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25V
cGRhdGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmaXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyhDYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5n
UmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+
JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0
aW9uQXN5bmMoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGluc2VydERpY3RhdGVk
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNl
bWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBk
aWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZh
bHNlKTsKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZm9u
dEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgYXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFdURjo6U3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgYm9vbCYgcmVzdWx0KTsKQEAgLTc0NiwxOCArNzQ4LDE4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mKTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7Ci0gICAgdm9pZCBjb21wdXRlUGFnZXNG
b3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgY29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdJbXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUmIHRvdGFsU2NhbGVGYWN0
b3IpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBk
cmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJf
dCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ2FsbGJhY2tJRCk7
CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgZHJhd1BhZ2VzVG9QREZJbXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYs
IHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFS
ZWY+JiBwZGZQYWdlRGF0YSk7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgY29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lk
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJik7CiAjZW5kaWYK
ICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Q2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkUmVzb3VyY2VSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpAQCAtOTE1LDggKzkx
Nyw4IEBAIHB1YmxpYzoKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIHVwZGF0ZUNh
Y2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6RnJhbWUmKTsK
IAotICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNhbXBs
aW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCk7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICB2b2lk
IGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtOTY5LDcgKzk3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2
NF90IG5ld0NhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihi
b29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBPcHRpb25hbENhbGxiYWNr
SUQpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNpZiBFTkFC
TEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTEwNTksMTEgKzEwNjEsMTEgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGdvQmFjayh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKICAgICB2b2lk
IGdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAg
ICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKLSAgICB2b2lkIHNldEluaXRpYWxG
b2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEluaXRpYWxG
b2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9v
bCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2Uo
KTsKLSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBjYWxsYmFja0lEcyk7Ci0gICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5n
JiwgdWludDY0X3QpOworICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZl
Y3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpOworICAgIHZvaWQgdmFsaWRhdGVDb21tYW5k
KGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5k
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9v
bCk7CiAKQEAgLTExMDQsMjAgKzExMDYsMjAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZpZXdXaWxs
U3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKIAot
ICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCk7CiAjaWYgRU5BQkxFKE1IVE1MKQot
ICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJhY2tJRCk7CiAjZW5kaWYKLSAgICB2
b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3Qg
Y2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcodWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRXZWJBcmNoaXZl
T2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKLSAgICB2b2lkIGZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2
b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6
SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0
U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2
b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsK
KyAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKKyAgICB2b2lkIHRha2VTbmFwc2hv
dChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBT
aXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIHZvaWQgcGxhdGZv
cm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjE4NzgyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIx
LDggQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7Ci0gICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZl
bnRWYWxpZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIFNldEFjdGl2aXR5U3RhdGUodW5zaWduZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2FsbGJhY2tJRHMp
CisgICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRW
YWxpZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBTZXRBY3Rpdml0eVN0YXRlKHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUs
IGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFj
a0lEPiBjYWxsYmFja0lEcykKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW0gV2ViS2l0OjpM
YXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAKICAgICBTZXREcmF3c0JhY2tncm91
bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCkBAIC01NCwzNCArNTQsMzQgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Q
b3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEluc3BlY3Rvck5vZGVTZWFy
Y2hFbmRlZEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBCbHVyQXNz
aXN0ZWROb2RlKCkKLSAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3Qg
Z2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFy
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVXBkYXRlQmxvY2tTZWxlY3Rp
b25XaXRoVG91Y2goV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1aW50
MzJfdCBoYW5kbGVQb3NpdGlvbikKLSAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJ
bnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUs
IHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RX
aXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0
bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51
bGFyaXR5KQogICAgIFNlbGVjdFdvcmRCYWNrd2FyZCgpCi0gICAgTW92ZVNlbGVjdGlvbkJ5T2Zm
c2V0KGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFRleHRX
aXRoR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBn
cmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLSAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGly
ZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxs
YmFja0lEKQotICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJf
dCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQot
ICAgIFNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBC
ZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRh
cnkoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJl
cXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgTW92ZVNlbGVj
dGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQz
Ml90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIE1vdmVT
ZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWlu
dDMyX3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxl
Y3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IEJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQo
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJf
dCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUmVwbGFjZURpY3RhdGVkVGV4dChTdHJp
bmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQpCiAgICAgUmVwbGFjZVNlbGVjdGVkVGV4dChTdHJp
bmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQpCi0gICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0
YShTdHJpbmcgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAg
IEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRl
eHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShT
dHJpbmcgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3Jp
Z2luYWxUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTeW5jQXBwbHlB
dXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4g
KGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKQotICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNv
bnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldEF1dG9jb3JyZWN0aW9u
Q29udGV4dCgpIC0+IChTdHJpbmcgYmVmb3JlQ29udGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0
cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBhZnRlckNvbnRleHQsIHVpbnQ2NF90IGxvY2F0aW9u
LCB1aW50NjRfdCBsZW5ndGgpIAogICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdl
YktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAg
IFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpCiAgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
QXRQb3NpdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBTdG9wSW50ZXJhY3Rpb24o
KQogICAgIFBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQotICAgIEZvY3Vz
TmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBGb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIFNldEFzc2lzdGVkTm9kZVZhbHVlKFN0cmluZyB2YWx1ZSkKICAg
ICBTZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSB2YWx1ZSkKICAgICBTZXRBc3Np
c3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVT
ZWxlY3Rpb24pCkBAIC05MSwxMyArOTEsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGJvb2wgaXNTdXNw
ZW5kZWRVbmRlckxvY2spCiAgICAgQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogICAgIENv
bnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoU3RyaW5nIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCi0g
ICAgRXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIEdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkK
KyAgICBFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soU3RyaW5nIG5hbWUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbkNvbnRleHQoV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrKGJvb2wgYWxsb3dzKQogICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFsd2F5
c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0ZvckdyYW51bGFy
aXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZz
ZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRX
aXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIEdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90
IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpOworICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNl
dCwgU3RyaW5nIHRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgog
CiAgICAgU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCkBAIC0xNTYs
MTkgKzE1NiwxOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBS
ZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkKIAogICAgICMgQ2FsbGJh
Y2tzLgotICAgIEdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBH
ZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIEVO
QUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgR2V0Q29udGVudHNBc01IVE1MRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxs
YmFja0lEKQotICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxs
YmFja0lEKQotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2FsbGJh
Y2tJRCkKLSAgICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZyBz
Y3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRm9yY2VSZXBhaW50KHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVzb3VyY2VEYXRhRnJv
bUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
R2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFN0cmluZyBzY3JpcHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZvcmNl
UmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgICMgRGljdGlvbmFyeSBzdXBwb3J0LgpAQCAtMTkyLDcgKzE5Miw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRyeUNsb3NlKCkKIAogICAgIFNl
dEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCi0gICAgVmFsaWRhdGVDb21tYW5kKFN0cmluZyBuYW1l
LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFZhbGlkYXRlQ29tbWFuZChTdHJpbmcgbmFtZSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRXhlY3V0ZUVkaXRDb21tYW5kKFN0
cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQpCiAKICAgICBEaWRSZW1vdmVFZGl0Q29tbWFuZCh1
aW50NjRfdCBjb21tYW5kSUQpCkBAIC0zMjIsMTYgKzMyMiwxNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIFByaW50aW5nLgogICAgIEJlZ2luUHJpbnRpbmco
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbykKICAg
ICBFbmRQcmludGluZygpCi0gICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKKyAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50
UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICBEcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQ
cmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCisgICAgRHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwg
V2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlBy
aW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIENvbXB1dGVQ
YWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJL
aXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpIC0+ICh1aW50MzJf
dCBwYWdlQ291bnQpIERlbGF5ZWQKKyAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdU
b1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkg
RGVsYXllZAogI2VuZGlmCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgRHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBEcmF3UGFnZXNGb3JQcmludGluZyh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAgICAgIyBNZWRpYQpAQCAtMzgz
LDE3ICszODMsMTcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
QWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQg
ZXZlbnQpIC0+IChib29sIHJlc3VsdCkKIAogICAgIEluc2VydFRleHRBc3luYyhTdHJpbmcgdGV4
dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVn
aXN0ZXJVbmRvR3JvdXAsIHVpbnQzMl90IGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbywgYm9vbCBz
dXBwcmVzc1NlbGVjdGlvblVwZGF0ZSkKLSAgICBHZXRNYXJrZWRSYW5nZUFzeW5jKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgQ2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgR2V0TWFya2VkUmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgQ2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CisgICAgRmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICAgICBTZXRDb21wb3NpdGlvbkFzeW5jKFN0
cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGlu
ZXMsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBzZWxlY3Rpb25SYW5nZSwgc3RydWN0IFdl
YktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UpCiAgICAgQ29uZmlybUNvbXBvc2l0
aW9uQXN5bmMoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEluc2VydERpY3RhdGVk
VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFj
ZW1lbnRSYW5nZSwgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCi0gICAgQXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jhbmdl
IHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBGb250QXRTZWxlY3Rpb24odWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgQXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCk7CisgICAgRm9udEF0U2VsZWN0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgU2V0TWluaW11bUxheW91dFNpemUoV2ViQ29yZTo6
SW50U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZSkKQEAgLTQxMiwxMSArNDEyLDExIEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cih1aW50MzJfdCBwaW5uaW5nKQogICAgIFNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIAotICAgIEdldEJ5dGVjb2RlUHJvZmls
ZSh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldEJ5dGVjb2RlUHJvZmlsZShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIAotICAgIEdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodWlu
dDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIAotICAgIFRha2VTbmFwc2hvdChXZWJDb3JlOjpJ
bnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJf
dCBvcHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFRha2VTbmFwc2hvdChXZWJDb3Jl
OjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50
MzJfdCBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKFdlYkNv
cmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pCiAgICAgSW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCkK
QEAgLTQ2Miw3ICs0NjIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
IAogICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9u
KQogCi0gICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRf
dCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCkKKyAgICBEaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRl
bnRpZmllciwgV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKICAgICBT
ZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQogCiAjaWYg
RU5BQkxFKEdBTUVQQUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
CShyZXZpc2lvbiAyMTg3ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCIK
ICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgpAQCAtNjgsNyArNjksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlh
dGVseSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVy
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVh
dGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIG92ZXJy
aWRlOwogICAgIHZvaWQgd2lsbERlc3Ryb3lEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yKik7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVp
bnQ2NF90KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgZm9yY2VSZXBhaW50
QXN5bmMoQ2FsbGJhY2tJRCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQg
c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pikgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2Vk
UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7
IH0KQEAgLTEwMyw3ICsxMDQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYWluRnJhbWVDb250
ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdz
IGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxi
YWNrSURzKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmco
V2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyMTg3ODIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZwogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7IH0pOwogfQogCi12b2lkIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3Rh
dGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikKIHsKICAgICAvLyBGSVhNRTog
U2hvdWxkIHdlIHN1c3BlbmQgcGFpbnRpbmcgd2hpbGUgbm90IHZpc2libGUsIGxpa2UgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE/IFByb2JhYmx5LgogCkBAIC00OTcsNyArNDk3LDcgQEAg
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdAogICAgIH0KIH0KIAotdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRU
cmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fcGVu
ZGluZ0NhbGxiYWNrSURzLmFwcGVuZChzdGF0aWNfY2FzdDxSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6VHJhbnNhY3Rpb25DYWxsYmFja0lEPihjYWxsYmFja0lEKSk7CiAgICAgc2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyRmx1c2goKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIxODc4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNj
cm9sbERlbHRhKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlk
ZTsKKyAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKICAgICBib29s
IGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJv
b3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKQEAg
LTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5n
Rm9yRnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdz
IGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGF0dGFj
aFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogCiAgICAgUnVuTG9vcDo6
VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFjdGl2
aXR5U3RhdGVUaW1lcjsKLSAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dEFjdGl2aXR5U3RhdGVD
aGFuZ2VDYWxsYmFja0lEczsKKyAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrSURzOwogICAgIGJvb2wgbV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5
U3RhdGU7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3ZpZXdPdmVybGF5Um9vdExh
eWVyOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShy
ZXZpc2lvbiAyMTg3ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yYwogICAg
IFtDQVRyYW5zYWN0aW9uIHN5bmNocm9uaXplXTsKIH0KIAotYm9vbCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jv
b2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAobV9sYXllclRyZWVTdGF0ZUlzRnJvemVuKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTksNyArNDU5LDcgQEAgYm9vbCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Zmx1cwogICAgIH0KIH0KIAotdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpG
bGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKK3ZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0
aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja0lEcykKIHsKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBw
ZW5kVmVjdG9yKG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwogICAgIG1fd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlIHw9IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsK
QEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpk
aWRVCiAgICAgaWYgKG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKQogICAgICAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
KCkpOwogCi0gICAgZm9yICh1aW50NjRfdCBjYWxsYmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0
ZUNoYW5nZUNhbGxiYWNrSURzKQorICAgIGZvciAoYXV0byBjYWxsYmFja0lEIDogbV9uZXh0QWN0
aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogCiAgICAgbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFyKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShy
ZXZpc2lvbiAyMTg3ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFdl
YlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvCiAgICAgZnJhbWUuZWRpdG9yKCkuaW5z
ZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBudWxs
cHRyKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdDsKIApAQCAtMzc1LDcgKzM3
NSw3IEBAIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXIKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKHJlc3VsdCwgcmFuZ2VUb1NlbmQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpmb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Zm9udEF0U2VsZWN0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcg
Zm9udE5hbWU7CiAgICAgZG91YmxlIGZvbnRTaXplID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313773</attachid>
            <date>2017-06-23 23:25:40 -0700</date>
            <delta_ts>2017-06-23 23:35:08 -0700</delta_ts>
            <desc>Fixed iOS build</desc>
            <filename>bug-173803-20170623232539.patch</filename>
            <type>text/plain</type>
            <size>165651</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
YWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhMzExZDk4YTY0OTdmMDM3ZWY3YTBjYTIwNzg0ZGY3Y2QzNWJjNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1
Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENh
bGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgQ2FsbGJhY2tJ
RCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQoY29uc3QgQ2FsbGJh
Y2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IG1faWQgJiYg
IUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IHJhd0lkICYm
ICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQgZnJvbUludGVnZXIodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJhY2tJRChy
YXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChyYXdJZCk7CisgICAgfQorCisgICAg
c3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJ
RCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVuaXF1ZUNhbGxiYWNrSUQrKyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FsbGJhY2tJRCYg
Y2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
TFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWludDY0X3QgbmV3SUQpCisgICAgICAg
IDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZXdJRCAhPSBIYXNoVHJhaXRz
PHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2Fs
bGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4gZnJpZW5kIGNs
YXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5kIGNsYXNzIE9wdGlvbmFsQ2FsbGJh
Y2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJhY2tJREhhc2g7CisgICAgZnJpZW5k
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD47CisKKyAgICB1aW50NjRfdCBt
X2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGNhbGxiYWNrSUQpIHsgcmV0dXJu
IGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBiKSB7IHJl
dHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6Q2Fs
bGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxiYWNrSUQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpD
YWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OkNhbGxiYWNr
SUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhhc2g7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTcyZTBj
ZTY1ZDYyZDZlMGFmYjYzYmYwZWMyNThkOTQzZGE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBPcHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
ZXhwbGljaXQgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisg
ICAgICAgIDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJ
RCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
SGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCB0b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6Omlz
VmFsaWRDYWxsYmFja0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNr
SUQobV9pZCk7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFj
a0lEKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVp
bnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lk
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsg
SGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDBhYTRmYjE1Njk5NjRiNTM5NDhkYTJiNTMyZDNkNmIzMjJiZmEyOGYuLjJhNDVmYTI2
MGE4ZTUwMzEyNmYxM2Q5MTkyOTA3ZjBlZTM1ZDRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb25faAogI2RlZmluZSBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0y
NjEsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQo
dWludDY0X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklE
OyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICB0
eXBlZGVmIENhbGxiYWNrSUQgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZlY3Rv
cjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tJRHM7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlv
bkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2Fs
bGJhY2tJRHMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBmNjEwODE3NzMyNDUwY2MyYTM4ZTQ2MTljOWE0OWRkZDNhNmYyZTVhLi4wYWI4ZjMy
NTA2ZjVkODc5ODdkODdlNzcxODcyNDQzYWM4NzE1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNh
bGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+CiAgICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAog
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkK
KyAgICAgICAgLCBtX2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAg
ICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7
Ci0gICAgfQotCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwor
ICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTcz
LDEzIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBj
YWxsYmFja01hcCwgQ2FsbGJhY2tCYXNlOjpFcnJvCiAKIGNsYXNzIENhbGxiYWNrTWFwIHsKIHB1
YmxpYzoKLSAgICB1aW50NjRfdCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKKyAg
ICBDYWxsYmFja0lEIHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlu
cyhjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAg
ICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybiBjYWxsYmFja0lEOwogICAgIH0KIApAQCAtMjAxLDE4ICsxOTQsMTggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90
IHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICBDYWxsYmFj
a0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwg
VC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7CiAg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+Ci0gICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBSZWZQdHI8VD4gdGFrZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFja0lEKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAg
IGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKICAgICAgICAgaWYgKCFi
YXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyOSw0ICsyMjIsNDUgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9t
YXA7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlPgorY2xhc3MgU3BlY2lm
aWNDYWxsYmFja01hcCB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNr
VHlwZT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7Cisg
ICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IENhbGxiYWNrVHlwZTo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgUmVmUHRyPENhbGxiYWNrVHlwZT4gdGFrZShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
YXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoYmFzZS5sZWFrUmVmKCktPnRlbXBsYXRlIGFzPENhbGxiYWNrVHlwZT4oKSk7CisgICAgfQor
CisgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX21hcCwgZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9tYXA7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTU3OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgx
MWY4NDJlMGYxYS4uNDA4MmViOWZlZTdlYzRhNmE5Y2Y4MzI3OWNiM2Y3MjRmOTgwMjhmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFn
ZXJDbGllbnRCYXNlKiBjbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQogewotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2Fy
cmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBv
YnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2llT2JzZXJ2ZXJz
LnZhbHVlcygpKSB7CkBAIC05MSwxOCArOTIsMTggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlD
YWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTExNywx
NCArMTE4LDExIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwot
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9hcnJheUNhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE0Nyw2OSArMTQ1LDUxIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAg
YXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25J
RCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBj
YWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENv
b2tpZUFjY2VwCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVk
IHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgog
ICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9u
ZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhl
bTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNp
c3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkp
OwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3Zv
aWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKGNh
bGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGlj
eSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKaW5kZXggODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIyZjU1
NC4uMGFlYTJjNWIwZDkzMzk5NjkzZWMyMjYzNjU4NDU0YTA4NmFjNWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtMTA3LDEz
ICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0g
ICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0
OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxs
YmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0Nh
bGxiYWNrTWFwPFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9s
ZWdhY3lDb29raWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxLi5hNWQ3N2I5NjI5
OTJmMWQzZjZkZWY4NDg3NTFiYTk2MWU1NTY5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDEzICsyMSwxMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewotICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAK
LSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIERpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAg
IERpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENv
b2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0YmZhZTBlNzRhYzkxMTk3MTNkMGY2MmY4Y2Y0NTlmNTcwZDkwMmZlLi43ODk1NjE4NzNl
OGQzN2Q1MTNhZTEwOWU1OWRhODA3ZWZmMjgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0x
NjI4LDcgKzE2MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXVEY6OkZ1bmN0aW9uPAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODU2LDcgKzI4NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg4MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0y
ODkyLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
QEAgLTI5MTgsNyArMjkxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKQEAgLTI5MzAsNyArMjkzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTUyLDcgKzI5NTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zMDA3LDcgKzMwMDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAg
ICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdp
bmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOyAKIH0KQEAgLTMyNDMsNyArMzI0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ewotICAgIEhhc2hTZXQ8dWludDY0X3Q+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOworICAgIEhhc2hTZXQ8
Q2FsbGJhY2tJRD4gbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzID0gV1RGTW92ZShtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFja0lE
IDogbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCkpCiAg
ICAgICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwpAQCAtNTAwMCw3ICs1MDAxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTUwMTEsNyArNTAxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRh
dGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUw
MjIsNyArNTAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW50NjRfCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJp
dG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDMzLDcgKzUwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCB1aQogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywg
dWludDY0X3QgY2FsbGJhY2tJCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNjEsNyArNTA2Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZh
bHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwODEs
NyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwOTIsNyArNTA5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVj
dHMsIGRvdWJsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShw
YWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQgc3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTEwMyw3ICs1
MTA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJl
c3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQo
KSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFu
Z2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjptYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC01MTkyLDcgKzUxOTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtNTk2MSw3ICs1OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwpA
QCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQo
KSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC01OTg3LDcgKzU5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5
OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02MzA3LDcgKzYzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzczLDcgKzYzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlT
dGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pCiAgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApAQCAtNjc0
Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRy
PFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGljb24sIHVpbnQ2NF8KICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAo
Ym9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRfdCBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpIDog
MDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSWRl
bnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NDQ1ZDUzMmRjNTA4
ZWFkMGYwOTNkMzk5ZGMzOWY5NDUyOTMxOWU1Li5jZTJlZjIwZmRlZmE5ODRkNTM2OTkzOGZjYjJi
NDgyZWNhODU3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRX
aW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzMgKzE0NDks
MzMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0
X3QpOwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0
X3QpOwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBi
b29sLCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRf
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1h
Y2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0
X3QpOworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAg
IHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0
LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9h
dCBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZv
aWQgc2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWlu
dDY0X3QpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2Fs
bGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94
eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxh
Z3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWlu
ZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhNzkxZGFiODBkM2NhNjUxN2FmODdhMDBkYjk4MzA0YTk0OGVhZDY4Li43
ZTAyZjRlZWMwOTMyNWZiNjI0NjQ5M2QyYjI0YmI3NTk5MzAyZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1NCwyNyAr
MTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKLSAg
ICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVuc2ln
bmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnRO
YW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgR2VzdHVyZUNh
bGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEF1dG9jb3Jy
ZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywg
U3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcg
YmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmlu
ZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNl
bGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRv
TGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgRHJhd1RvUERGQ2FsbGJh
Y2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
U2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2Vs
ZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERyYXdUb1BERkNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1
bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFBy
aW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9y
KQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBG
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDc4ZjZhOGZiODNlNjFmYjM2OGVkZDAzY2YxOGE0OWVlODEzMTdk
ZDkuLmMxYmE3NjRmMDE1NDI3MTFlMjlhZDVmOWEwNzM0Mjc3NjgyOGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNo
ZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWMKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBv
aW50LCB0b3VjaGVzLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgcmVjdHMs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50NjRfdCBmb250VHJh
aXRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFp
dHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlY3RzLCBm
b250TmFtZSwgZm9udFNpemUsIGZvbnRUcmFpdHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25z
dCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAgICAgCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2lu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0K
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNo
ZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRBc3Npc3RlZE5vZGUoaXNGb3J3YXJkLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHVpbnQzMl90IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBN
ZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5m
bywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fcGFnZUlEKTsKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBkYzhkYTVhYmJhMThjYTNhYjYyZDQy
OWZiMDQ3MTUyZDg0ZWU0YzEyLi4yYTU5MGJmNDg4Y2M3MzhmMmVkYjIwMmY3ZDI0NThiOGE3MzNm
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KQEAgLTI4MSwxMCArMjgxLDEwIEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIElQQ0NhCiAgICAgICAg
ICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgY29udGV4dC0+
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICBf
d2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludElu
Zm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVy
KGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7Ci0gICAgX2V4cGVj
dGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBf
ZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKQEAgLTUyMSwxMSArNTIx
LDExIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50
ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgICAgICAg
ICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ssIHNjYWxlZFByaW50aW5nUmVjdCk7
CiAKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKIAogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRv
SW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRlNzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYz
YzgwZjQyZGU1OTIuLmYxZmJiZGJjNWZmN2E0MjdjNTc4MjU0OWNiYzk4YmZiODAxMjY3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRl
ZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYg
c3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNl
bGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxl
Rm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM3ZWU1ODg1MDdiNjVkODhjOTA3ODQ2MDUzOWMxYTE0ODhi
OWVjNDUuLjZhYjEwMzE5NjRhOWMwYjk1ZWY0Y2FmOTI1NGZmZDE4MjI3MjkxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDkyOSw4IEBACiAJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQ0YxODYz
NzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgKi8sCiAJCQkJQkMzMDY1RjkxMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAv
KiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIg
LyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyog
Q2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIENoaWxk
UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3NTQzYTI5ZDhiZWI4Y2Vh
MzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1Li4xMjEzZDNhODczYmVmYzYzMzFiNWYwZDE1MjgzMDcy
YjA5MjJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGhvc3RuYW1lczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lv
bik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKQEAgLTg3LDE2ICs4NywxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9u
LCB0aW1lKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPENvb2tp
ZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMDUsNyArMTA0LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgdWludDY0X3QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsK
IAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAg
ICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFj
a0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDEyYWU1OTE3NGQ5Yjhi
YTRiNjkwY2JhYWE2NDA3YzdlNmQxYTllYjUuLjg0NGY3YTNiNDZkYTExZmY5NjJiZmZiMTRlOWRj
N2Q5ZWRmZGJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIz
NDUuLjVmZWVmYTcxMmM4MmRmZmMxZDQyNjEyNDlkMGRjYzI3NzdmNTE4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxOSArMjQsMTkgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFdlYkNvb2tpZU1hbmFnZXIgewotICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAotICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
U2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3Vt
ZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
R2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTA4N2E4YTMxMzQ3ZGVjZGQyZWFkMDljMTlh
Mjc4OTBjMWRmYzU4YS4uMWM1NWNhYmUzNjcwMGIxM2VmYmI4NWUzN2RmZWM1NWY0NzFjYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MTAsMTYgKzE4MTAsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5r
SWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9
KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDkwODU3
NTY1ZTUzNjZlNGEwODAxMmQ2NWM3MmQ2OWY4ODU1MjQ2NmIuLmE3ZGEzODIwYzQ0ZDFhOTIyNmRj
ZTY3OTA2MDg0NjYwZWE0OTg1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgog
I2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQg
YmUgcHVyZSB2aXJ0dWFsLgogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCov
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhD
YWxsYmFja0lEKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRy
ZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVTdGF0
ZUlzRnJvemVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIExheWVyVHJl
ZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC0xMTYsNyArMTE3
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1Vw
ZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmly
dHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFja0lEcyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wg
Lyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJ
RD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlh
dGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNzQsNyArMTc1LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3Qg
Y2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBh
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExB
VEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRF
X1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCBiMDc2ZjM0YzFhYzY4YzM5ZDBkODAwZjNl
YWFjNDA2NWYwNTcwZWVlLi42ZjU4ZmU4ZTJhMWY1YTQ5MTcwNzc5NzU0YTViMTdiYWZiMmU4NzM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IERyYXdp
bmdBcmVhIHsKICAgICBBY2NlbGVyYXRlZEFuaW1hdGlvbkRpZFN0YXJ0KHVpbnQ2NF90IGxheWVy
SUQsIFN0cmluZyBrZXksIGRvdWJsZSBzdGFydFRpbWUpCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRp
b25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSkKICAgICAKLSAgICBBZGRUcmFu
c2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBBZGRUcmFuc2FjdGlv
bkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKIAogI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEp
ICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhYzMwZDliYTEwNjQzZDA4Y2Uz
MjI4ZTY3ZjI3OThhY2UxZWQxNTBmLi43YmU0OTNlYTI4ODI1NzJmYzgxMTExOTQ5ZjExNWIwZDA2
MzZjZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBXZWJQYWdlOjplbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzKCkKIHZvaWQgV2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBpZiAobV9hY3Rp
dml0eVN0YXRlICE9IHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKLSAgICAgICAgc2V0QWN0aXZp
dHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBWZWN0b3I8dWludDY0X3Q+
KCkpOworICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwg
ZmFsc2UsIFZlY3RvcjxDYWxsYmFja0lEPigpKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2Rl
ICE9IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgc2V0TGF5ZXJIb3N0aW5n
TW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpOwogfQpAQCAtMTkyMSw3ICsxOTIxLDcg
QEAgdm9pZCBXZWJQYWdlOjpzZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWln
aHQpCiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi12b2lkIFdlYlBhZ2U6OnRha2VTbmFw
c2hvdChJbnRSZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBv
cHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3Qo
SW50UmVjdCBzbmFwc2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9u
cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hv
dE9wdGlvbnMgPSBzdGF0aWNfY2FzdDxTbmFwc2hvdE9wdGlvbnM+KG9wdGlvbnMpOwogICAgIHNu
YXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGU7CkBAIC0yNDIyLDcgKzI0
MjIsNyBAQCB2b2lkIFdlYlBhZ2U6OmtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtl
eWJvYXJkRXZlbnQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZl
RXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWJvYXJkRXZlbnQudHlwZSgpKSwgaGFuZGxl
ZCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIGJvb2wgaXNFbmFibGVkID0gZmFsc2U7CiAgICAgaW50MzJfdCBzdGF0ZSA9IDA7CkBA
IC0yNjI1LDcgKzI2MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgp
CiAgICAgICAgIHZpZXctPndpbGxFbmRMaXZlUmVzaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwg
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2
ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OTAsNyAr
MjY5MCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQog
Ci12b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0
aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKQordm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRl
KEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewog
ICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rp
dml0eVN0YXRlOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0yODQx
LDcgKzI4NDEsNyBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNz
RW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAo
bV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0
IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcg
c2NyaXB0IGV4ZWN1dGlvbi4KQEAgLTI4NjIsMTQgKzI4NjIsMTQgQEAgdm9pZCBXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2Fs
bGJhY2soZGF0YVJlZmVyZW5jZSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gbV9tYWluRnJhbWUtPmNvbnRlbnRz
QXNTdHJpbmcoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxi
YWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQot
dm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIGF1dG8gYnVmZmVyID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0
YShtX3BhZ2UuZ2V0KCkpOwogCkBAIC0yODgwLDcgKzI4ODAsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKIH0KICNlbmRpZgogCi12
b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5n
ID0gcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkp
OwpAQCAtMjg5Niw3ICsyODk2LDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24o
UGFnZSogcGFnZSkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0yOTEy
LDcgKzI5MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRh
dGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZvY3VzZWRPck1haW5GcmFtZSA9IFdlYkZyYW1l
Ojpmcm9tQ29yZUZyYW1lKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCkpOwogICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPnNl
bGVjdGlvbkFzU3RyaW5nKCk7CkBAIC0yOTIxLDcgKzI5MjEsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U291cmNl
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IFN0cmluZyByZXN1bHRTdHJpbmc7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKQpAQCAtMjkzMCw3ICsyOTMwLDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2Fs
bGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTI5NjIsNyArMjk2Miw3IEBAIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgcmVzb3VyCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+ZGF0YSgpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTI5ODEs
NyArMjk4MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMzAwNCw3ICszMDA0
LDcgQEAgdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKQogICAgIG1f
ZHJhd2luZ0FyZWEtPmZvcmNlUmVwYWludCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZvcmNlUmVw
YWludCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQoQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFp
bnRBc3luYyhjYWxsYmFja0lEKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM4Myw3ICs0MzgzLDcg
QEAgdm9pZCBXZWJQYWdlOjplbmRQcmludGluZygpCiAgICAgbV9wcmludENvbnRleHQgPSBudWxs
cHRyOwogfQogCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIFZlY3RvcjxJbnRSZWN0PiByZXN1bHRQYWdlUmVjdHM7CiAgICAgZG91YmxlIHJlc3VsdFRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyA9IDE7CkBAIC00NDEyLDcgKzQ0MTIsNyBAQCB2b2lk
IFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByaQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBh
Z2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1h
Z2VTaXplLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1h
Z2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/
IGZyYW1lLT5jb3JlRnJhbWUoKSA6IDA7CkBAIC00NDYxLDcgKzQ0NjEsNyBAQCB2b2lkIFdlYlBh
Z2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgY29ucwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxs
YmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNU
b1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwog
ICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwg
cGRmUGFnZURhdGEpOwpAQCAtNDgzNyw3ICs0ODM3LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRU
ZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2Vt
ZW4KICAgICAgICAgZnJhbWUuZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKHRleHQpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKIApAQCAtNDg1Miw3ICs0ODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRN
YXJrZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFZGl0aW5nUmFuZ2VDYWxsYmFjayhFZGl0aW5nUmFuZ2UobG9jYXRpb24s
IGxlbmd0aCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJh
bmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC00ODY3
LDcgKzQ4NjcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRf
dCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdGluZ1Jh
bmdlQ2FsbGJhY2soRWRpdGluZ1JhbmdlKGxvY2F0aW9uLCBsZW5ndGgpLCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHVpbnQ2NF90IGluZGV4ID0gbm90
Rm91bmQ7CiAKQEAgLTQ4ODUsNyArNDg4NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0CiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKGluZGV4LCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25z
dCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgSW50UmVjdCByZXN1bHQoSW50UG9pbnQoMCwgMCksIEludFNpemUoMCwg
MCkpOwpAQCAtNTY5Miw3ICs1NjkyLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWREb2N1
bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZyYW0KICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKCFjb21tb25WTSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikgewogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKFN0cmluZygp
LCBjYWxsYmFja0lEKSk7CkBAIC01NzA0LDcgKzU3MDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEJ5
dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgU2FtcGxpbmdQ
cm9maWxlciogc2FtcGxpbmdQcm9maWxlciA9IGNvbW1vblZNKCkuc2FtcGxpbmdQcm9maWxlcigp
OwpAQCAtNTg4NywxMCArNTg4NywxMCBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9j
aygpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVj
aXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdD
YWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50
TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmll
ciwgbmV3Q2FsbGJhY2tJRCk7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2Fs
bGJhY2tJRC50b0ludGVnZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VXNlSWNvbkxvYWRp
bmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGNhMTI5ZmEwZDhiZDlmNjUzNDIyMjE0ZGZl
NWMxZTA2OTE2Nzg2MGUuLmJmNGJjZWFlMmU4MWNhN2VmZTAyNjE5YWUzODM2ZjAyOWNkOTFkMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENs
aWVudC5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkVk
aXRpbmdSYW5nZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIgpA
QCAtMzksNiArNDAsNyBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVk
ZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNTQyLDUw
ICs1NDQsNTAgQEAgcHVibGljOgogICAgIHZvaWQgaW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAKICAgICB2b2lkIGJsdXJBc3Np
c3RlZE5vZGUoKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJh
c2VJc1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0
dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCBi
b29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0
aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2gsIHVp
bnQzMl90IGhhbmRsZVBvc2l0aW9uKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8s
IHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBl
eHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0V29y
ZEJhY2t3YXJkKCk7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZz
ZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0
eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVj
dGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWlu
dDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0
aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0KLSAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250
ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5T2Zmc2V0
KGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVs
YXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24s
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0UG9z
aXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIENhbGxiYWNrSUQpOworCisgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4
dChDYWxsYmFja0lEKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVj
dGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7Ci0g
ICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1
dG9jb3JyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGFwcGx5QXV0b2Nv
cnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rp
b25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEKTsK
KyAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzeW5jQXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxUZXh0LCBib29sJiBjb3JyZWN0aW9uQXBwbGllZCk7Ci0gICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEF1dG9j
b3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGJlZm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwg
U3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRp
b24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYsIEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJik7CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFj
dGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50
KHVpbnQzMl90IGFjdGlvbik7Ci0gICAgdm9pZCBmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBp
c0ZvcndhcmQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0
ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEFzc2lzdGVk
Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWVB
c051bWJlcihkb3VibGUpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1
aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKTsKICAgICBXZWJDb3Jl
OjpJbnRSZWN0IHJlY3RGb3JFbGVtZW50QXRJbnRlcmFjdGlvbkxvY2F0aW9uKCk7CiAgICAgdm9p
ZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNlKCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Db250
ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChD
YWxsYmFja0lEKTsKICAgICB2b2lkIGhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotICAgIHZvaWQgZ2V0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhU
ZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGlu
dDMyX3QsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdp
dGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShJ
T1NfVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50
cyhjb25zdCBWZWN0b3I8V2ViVG91Y2hFdmVudCwgMT4mIHF1ZXVlKTsKICNlbmRpZgogCiAgICAg
dm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYpOwotICAgIHZv
aWQgZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogCiAgICAgU2Vjb25kcyBldmVudFRocm90dGxpbmdE
ZWxheSgpIGNvbnN0OwogCkBAIC02NzMsMTcgKzY3NSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAKICAgICB2b2lkIGluc2Vy
dFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCB1aW50MzJfdCBlZGl0
aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSAodWludDMyX3QpRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRv
OjpFZGl0YWJsZVJvb3QsIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgPSBmYWxzZSk7Ci0g
ICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFz
eW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
Z2V0TWFya2VkUmFuZ2VBc3luYyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGVkUmFu
Z2VBc3luYyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3lu
Yyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25z
dCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxh
Y2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKTsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2
ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKLSAgICB2b2lkIGF0
dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBm
b250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVhZFNlbGVj
dGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFdURjo6U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgYm9v
bCYgcmVzdWx0KTsKQEAgLTc0NiwxOCArNzQ4LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVn
aW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mKTsKICAgICB2b2lk
IGVuZFByaW50aW5nKCk7Ci0gICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIFZlY3RvcjxXZWJDb3JlOjpJbnRS
ZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUmIHRvdGFsU2NhbGVGYWN0b3IpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFn
ZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJ
bXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1
aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSk7
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRE
cmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2Fs
bGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0Fu
ZERyYXdUb1BERjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENh
bGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdB
bmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJik7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdU
SykKLSAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZGlkRmluaXNoUHJp
bnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRGaW5pc2hQcmludE9w
ZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQ2FsbGJhY2tJRCk7CiAjZW5k
aWYKIAogICAgIHZvaWQgYWRkUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpAQCAtOTE1LDggKzkxNyw4IEBAIHB1YmxpYzoKICAg
ICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNv
cmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVy
KFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29yZTo6RnJhbWUmKTsKIAotICAgIHZvaWQgZ2V0Qnl0
ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEJ5dGVjb2Rl
UHJvZmlsZShDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
Q2FsbGJhY2tJRCk7CiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJM
RShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51
bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OwpAQCAtOTY5LDcgKzk3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9j
aygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBk
ZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQp
OworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxs
YmFja0lEIGxvYWRJZGVudGlmaWVyLCBPcHRpb25hbENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0
VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikKQEAgLTEwNTksMTEgKzEwNjEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdvQmFjayh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCB0cnlSZXN0b3Jl
U2Nyb2xsUG9zaXRpb24oKTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQs
IGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQs
IGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSA9
IGZhbHNlKTsKICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHNldEFj
dGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcyk7
Ci0gICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiwgdWludDY0X3QpOworICAg
IHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9v
bCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYg
Y2FsbGJhY2tJRHMpOworICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7CiAKQEAgLTExMDQsMjAg
KzExMDYsMjAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7
CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgZ2V0Q29udGVu
dHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNT
dHJpbmcoQ2FsbGJhY2tJRCk7CiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVu
dHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSNlbmRpZgotICAgIHZvaWQgZ2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFj
a0lEKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIHZvaWQgZm9yY2VSZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdGFr
ZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXpl
IGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFja0lEKTsKKyNlbmRpZgorICAgIHZv
aWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTb3VyY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFdlYkFyY2hp
dmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQg
Zm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOworICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6
OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQz
Ml90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5n
ZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVu
Y2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
ZjhhMTk3NWQ1NDU0MDEyOWE0YTkyZmI3ZmVhN2FkOGI4ZTgxNTY4NC4uYWM5M2YyYjEzMDk1MGZh
NWNjZDQwN2Q5YjE0MDRjOWQzMDMzNTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxLDggKzIxLDggQEAK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7Ci0g
ICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxp
ZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQot
ICAgIFNldEFjdGl2aXR5U3RhdGUodW5zaWduZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0Rp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2FsbGJhY2tJRHMpCisgICAg
U2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwg
V2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBTZXRBY3Rpdml0eVN0YXRlKHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUsIGJvb2wg
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBj
YWxsYmFja0lEcykKICAgICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW0gV2ViS2l0OjpMYXllckhv
c3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9v
bCBkcmF3c0JhY2tncm91bmQpCkBAIC01NCwzNCArNTQsMzQgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlv
bihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hFbmRl
ZEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBCbHVyQXNzaXN0ZWRO
b2RlKCkKLSAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVp
bnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRo
VG91Y2goV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBo
YW5kbGVQb3NpdGlvbikKLSAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2lu
dCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQz
Ml90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoVHdv
VG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAgICAgRXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5
KQogICAgIFNlbGVjdFdvcmRCYWNrd2FyZCgpCi0gICAgTW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGlu
dDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxh
cml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKLSAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9u
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lE
KQotICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFu
dWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNl
bGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJlcXVlc3RE
aWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgTW92ZVNlbGVjdGlvbkJ5
T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFBvc2l0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdy
YW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIE1vdmVTZWxlY3Rp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3Qg
ZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RQb3Np
dGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEJlZ2lu
U2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUmVwbGFjZURpY3RhdGVkVGV4dChTdHJpbmcgb2xk
VGV4dCwgU3RyaW5nIG5ld1RleHQpCiAgICAgUmVwbGFjZVNlbGVjdGVkVGV4dChTdHJpbmcgb2xk
VGV4dCwgU3RyaW5nIG5ld1RleHQpCi0gICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJp
bmcgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEFwcGx5
QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJpbmcg
dGV4dEZvckF1dG9jb3JyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxU
ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTeW5jQXBwbHlBdXRvY29y
cmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wg
YXV0b2NvcnJlY3Rpb25BcHBsaWVkKQotICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQo
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldEF1dG9jb3JyZWN0aW9uQ29udGV4
dCgpIC0+IChTdHJpbmcgYmVmb3JlQ29udGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBz
ZWxlY3RlZFRleHQsIFN0cmluZyBhZnRlckNvbnRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50
NjRfdCBsZW5ndGgpIAogICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFJlcXVl
c3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0IHJlcXVlc3QpCiAgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3Np
dGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBTdG9wSW50ZXJhY3Rpb24oKQogICAg
IFBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQotICAgIEZvY3VzTmV4dEFz
c2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGb2N1
c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFNldEFzc2lzdGVkTm9kZVZhbHVlKFN0cmluZyB2YWx1ZSkKICAgICBTZXRB
c3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5v
ZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rp
b24pCkBAIC05MSwxMyArOTEsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRV
bmRlckxvY2spCiAgICAgQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogICAgIENvbnRlbnRT
aXplQ2F0ZWdvcnlEaWRDaGFuZ2UoU3RyaW5nIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCi0gICAgRXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBF
eGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soU3RyaW5nIG5hbWUsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNr
KGJvb2wgYWxsb3dzKQogICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFsd2F5c1VzZXJT
Y2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0
aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4
dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IEdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51
bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwor
ICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3Ry
aW5nIHRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAg
U2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCkBAIC0xNTYsMTkgKzE1
NiwxOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXN0b3Jl
U2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkKIAogICAgICMgQ2FsbGJhY2tzLgot
ICAgIEdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRDb250
ZW50c0FzU3RyaW5nKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShN
SFRNTCkKLSAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0j
ZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0g
ICAgR2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisjZW5kaWYKKyAgICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25PckNv
bnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2Vs
ZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoU3RyaW5nIHNjcmlwdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRm9y
Y2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCkBAIC0xOTIsNyArMTkyLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVHJ5Q2xvc2UoKQogCiAgICAg
U2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKLSAgICBWYWxpZGF0ZUNvbW1hbmQoU3RyaW5nIG5h
bWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kKFN0cmluZyBuYW1l
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFeGVjdXRlRWRpdENvbW1hbmQo
U3RyaW5nIG5hbWUsIFN0cmluZyBhcmd1bWVudCkKIAogICAgIERpZFJlbW92ZUVkaXRDb21tYW5k
KHVpbnQ2NF90IGNvbW1hbmRJRCkKQEAgLTMyMiwxNiArMzIyLDE2IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgICMgUHJpbnRpbmcuCiAgICAgQmVnaW5QcmludGlu
Zyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKQog
ICAgIEVuZFByaW50aW5nKCkKLSAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIERyYXdSZWN0VG9JbWFnZSh1aW50NjRf
dCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIERyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKKyAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdl
YktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkgLT4gKHVpbnQz
Ml90IHBhZ2VDb3VudCkgRGVsYXllZAorICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludElu
Zm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50
KSBEZWxheWVkCiAjZW5kaWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBEcmF3UGFn
ZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERyYXdQYWdlc0ZvclByaW50aW5n
KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAKICAgICAjIE1lZGlhCkBAIC0z
ODMsMTcgKzM4MywxNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBBY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVu
dCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KQogCiAgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0
ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCBy
ZWdpc3RlclVuZG9Hcm91cCwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLCBib29s
IHN1cHByZXNzU2VsZWN0aW9uVXBkYXRlKQotICAgIEdldE1hcmtlZFJhbmdlQXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJh
Y2tJRCkKLSAgICBDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICBHZXRNYXJrZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIEdldFNlbGVjdGVkUmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBGaXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogICAgIFNldENvbXBvc2l0aW9uQXN5bmMo
U3RyaW5nIHRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJs
aW5lcywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHNlbGVjdGlvblJhbmdlLCBzdHJ1Y3Qg
V2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSkKICAgICBDb25maXJtQ29tcG9z
aXRpb25Bc3luYygpCiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgSW5zZXJ0RGljdGF0
ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBs
YWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKLSAgICBBdHRyaWJ1dGVk
U3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFu
Z2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIEZvbnRBdFNlbGVjdGlvbih1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFu
Z2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKTsKKyAgICBGb250QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICBTZXRNaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3Jl
OjpJbnRTaXplIG1pbmltdW1MYXlvdXRTaXplKQpAQCAtNDEyLDExICs0MTIsMTEgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2Nyb2xsUGlubmluZ0JlaGF2
aW9yKHVpbnQzMl90IHBpbm5pbmcpCiAgICAgU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQogCi0gICAgR2V0Qnl0ZWNvZGVQcm9m
aWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgR2V0Qnl0ZWNvZGVQcm9maWxlKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCi0gICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgCi0gICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6
OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQz
Ml90IG9wdGlvbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgVGFrZVNuYXBzaG90KFdlYkNv
cmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVp
bnQzMl90IG9wdGlvbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbikKICAgICBJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUo
KQpAQCAtNDYyLDcgKzQ2Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rp
b24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2
NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQorICAgIERpZEdldExv
YWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJ
ZGVudGlmaWVyLCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQogICAg
IFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNp
ZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3NzU5MDZlZWU5YThhZGU0ZjQ1OTBjNWIxYjZm
YjBmZDVmMGM5MmI4Li5lNzZmOWI3MWZkYWU5YjJkNDBmM2QyMWZjYmY4ZjMwMWEwZTc5MDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJl
aGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzUmFu
Z2UoKSkgewpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5n
ZUZvckJsb2NrQXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIHJhbmdl
OwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJf
dCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IElu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1l
LCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTcyMiw3ICsxNzIy
LDcgQEAgYm9vbCBXZWJQYWdlOjpzaG91bGRTd2l0Y2hUb0Jsb2NrTW9kZUZvckhhbmRsZShjb25z
dCBJbnRQb2ludCYgaGFuZGxlUG9pbnQsIFNlbGUKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6
dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJf
dCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQs
IHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogICAgIEludFBvaW50IHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZp
ZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKQEAgLTE3ODMsNyArMTc4Myw3IEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBv
aW50LCB1aW50MzJfdCB0b3VjaGVzCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdp
dGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3Rh
dGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3Vj
aGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBmcm9t
UG9zaXRpb24gPSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZS52aWV3KCktPnJv
b3RWaWV3VG9Db250ZW50cyhmcm9tKSk7CkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNl
bGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlv
biwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCB0cnVlLCBVc2VyVHJpZ2dl
cmVkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBv
ZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25C
eU9mZnNldChpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZy
YW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgCkBAIC0xODUwLDcgKzE4NTAsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpbwog
ICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChzdGFydEluZGV4ICsgb2Zmc2V0LCBy
b290LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0
aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlX
aXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKQEAgLTE4ODMsNyAr
MTg4Myw3IEBAIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1Rl
eHQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvCiAgICAgcmV0dXJuIGZpbmRDbG9zZXN0
UGxhaW5UZXh0KCpzZWxlY3Rpb25SYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCAwLCB0YXJnZXRPZmZz
ZXQpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4
dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJf
dCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKQEAgLTE5Mjgs
NyArMTkyOCw3IEBAIFZpc2libGVQb3NpdGlvbiBXZWJQYWdlOjp2aXNpYmxlUG9zaXRpb25JbkZv
Y3VzZWROb2RlRm9yUG9pbnQoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZyYW1lLnZp
c2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0cmFpbmVkUG9pbnQpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
ID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTkzOCw3ICsxOTM4LDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50LCBib29sIGlzSW50ZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRD
YWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVp
bnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNl
bGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlKTsKQEAgLTE5NTEsNyArMTk1MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9z
aXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGNvbnN0IEludFJlY3Qm
IGJsb2NrUmVjdCwgY29uc3QgRnJhbQogICAgIHJldHVybiBibG9ja1JlY3QuaGVpZ2h0KCkgPiBm
cmFtZS52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpICogZmFjdG9yOwog
fQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KGZyYW1lLCBw
b2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIw
MjIsMTMgKzIwMjIsMTMgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5
QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHUKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rp
b24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV9z
ZWxlY3Rpb25BbmNob3IgPSAoc3RhdGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rp
b24pID09IERpcmVjdGlvbkxlZnQpID8gU3RhcnQgOiBFbmQ7CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0
LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50
MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVu
dFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJf
dCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCB2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5z
aWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBtX2luaXRpYWxTZWxlY3Rpb24tPnN0YXJ0
UG9zaXRpb24oKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMjEwOCw3ICsyMTA4LDcgQEAgdm9p
ZCBXZWJQYWdlOjpjb252ZXJ0U2VsZWN0aW9uUmVjdHNUb1Jvb3RWaWV3KEZyYW1lVmlldyogdmll
dywgVmVjdG9yPFNlbGVjdGlvblIKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdERp
Y3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVz
dERpY3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpOwpAQCAtMjE5MCw3ICsyMTkwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBs
YWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdU
ZXh0KQogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2Up
OwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3Ry
aW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0
b2NvcnJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlm
ICghZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKSB7CkBAIC0yMjM4LDE0ICsyMjM4LDE0IEBA
IHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRl
eHRGb3JBdXRvY29ycmVjdGlvbiwgdWluCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhyZWN0c0ZvclRleHQsIGZvbnROYW1lLmdldCgp
LCBmb250U2l6ZSwgZm9udFRyYWl0cywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxUZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYm9vbCBjb3JyZWN0
aW9uQXBwbGllZDsKICAgICBzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmln
aW5hbFRleHQsIGNvcnJlY3Rpb25BcHBsaWVkKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlN0cmluZ0NhbGxiYWNrKGNvcnJlY3Rpb25BcHBsaWVkID8gY29ycmVjdGlvbiA6IFN0
cmluZygpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21t
YW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2U6OmV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25z
dCBTdHJpbmcmIGNvbW1hbmROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBTdHJpbmcoKSk7CiAgICAgaWYgKGNvbW1hbmRO
YW1lID09ICJ0b2dnbGVCb2xkIiB8fCBjb21tYW5kTmFtZSA9PSAidG9nZ2xlSXRhbGljIiB8fCBj
b21tYW5kTmFtZSA9PSAidG9nZ2xlVW5kZXJsaW5lIikKQEAgLTIzOTIsNyArMjM5Miw3IEBAIHN0
YXRpYyB2b2lkIGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQoRnJhbWUmIGZyYW1lLCBTdHJp
bmcmIGNvbnRleHRCZWZvcmUsIFN0CiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgU3RyaW5nIGNvbnRleHRCZWZvcmU7CiAgICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKQEAgLTI2
NzYsNyArMjY3Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RhYmxlRWxlbWVudChO
b2RlKiBzdGFydE5vZGUsIFBhZ2UmIHBhZ2UsIGJvb2wgaXNGb3J3CiAgICAgcmV0dXJuIG5leHRB
c3Npc3RhYmxlRWxlbWVudChzdGFydE5vZGUsIHBhZ2UsIGlzRm9yd2FyZCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0Zv
cndhcmQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBFbGVtZW50KiBuZXh0RWxlbWVu
dCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwg
aXNGb3J3YXJkKTsKICAgICBtX3VzZXJJc0ludGVyYWN0aW5nID0gdHJ1ZTsKQEAgLTMzMDAsNyAr
MzMwMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhj
b25zdCBWZWN0b3I8V2ViVG91Y2hFdmVudCwgMT4mIHF1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCwgUmVmPE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7CiAg
ICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewogICAgICAgICByZXBseS0+c2Vu
ZCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCAwMjBlZWMyZjg3
MDcwZmQ3Yjc5YTc5ZTljMDFkZWMxMmM3NDQ5YjdlLi40Mjc1YWUzMTE1YTZkMjUxODRiYzJiZGRk
ODJkMDRhNTVhOTk5N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5o
IgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBUmVt
b3RlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKQEAgLTY4LDcg
KzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNo
SW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhp
Y3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNr
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNr
SUQpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
cj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
KSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvciopOwpAQCAtODIsNyArODMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRB
c3luYyh1aW50NjRfdCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGZvcmNl
UmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4pIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3
RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGVkVmlld0V4cG9z
ZWRSZWN0OyB9CkBAIC0xMDMsNyArMTA0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZy
YW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZp
dHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBi
b29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+
JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJv
dHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDJkOWM5YTc4NmJj
NWZmZThlMDRhMTU0OTMyNTcyODM1M2JkYzZmYzUuLjljMmU3M2EwNmFmOTIxMTRhYjQxM2ZjM2Qz
YzQwNzY5MDU3MTVmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpA
QCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tp
bmdTdG9yZUZsdXNoZXI6OmZsdXNoKCkKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdU
Rk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywg
Ym9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
KQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUs
IGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBz
dXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2aXNpYmxlLCBsaWtlIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MsIGJvCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV9wZW5kaW5nQ2FsbGJhY2tJRHMuYXBwZW5kKHN0YXRp
Y19jYXN0PFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+
KGNhbGxiYWNrSUQpKTsKICAgICBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGNmODk1NzgxM2ZhNTM4
NGQxNGQ2ODJiOTE0NTk3OGYxODViNTNhZDEuLmYwZTZjNTUwNDFhNTFhMDJhNjdhMTE5MDE3NmZh
MjZlMTg0MWFmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgK
QEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0
YSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJv
b2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBsYXllclRy
ZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSb290Q29tcG9z
aXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CkBAIC04MSw3ICs4
MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1l
Vmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0
aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2Vk
LCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRV
cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpOwogCiAgICAgdm9pZCBhdHRhY2hWaWV3T3Zl
cmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGU7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRl
VGltZXI7Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2Fs
bGJhY2tJRHM7CisgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja0lEczsKICAgICBib29sIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwog
CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDQ4MGQ2ODFmOGY2
YjhjZDZmMWE0MzNhMzAyZjMyYzAzN2RmMjhjMmYuLjFiMzBiNTMxN2U4Y2M4Y2IwZjQ3NGU1ZWI3
M2ZkZWM5YzdhYmE1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmZvcmNlUmVwYWludCgpCiAgICAgW0NBVHJhbnNhY3Rpb24gc3luY2hyb25pemVdOwogfQog
Ci1ib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyh1
aW50NjRfdCBjYWxsYmFja0lEKQorYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChtX2xh
eWVyVHJlZVN0YXRlSXNGcm96ZW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1OSw3ICs0
NTksNyBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVycygp
CiAgICAgfQogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBuZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2Vk
LCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNr
SUQ+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogewogICAgIG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRWZWN0b3IobmV4dEFjdGl2aXR5U3Rh
dGVDaGFuZ2VDYWxsYmFja0lEcyk7CiAgICAgbV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUg
fD0gd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1l
ckZpcmVkKCkKICAgICBpZiAobV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUpCiAgICAgICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUoKSk7CiAKLSAgICBmb3IgKHVpbnQ2NF90IGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisgICAgZm9yIChhdXRvIGNhbGxiYWNrSUQgOiBtX25l
eHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiAKICAg
ICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRl
eCAxZWIwNDM3MjgxMjgwY2NkMjAxNjgyNjdiNWFmZTU0YTk2NWZjZGE4Li4wMTkyZmYxYzE1NzMw
ZWE5NTdjZGRhN2E0NWI4MGIyOTgwZmM2MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zMzQsNyArMzM0LDcgQEAg
dm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IEVkaXRpbmdSYW5nZSYgcmUKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnREaWN0YXRl
ZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIG51bGxwdHIpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIEF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0OwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9p
ZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25z
dCBFZGl0aW5nUmFuZ2UmIGVkaXQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0
dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHJlc3VsdCwgcmFuZ2VUb1Nl
bmQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24odWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9uKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgZm9udE5hbWU7CiAgICAgZG91YmxlIGZvbnRT
aXplID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313774</attachid>
            <date>2017-06-23 23:35:10 -0700</date>
            <delta_ts>2017-06-23 23:55:29 -0700</delta_ts>
            <desc>WPE build fix attempt</desc>
            <filename>bug-173803-20170623233509.patch</filename>
            <type>text/plain</type>
            <size>166699</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
YWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhMzExZDk4YTY0OTdmMDM3ZWY3YTBjYTIwNzg0ZGY3Y2QzNWJjNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1
Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENh
bGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgQ2FsbGJhY2tJ
RCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQoY29uc3QgQ2FsbGJh
Y2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IG1faWQgJiYg
IUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IHJhd0lkICYm
ICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQgZnJvbUludGVnZXIodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJhY2tJRChy
YXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChyYXdJZCk7CisgICAgfQorCisgICAg
c3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJ
RCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVuaXF1ZUNhbGxiYWNrSUQrKyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FsbGJhY2tJRCYg
Y2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
TFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWludDY0X3QgbmV3SUQpCisgICAgICAg
IDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZXdJRCAhPSBIYXNoVHJhaXRz
PHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2Fs
bGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4gZnJpZW5kIGNs
YXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5kIGNsYXNzIE9wdGlvbmFsQ2FsbGJh
Y2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJhY2tJREhhc2g7CisgICAgZnJpZW5k
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD47CisKKyAgICB1aW50NjRfdCBt
X2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGNhbGxiYWNrSUQpIHsgcmV0dXJu
IGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBiKSB7IHJl
dHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6Q2Fs
bGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxiYWNrSUQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpD
YWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OkNhbGxiYWNr
SUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhhc2g7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTcyZTBj
ZTY1ZDYyZDZlMGFmYjYzYmYwZWMyNThkOTQzZGE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBPcHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
ZXhwbGljaXQgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisg
ICAgICAgIDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJ
RCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
SGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCB0b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6Omlz
VmFsaWRDYWxsYmFja0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNr
SUQobV9pZCk7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFj
a0lEKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVp
bnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lk
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsg
SGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDBhYTRmYjE1Njk5NjRiNTM5NDhkYTJiNTMyZDNkNmIzMjJiZmEyOGYuLjJhNDVmYTI2
MGE4ZTUwMzEyNmYxM2Q5MTkyOTA3ZjBlZTM1ZDRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb25faAogI2RlZmluZSBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0y
NjEsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQo
dWludDY0X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklE
OyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICB0
eXBlZGVmIENhbGxiYWNrSUQgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZlY3Rv
cjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tJRHM7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlv
bkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2Fs
bGJhY2tJRHMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBmNjEwODE3NzMyNDUwY2MyYTM4ZTQ2MTljOWE0OWRkZDNhNmYyZTVhLi4wYWI4ZjMy
NTA2ZjVkODc5ODdkODdlNzcxODcyNDQzYWM4NzE1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNh
bGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+CiAgICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAog
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkK
KyAgICAgICAgLCBtX2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAg
ICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7
Ci0gICAgfQotCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwor
ICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTcz
LDEzIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBj
YWxsYmFja01hcCwgQ2FsbGJhY2tCYXNlOjpFcnJvCiAKIGNsYXNzIENhbGxiYWNrTWFwIHsKIHB1
YmxpYzoKLSAgICB1aW50NjRfdCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKKyAg
ICBDYWxsYmFja0lEIHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlu
cyhjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAg
ICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybiBjYWxsYmFja0lEOwogICAgIH0KIApAQCAtMjAxLDE4ICsxOTQsMTggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90
IHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICBDYWxsYmFj
a0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwg
VC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7CiAg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+Ci0gICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBSZWZQdHI8VD4gdGFrZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFja0lEKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAg
IGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKICAgICAgICAgaWYgKCFi
YXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyOSw0ICsyMjIsNDUgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9t
YXA7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlPgorY2xhc3MgU3BlY2lm
aWNDYWxsYmFja01hcCB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNr
VHlwZT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7Cisg
ICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IENhbGxiYWNrVHlwZTo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgUmVmUHRyPENhbGxiYWNrVHlwZT4gdGFrZShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
YXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoYmFzZS5sZWFrUmVmKCktPnRlbXBsYXRlIGFzPENhbGxiYWNrVHlwZT4oKSk7CisgICAgfQor
CisgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX21hcCwgZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9tYXA7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTU3OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgx
MWY4NDJlMGYxYS4uNDA4MmViOWZlZTdlYzRhNmE5Y2Y4MzI3OWNiM2Y3MjRmOTgwMjhmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFn
ZXJDbGllbnRCYXNlKiBjbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQogewotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2Fy
cmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBv
YnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2llT2JzZXJ2ZXJz
LnZhbHVlcygpKSB7CkBAIC05MSwxOCArOTIsMTggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlD
YWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTExNywx
NCArMTE4LDExIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwot
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9hcnJheUNhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE0Nyw2OSArMTQ1LDUxIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAg
YXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25J
RCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBj
YWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENv
b2tpZUFjY2VwCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVk
IHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgog
ICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9u
ZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhl
bTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNp
c3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkp
OwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3Zv
aWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKGNh
bGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGlj
eSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKaW5kZXggODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIyZjU1
NC4uMGFlYTJjNWIwZDkzMzk5NjkzZWMyMjYzNjU4NDU0YTA4NmFjNWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtMTA3LDEz
ICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0g
ICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0
OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxs
YmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0Nh
bGxiYWNrTWFwPFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9s
ZWdhY3lDb29raWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxLi5hNWQ3N2I5NjI5
OTJmMWQzZjZkZWY4NDg3NTFiYTk2MWU1NTY5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDEzICsyMSwxMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewotICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAK
LSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIERpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAg
IERpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENv
b2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0YmZhZTBlNzRhYzkxMTk3MTNkMGY2MmY4Y2Y0NTlmNTcwZDkwMmZlLi43ODk1NjE4NzNl
OGQzN2Q1MTNhZTEwOWU1OWRhODA3ZWZmMjgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0x
NjI4LDcgKzE2MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXVEY6OkZ1bmN0aW9uPAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODU2LDcgKzI4NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg4MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0y
ODkyLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
QEAgLTI5MTgsNyArMjkxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKQEAgLTI5MzAsNyArMjkzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTUyLDcgKzI5NTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zMDA3LDcgKzMwMDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAg
ICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdp
bmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOyAKIH0KQEAgLTMyNDMsNyArMzI0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ewotICAgIEhhc2hTZXQ8dWludDY0X3Q+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOworICAgIEhhc2hTZXQ8
Q2FsbGJhY2tJRD4gbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzID0gV1RGTW92ZShtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFja0lE
IDogbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCkpCiAg
ICAgICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwpAQCAtNTAwMCw3ICs1MDAxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTUwMTEsNyArNTAxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRh
dGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUw
MjIsNyArNTAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW50NjRfCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJp
dG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDMzLDcgKzUwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCB1aQogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywg
dWludDY0X3QgY2FsbGJhY2tJCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNjEsNyArNTA2Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZh
bHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwODEs
NyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwOTIsNyArNTA5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVj
dHMsIGRvdWJsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShw
YWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQgc3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTEwMyw3ICs1
MTA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJl
c3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQo
KSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFu
Z2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjptYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC01MTkyLDcgKzUxOTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtNTk2MSw3ICs1OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwpA
QCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQo
KSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC01OTg3LDcgKzU5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5
OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02MzA3LDcgKzYzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzczLDcgKzYzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlT
dGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pCiAgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApAQCAtNjc0
Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRy
PFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGljb24sIHVpbnQ2NF8KICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAo
Ym9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRfdCBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpIDog
MDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSWRl
bnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NDQ1ZDUzMmRjNTA4
ZWFkMGYwOTNkMzk5ZGMzOWY5NDUyOTMxOWU1Li5jZTJlZjIwZmRlZmE5ODRkNTM2OTkzOGZjYjJi
NDgyZWNhODU3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRX
aW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzMgKzE0NDks
MzMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0
X3QpOwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0
X3QpOwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBi
b29sLCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRf
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1h
Y2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0
X3QpOworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAg
IHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0
LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9h
dCBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZv
aWQgc2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWlu
dDY0X3QpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2Fs
bGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94
eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxh
Z3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWlu
ZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhNzkxZGFiODBkM2NhNjUxN2FmODdhMDBkYjk4MzA0YTk0OGVhZDY4Li43
ZTAyZjRlZWMwOTMyNWZiNjI0NjQ5M2QyYjI0YmI3NTk5MzAyZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1NCwyNyAr
MTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKLSAg
ICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVuc2ln
bmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnRO
YW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgR2VzdHVyZUNh
bGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEF1dG9jb3Jy
ZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywg
U3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcg
YmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmlu
ZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNl
bGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRv
TGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgRHJhd1RvUERGQ2FsbGJh
Y2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
U2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2Vs
ZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERyYXdUb1BERkNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1
bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFBy
aW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9y
KQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBG
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDc4ZjZhOGZiODNlNjFmYjM2OGVkZDAzY2YxOGE0OWVlODEzMTdk
ZDkuLmMxYmE3NjRmMDE1NDI3MTFlMjlhZDVmOWEwNzM0Mjc3NjgyOGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNo
ZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWMKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBv
aW50LCB0b3VjaGVzLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgcmVjdHMs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50NjRfdCBmb250VHJh
aXRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFp
dHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlY3RzLCBm
b250TmFtZSwgZm9udFNpemUsIGZvbnRUcmFpdHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25z
dCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAgICAgCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2lu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0K
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNo
ZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRBc3Npc3RlZE5vZGUoaXNGb3J3YXJkLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHVpbnQzMl90IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBN
ZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5m
bywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fcGFnZUlEKTsKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBkYzhkYTVhYmJhMThjYTNhYjYyZDQy
OWZiMDQ3MTUyZDg0ZWU0YzEyLi4yYTU5MGJmNDg4Y2M3MzhmMmVkYjIwMmY3ZDI0NThiOGE3MzNm
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KQEAgLTI4MSwxMCArMjgxLDEwIEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIElQQ0NhCiAgICAgICAg
ICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgY29udGV4dC0+
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICBf
d2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludElu
Zm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVy
KGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7Ci0gICAgX2V4cGVj
dGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBf
ZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKQEAgLTUyMSwxMSArNTIx
LDExIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50
ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgICAgICAg
ICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ssIHNjYWxlZFByaW50aW5nUmVjdCk7
CiAKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKIAogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRv
SW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRlNzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYz
YzgwZjQyZGU1OTIuLmYxZmJiZGJjNWZmN2E0MjdjNTc4MjU0OWNiYzk4YmZiODAxMjY3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRl
ZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYg
c3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNl
bGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxl
Rm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM3ZWU1ODg1MDdiNjVkODhjOTA3ODQ2MDUzOWMxYTE0ODhi
OWVjNDUuLjZhYjEwMzE5NjRhOWMwYjk1ZWY0Y2FmOTI1NGZmZDE4MjI3MjkxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDkyOSw4IEBACiAJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQ0YxODYz
NzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgKi8sCiAJCQkJQkMzMDY1RjkxMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAv
KiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIg
LyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyog
Q2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIENoaWxk
UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3NTQzYTI5ZDhiZWI4Y2Vh
MzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1Li4xMjEzZDNhODczYmVmYzYzMzFiNWYwZDE1MjgzMDcy
YjA5MjJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGhvc3RuYW1lczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lv
bik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKQEAgLTg3LDE2ICs4NywxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9u
LCB0aW1lKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPENvb2tp
ZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMDUsNyArMTA0LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgdWludDY0X3QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsK
IAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAg
ICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFj
a0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDEyYWU1OTE3NGQ5Yjhi
YTRiNjkwY2JhYWE2NDA3YzdlNmQxYTllYjUuLjg0NGY3YTNiNDZkYTExZmY5NjJiZmZiMTRlOWRj
N2Q5ZWRmZGJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIz
NDUuLjVmZWVmYTcxMmM4MmRmZmMxZDQyNjEyNDlkMGRjYzI3NzdmNTE4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxOSArMjQsMTkgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFdlYkNvb2tpZU1hbmFnZXIgewotICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAotICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
U2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3Vt
ZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
R2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTA4N2E4YTMxMzQ3ZGVjZGQyZWFkMDljMTlh
Mjc4OTBjMWRmYzU4YS4uMWM1NWNhYmUzNjcwMGIxM2VmYmI4NWUzN2RmZWM1NWY0NzFjYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MTAsMTYgKzE4MTAsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5r
SWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9
KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cAppbmRleCA3MjkwYWZmNmI2Yjg2ZjZlZjUxNmRjMTk3NGIwYmY2YWJlMzZjNzFkLi4yZTVkNTgw
NmE4MWIyZWZhMTkzNTRhNDc1M2NiOWM1YWQ3OTMxOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE2Nyw3
ICsxNjcsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1l
KCkKICAgICAgICAgLy8gYXJlbid0IG5lZWRlZC4gSWYgdGhleSBhcmUsIHRoZSBjYWxsYmFjayB3
aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhpcyBmdW5jdGlvbgogICAgICAgICAvLyBpcyBjYWxsZWQg
YWZ0ZXIgdGhlIG5leHQgdXBkYXRlLgogICAgICAgICBpZiAoIW1fZm9yY2VSZXBhaW50QXN5bmMu
bmVlZHNGcmVzaEZsdXNoKSB7Ci0gICAgICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2sobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lE
KSk7CisgICAgICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpW
b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIobV9mb3JjZVJlcGFpbnRBc3luYy5j
YWxsYmFja0lEKSkpOwogICAgICAgICAgICAgbV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgfTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hG
bHVzaCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAppbmRleCA5MDg1NzU2NWU1MzY2ZTRhMDgwMTJkNjVjNzJkNjlmODg1NTI0NjZi
Li5hN2RhMzgyMGM0NGQxYTkyMjZkY2U2NzkwNjA4NDY2MGVhNDk4NTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KICAgICB2aXJ0dWFsIHZvaWQg
cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGZvcmNlUmVwYWludCgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1
aW50NjRfdCAvKmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3QgeyByZXR1
cm4gMDsgfQpAQCAtMTE2LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oV1RGOjpGdW5jdGlvbjx2
b2lkICgpPiYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywg
Y29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFy
a0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtMTc0LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rp
b25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2Fs
bGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggYjA3
NmYzNGMxYWM2OGMzOWQwZDgwMGYzZWFhYzQwNjVmMDU3MGVlZS4uNmY1OGZlOGUyYTFmNWE0OTE3
MDc3OTc1NGE1YjE3YmFmYjJlODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpAQCAtMzcsNyArMzcs
NyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSB7CiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25E
aWRTdGFydCh1aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5LCBkb3VibGUgc3RhcnRUaW1lKQog
ICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBr
ZXkpCiAgICAgCi0gICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JN
KEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggYWMzMGQ5YmExMDY0M2QwOGNlMzIyOGU2N2YyNzk4YWNlMWVkMTUwZi4uN2JlNDkzZWEyODgy
NTcyZmM4MTExMTk0OWYxMTViMGQwNjM2Y2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgV2ViUGFn
ZTo6ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiB2b2lkIFdlYlBhZ2U6
OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7CiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3Rh
dGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBm
YWxzZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKKyAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJh
bWV0ZXJzLmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBWZWN0b3I8Q2FsbGJhY2tJRD4oKSk7CiAgICAg
aWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCiAg
ICAgICAgIHNldExheWVySG9zdGluZ01vZGUocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKTsK
IH0KQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9vdGVyQmFubmVySGVp
Z2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAot
dm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hvdFJlY3QsIEludFNpemUg
Yml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qgc25hcHNob3RSZWN0LCBJbnRTaXplIGJpdG1h
cFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBT
bmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRp
b25zPihvcHRpb25zKTsKICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zU2hh
cmVhYmxlOwpAQCAtMjQyMiw3ICsyNDIyLDcgQEAgdm9pZCBXZWJQYWdlOjprZXlFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihrZXlib2Fy
ZEV2ZW50LnR5cGUoKSksIGhhbmRsZWQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBib29sIGlzRW5hYmxlZCA9IGZhbHNlOwogICAg
IGludDMyX3Qgc3RhdGUgPSAwOwpAQCAtMjYyNSw3ICsyNjI1LDcgQEAgdm9pZCBXZWJQYWdlOjp2
aWV3V2lsbEVuZExpdmVSZXNpemUoKQogICAgICAgICB2aWV3LT53aWxsRW5kTGl2ZVJlc2l6ZSgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wg
aXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCB1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBl
dmVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CkBAIC0yNjkwLDcgKzI2OTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlE
aWRDaGFuZ2UoKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFj
dGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykKK3ZvaWQgV2Vi
UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRl
LCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNr
SUQ+JiBjYWxsYmFja0lEcykKIHsKICAgICBBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0g
bV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBh
Y3Rpdml0eVN0YXRlOwpAQCAtMjg0MSw3ICsyODQxLDcgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFn
ZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9k
ZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXli
b2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1Rv
TGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hl
biBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAg
ICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCkBAIC0yODYyLDE0ICsyODYy
LDE0IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGhhZEV4Y2VwdGlvbiwg
ZGV0YWlscywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNT
dHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0
cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9
IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0K
IAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0
YSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxE
YXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKIApAQCAtMjg4MCw3ICsyODgw
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1
bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKQEAgLTI4OTYsNyArMjg5Niw3IEBAIHN0YXRpYyBGcmFt
ZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBkYXRhOwpAQCAtMjkxMiw3ICsyOTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmb2N1c2Vk
T3JNYWluRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0g
Zm9jdXNlZE9yTWFpbkZyYW1lLT5zZWxlY3Rpb25Bc1N0cmluZygpOwpAQCAtMjkyMSw3ICsyOTIx
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0Nh
bGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6Omdl
dFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nOwogICAgIGlmIChXZWJG
cmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkK
QEAgLTI5MzAsNyArMjkzMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFt
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0yOTYy
LDcgKzI5NjIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogICAgIHJldHVybiAmc3VicmVz
b3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1l
KGZyYW1lSUQpKSB7CkBAIC0yOTgxLDcgKzI5ODEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
VQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZl
cmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
ZGF0YTsKQEAgLTMwMDQsNyArMzAwNCw3IEBAIHZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0
aG91dENhbGxiYWNrKCkKICAgICBtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnQoKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Zm9yY2VSZXBhaW50KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAobV9k
cmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJRCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQzODMsNyArNDM4Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZW5kUHJpbnRpbmcoKQogICAg
IG1fcHJpbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFn
ZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVzdWx0UGFnZVJlY3Rz
OwogICAgIGRvdWJsZSByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcgPSAxOwpAQCAt
NDQxMiw3ICs0NDEyLDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0lt
cGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmkKIH0KIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBpbWFnZVNpemUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwpAQCAtNDQ2MSw3
ICs0NDYxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnMKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkltYWdlQ2FsbGJhY2soaGFuZGxlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBj
b3VudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJldGFpblB0cjxDRk11dGFibGVE
YXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJp
bnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKQEAgLTQ4MzcsNyArNDgzNyw3IEBA
IHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiByZXBsYWNlbWVuCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbmZpcm1D
b21wb3NpdGlvbih0ZXh0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlQXN5bmMo
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTQ4NTIsNyArNDg1Miw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lE
KQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdGluZ1JhbmdlQ2FsbGJhY2so
RWRpdGluZ1JhbmdlKGxvY2F0aW9uLCBsZW5ndGgpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIApAQCAtNDg2Nyw3ICs0ODY3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxl
Y3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkVkaXRpbmdSYW5nZUNhbGxiYWNrKEVkaXRpbmdSYW5nZShsb2NhdGlvbiwg
bGVuZ3RoKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4
Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICB1aW50NjRfdCBpbmRleCA9IG5vdEZvdW5kOwogCkBAIC00ODg1LDcgKzQ4ODUsNyBAQCB2b2lk
IFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHVpbnQ2NAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5z
aWduZWRDYWxsYmFjayhpbmRleCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5n
UmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEludFJlY3QgcmVzdWx0KEludFBv
aW50KDAsIDApLCBJbnRTaXplKDAsIDApKTsKQEAgLTU2OTIsNyArNTY5Miw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2FkZXImIGRvY3Vt
ZW50TG9hZGVyLCBGcmFtCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJv
ZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2Zp
bGUoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmICghY29tbW9uVk0oKS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
dHJpbmdDYWxsYmFjayhTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwpAQCAtNTcwNCw3ICs1NzA0LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdCwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRw
dXQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxl
ck91dHB1dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BS
T0ZJTEVSKQogICAgIFNhbXBsaW5nUHJvZmlsZXIqIHNhbXBsaW5nUHJvZmlsZXIgPSBjb21tb25W
TSgpLnNhbXBsaW5nUHJvZmlsZXIoKTsKQEAgLTU4ODcsMTAgKzU4ODcsMTAgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBP
cHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byogZG9jdW1l
bnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihk
ZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSUQpOworICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZp
ZXIudG9JbnRlZ2VyKCksIG5ld0NhbGxiYWNrSUQudG9JbnRlZ2VyKCkpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjYTEy
OWZhMGQ4YmQ5ZjY1MzQyMjIxNGRmZTVjMWUwNjkxNjc4NjBlLi5iZjRiY2VhZTJlODFjYTdlZmUw
MjYxOWFlMzgzNmYwMjljZDkxZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1
bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNhbGxi
YWNrSUQuaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFn
ZUZ1bGxTY3JlZW5DbGllbnQuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
IlBsdWdpbi5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKQEAgLTU0Miw1MCArNTQ0LDUwIEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3Bl
Y3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwogCiAgICAgdm9pZCBibHVyQXNzaXN0ZWROb2RlKCk7Ci0gICAgdm9pZCBzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQz
Ml90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0
YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCB1cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3NpdGlvbik7Ci0gICAgdm9pZCBz
ZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2Vz
dHVyZVN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhUd29U
b3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5
KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2FyZCgpOwotICAgIHZvaWQgbW92ZVNlbGVjdGlv
bkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51
bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0Qm91
bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rp
b24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBiZWdpblNlbGVjdGlvbkluRGly
ZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotCi0gICAgdm9p
ZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0
eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lE
KTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxi
YWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3Vu
ZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKworICAgIHZvaWQg
cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXBsYWNlRGlj
dGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsK
ICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25z
dCBTdHJpbmcmIG5ld1RleHQpOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShj
b25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29y
cmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0
IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgYm9vbCYgY29ycmVjdGlvbkFwcGxp
ZWQpOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBiZWZvcmVUZXh0
LCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGFmdGVy
VGV4dCwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qm
LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZvaWQgcmVxdWVzdFBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsK
ICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHN0b3BJbnRlcmFjdGlvbigpOwogICAgIHZvaWQg
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOwotICAgIHZvaWQgZm9jdXNO
ZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91YmxlKTsKICAgICB2b2lkIHNldEFzc2lz
dGVkTm9kZVNlbGVjdGVkSW5kZXgodWludDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNl
bGVjdGlvbik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0Rm9yRWxlbWVudEF0SW50ZXJhY3Rp
b25Mb2NhdGlvbigpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uQXBwZWFyYW5jZSgpOwotICAg
IHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IGdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5n
ZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElE
KTsKLSAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVp
bnQzMl90LCBpbnQzMl90LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlY3Rz
QXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90LCBjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0
aW9uT2Zmc2V0KHVpbnQzMl90LCBpbnQzMl90LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90LCBjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0lEKTsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2b2lkIGRpc3BhdGNo
QXN5bmNocm9ub3VzVG91Y2hFdmVudHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBx
dWV1ZSk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhj
b25zdCBTdHJpbmcmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGV4ZWN1dGVFZGl0
Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKIAogICAgIFNl
Y29uZHMgZXZlbnRUaHJvdHRsaW5nRGVsYXkoKSBjb25zdDsKIApAQCAtNjczLDE3ICs2NzUsMTcg
QEAgcHVibGljOgogICAgIHZvaWQgc2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRf
dCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5w
dXQpOwogCiAgICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAg
PSBmYWxzZSwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gKHVpbnQzMl90KUVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290LCBib29sIHN1cHByZXNzU2VsZWN0
aW9uVXBkYXRlID0gZmFsc2UpOwotICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRf
dCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKKyAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBjaGFy
YWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRp
dGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbkFzeW5jKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJs
aW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1JhbmdlJiBzZWxlY3Rpb25SYW5nZSwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKTsKICAgICB2b2lkIGNvbmZpcm1Db21w
b3NpdGlvbkFzeW5jKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0
YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVw
bGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
PiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAg
PSBmYWxzZSk7Ci0gICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGF0dHJpYnV0
ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKENhbGxiYWNrSUQpOwogI2VuZGlm
CiAKICAgICB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBXVEY6OlN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGJvb2wmIHJlc3VsdCk7CkBAIC03NDYsMTggKzc0OCwxOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwotICAgIHZvaWQgY29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlJiB0b3RhbFNjYWxl
RmFjdG9yKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVE
YXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJik7CisgICAg
dm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYpOwogI2Vu
ZGlmCiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50
aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZFJlc291cmNlUmVxdWVzdCh1
bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTkxNSw4
ICs5MTcsOCBAQCBwdWJsaWM6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRh
dGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1l
Jik7CiAKLSAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRT
YW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQpOwogICAgIAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAg
dm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKQEAgLTk2OSw3ICs5NzEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1
aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgT3B0aW9uYWxDYWxs
YmFja0lEKTsKICAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wpOwogCiAjaWYg
RU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0xMDU5LDExICsxMDYxLDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBnb0JhY2sodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAg
dm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3Qp
OwogICAgIHZvaWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgdm9pZCBzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93
KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CiAgICAgdm9pZCB2aXNpYmlsaXR5RGlkQ2hh
bmdlKCk7Ci0gICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgY2FsbGJhY2tJRHMpOwotICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25z
dCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKTsKKyAgICB2b2lkIHZhbGlkYXRlQ29t
bWFuZChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxl
KGJvb2wpOwogCkBAIC0xMTA0LDIwICsxMTA2LDIwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aWV3
V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7
CiAKLSAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShNSFRN
TCkKLSAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0jZW5kaWYKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJv
bUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U291cmNl
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90
UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJh
Y2tJRCk7CisjZW5kaWYKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKKyAgICB2b2lk
IHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50
U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIAogICAgIHZv
aWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAg
IHZvaWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IGY4YTE5NzVkNTQ1NDAxMjlhNGE5MmZiN2ZlYTdhZDhiOGU4
MTU2ODQuLmFjOTNmMmIxMzA5NTBmYTVjY2Q0MDdkOWIxNDA0YzlkMzAzMzUzM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0yMSw4ICsyMSw4IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewotICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJv
b2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZXRBY3Rpdml0eVN0YXRlKHVuc2lnbmVkIGFjdGl2
aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBWZWN0b3I8dWludDY0
X3Q+IGNhbGxiYWNrSURzKQorICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wg
aXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNpZ25l
ZCBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgVmVjdG9y
PFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRHMpCiAgICAgU2V0TGF5ZXJIb3N0aW5nTW9k
ZShlbnVtIFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogCiAgICAg
U2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQpAQCAtNTQsMzQgKzU0LDM0
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluc3BlY3Rvck5v
ZGVTZWFyY2hNb3ZlZFRvUG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBJ
bnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9p
bnQpCiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCi0gICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJl
VHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhUb3Vj
aGVzKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlU2VsZWN0
aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMs
IGJvb2wgYmFzZUlzU3RhcnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVw
ZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50
MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pCi0gICAgU2VsZWN0V2l0aFR3b1Rv
dWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgU2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2Vi
Q29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEV4dGVuZFNlbGVjdGlv
bih1aW50MzJfdCBncmFudWxhcml0eSkKICAgICBTZWxlY3RXb3JkQmFja3dhcmQoKQotICAgIE1v
dmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rp
b24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICBSZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIE1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQo
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBv
aW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVj
dGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBV
cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJlcXVlc3REaWN0
YXRpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJlcGxhY2VE
aWN0YXRlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VT
ZWxlY3RlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQotICAgIFJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLSAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBT
dHJpbmcgb3JpZ2luYWxUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJlcXVlc3RBdXRv
Y29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVj
dGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgU3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBv
cmlnaW5hbFRleHQpIC0+IChib29sIGF1dG9jb3JyZWN0aW9uQXBwbGllZCkKLSAgICBSZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdEF1
dG9jb3JyZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBH
ZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSAtPiAoU3RyaW5nIGJlZm9yZUNvbnRleHQsIFN0cmlu
ZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJDb250ZXh0LCB1
aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKSAKICAgICBHZXRQb3NpdGlvbkluZm9y
bWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVl
c3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBp
bmZvcm1hdGlvbikKICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KQogICAgIFN0YXJ0SW50ZXJh
Y3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAg
U3RvcEludGVyYWN0aW9uKCkKICAgICBQZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFj
dGlvbikKLSAgICBGb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgRm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1ZShT
dHJpbmcgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUgdmFs
dWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9v
bCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKQpAQCAtOTEsMTMgKzkxLDEzIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogICAgIEFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKICAgICBDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKFN0cmluZyBjb250ZW50
U2l6ZUNhdGVnb3J5KQotICAgIEV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhTdHJpbmcg
bmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2
NF90IGNhbGxiYWNrSUQpCisgICAgRXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmlu
ZyBuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25D
b250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEFsbG93c01lZGlh
RG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAgICBIYW5kbGVUd29GaW5nZXJU
YXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAg
ICAgU2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCi0gICAgR2V0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJp
dHksIGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBHZXRSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlv
bk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRl
eHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCk7CiAjZW5kaWYKIAogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250
cm9sbGVkKQpAQCAtMTU2LDE5ICsxNTYsMTkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgUmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgp
CiAKICAgICAjIENhbGxiYWNrcy4KLSAgICBHZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgR2V0Q29udGVudHNBc01IVE1MRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQotI2VuZGlmCi0gICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMLCB1aW50
NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoU3RyaW5nIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBGb3JjZVJlcGFp
bnQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2VuZGlmCisgICAgR2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBy
ZXNvdXJjZVVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0V2ViQXJjaGl2ZU9mRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZyBzY3JpcHQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgRGljdGlvbmFyeSBzdXBwb3J0LgpA
QCAtMTkyLDcgKzE5Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFRyeUNsb3NlKCkKIAogICAgIFNldEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCi0gICAgVmFs
aWRhdGVDb21tYW5kKFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFZhbGlk
YXRlQ29tbWFuZChTdHJpbmcgbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgRXhlY3V0ZUVkaXRDb21tYW5kKFN0cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQpCiAKICAg
ICBEaWRSZW1vdmVFZGl0Q29tbWFuZCh1aW50NjRfdCBjb21tYW5kSUQpCkBAIC0zMjIsMTYgKzMy
MiwxNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIFByaW50
aW5nLgogICAgIEJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbykKICAgICBFbmRQcmludGluZygpCi0gICAgQ29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBDb21wdXRlUGFnZXNGb3JQcmludGlu
Zyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBE
cmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZv
IHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdl
U2l6ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEcmF3UGFnZXNUb1BERih1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRHJhd1JlY3RUb0lt
YWdlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8s
IFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIERyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2
NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90
IGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291bnQpIERlbGF5ZWQKKyAgICBDb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkg
LT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgRGVsYXllZAogI2VuZGlmCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCi0gICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBEcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQ
cmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRp
ZgogCiAgICAgIyBNZWRpYQpAQCAtMzgzLDE3ICszODMsMTcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVy
LCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkKIAogICAgIElu
c2VydFRleHRBc3luYyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJl
cGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAsIHVpbnQzMl90IGVkaXRpbmdS
YW5nZUlzUmVsYXRpdmVUbywgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSkKLSAgICBHZXRN
YXJrZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0ZWRSYW5n
ZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQ2hhcmFjdGVySW5kZXhGb3JQb2ludEFz
eW5jKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBG
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5n
ZSByYW5nZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgR2V0TWFya2VkUmFuZ2VBc3luYyhX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmMo
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQ2hhcmFjdGVySW5kZXhGb3JQb2lu
dEFzeW5jKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCk7CisgICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0
OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICAg
ICBTZXRDb21wb3NpdGlvbkFzeW5jKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBz
ZWxlY3Rpb25SYW5nZSwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFu
Z2UpCiAgICAgQ29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIEluc2VydERpY3RhdGVkVGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgVmVjdG9yPFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRv
R3JvdXApCi0gICAgQXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3Ry
dWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICBGb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgQXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jhbmdl
IHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CisgICAgRm9udEF0U2VsZWN0
aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgU2V0TWlu
aW11bUxheW91dFNpemUoV2ViQ29yZTo6SW50U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZSkKQEAgLTQx
MiwxMSArNDEyLDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQogICAgIFNldFNjcm9s
bGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkK
IAotICAgIEdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldEJ5
dGVjb2RlUHJvZmlsZShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAotICAgIEdldFNh
bXBsaW5nUHJvZmlsZXJPdXRwdXQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIAotICAg
IFRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50
U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
ICAgIFRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6
SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgUGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pCiAgICAgSW1t
ZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCkKQEAgLTQ2Miw3ICs0NjIsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24odWludDMyX3QgZGlyZWN0aW9uKQogCi0gICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2Fs
bGJhY2tJRCkKKyAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdl
YktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgV2ViS2l0OjpPcHRpb25hbENhbGxiYWNr
SUQgbmV3Q2FsbGJhY2tJRCkKICAgICBTZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUlj
b25Mb2FkaW5nQ2xpZW50KQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzc1OTA2
ZWVlOWE4YWRlNGY0NTkwYzViMWI2ZmIwZmQ1ZjBjOTJiOC4uZTc2ZjliNzFmZGFlOWIyZDQwZjNk
MjFmY2JmOGYzMDFhMGU3OTAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgV2Vi
UGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rp
b25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlv
bkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsKQEAgLTEwNDYsNyArMTA0Niw3IEBAIFJlZlB0
cjxSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JCbG9ja0F0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBv
aW50KQogICAgIHJldHVybiByYW5nZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxl
Y3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
YXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9j
dXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlKTsKQEAgLTE3MjIsNyArMTcyMiw3IEBAIGJvb2wgV2ViUGFnZTo6c2hvdWxkU3dpdGNoVG9C
bG9ja01vZGVGb3JIYW5kbGUoY29uc3QgSW50UG9pbnQmIGhhbmRsZVBvaW50LCBTZWxlCiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IElu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBJbnRQb2ludCBwb2lu
dEluRG9jdW1lbnQgPSBmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhwb2ludCk7CkBA
IC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3Vj
aGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcwogICAgIH0KIH0KIAot
dm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlw
ZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAg
ICBWaXNpYmxlUG9zaXRpb24gZnJvbVBvc2l0aW9uID0gZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnQoZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29udGVudHMoZnJvbSkpOwpAQCAtMTgyNCw3
ICsxODI0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXb3JkQmFja3dhcmQoKQogICAgICAgICBm
cmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHN0YXJ0UG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZmaW5p
dHkoKSwgdHJ1ZSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bW92ZVNlbGVj
dGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIApAQCAtMTg1MCw3ICsxODUwLDcgQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQo
Y29uc3QgVmlzaWJsZVBvc2l0aW8KICAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgo
c3RhcnRJbmRleCArIG9mZnNldCwgcm9vdC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJp
dHksIGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpn
ZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxh
cml0eSwgaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFt
ZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCk7CkBAIC0xODgzLDcgKzE4ODMsNyBAQCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5n
ZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpbwog
ICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIG1h
dGNoVGV4dCwgMCwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlv
bk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIHVpbnQzMl90IGxlbmd0aCA9IHRl
eHQubGVuZ3RoKCk7CkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBWaXNpYmxlUG9zaXRpb24gV2ViUGFn
ZTo6dmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IEZyYW1lJiBmcmFt
ZQogICAgIHJldHVybiBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdHJhaW5lZFBv
aW50KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZp
c2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQ
b2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTE5
MzgsNyArMTkzOCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVyCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0
aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVp
bnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0xOTUxLDcgKzE5NTEsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVj
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJf
dCBkaXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIApA
QCAtMTk5NSw3ICsxOTk1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHJlY3RJc1Rvb0JpZ0ZvclNl
bGVjdGlvbihjb25zdCBJbnRSZWN0JiBibG9ja1JlY3QsIGNvbnN0IEZyYW0KICAgICByZXR1cm4g
YmxvY2tSZWN0LmhlaWdodCgpID4gZnJhbWUudmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3Qo
KS5oZWlnaHQoKSAqIGZhY3RvcjsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdy
YW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90
IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSByYW5nZUZvckdyYW51
bGFyaXR5QXRQb2ludChmcmFtZSwgcG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSk7CkBAIC0yMDIyLDEzICsyMDIyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2Vs
ZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50LCB1CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2Fs
bGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24o
dWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpi
ZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIG1fc2VsZWN0aW9uQW5jaG9yID0gKHN0YXRpY19jYXN0PFNlbGVj
dGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSA9PSBEaXJlY3Rpb25MZWZ0KSA/IFN0YXJ0IDogRW5k
OwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhtX3Nl
bGVjdGlvbkFuY2hvciA9PSBTdGFydCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZv
clBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAt
MjA1Nyw3ICsyMDU3LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50
UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soc2VsZWN0aW9uU3RhcnQgPT0gbV9p
bml0aWFsU2VsZWN0aW9uLT5zdGFydFBvc2l0aW9uKCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVG
b3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAg
LTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgV2ViUGFnZTo6Y29udmVydFNlbGVjdGlvblJlY3RzVG9S
b290VmlldyhGcmFtZVZpZXcqIHZpZXcsIFZlY3RvcjxTZWxlY3Rpb25SCiAgICAgfQogfQogCi12
b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0g
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKTsKQEAgLTIxOTAsNyArMjE5MCw3
IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRl
eHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVT
ZWxlY3Rpb25DaGFuZ2VzKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNv
bnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewpA
QCAtMjIzOCwxNCArMjIzOCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlv
bkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbgogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2socmVjdHNG
b3JUZXh0LCBmb250TmFtZS5nZXQoKSwgZm9udFNpemUsIGZvbnRUcmFpdHMsIGNhbGxiYWNrSUQp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGJvb2wgY29ycmVjdGlvbkFwcGxpZWQ7CiAgICAgc3luY0FwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjb3JyZWN0aW9uQXBwbGllZCk7CiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhjb3JyZWN0aW9uQXBw
bGllZCA/IGNvcnJlY3Rpb24gOiBTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENv
bW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIGV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgU3RyaW5n
KCkpOwogICAgIGlmIChjb21tYW5kTmFtZSA9PSAidG9nZ2xlQm9sZCIgfHwgY29tbWFuZE5hbWUg
PT0gInRvZ2dsZUl0YWxpYyIgfHwgY29tbWFuZE5hbWUgPT0gInRvZ2dsZVVuZGVybGluZSIpCkBA
IC0yMzkyLDcgKzIzOTIsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlQXV0b2NvcnJlY3Rpb25Db250
ZXh0KEZyYW1lJiBmcmFtZSwgU3RyaW5nJiBjb250ZXh0QmVmb3JlLCBTdAogICAgIH0KIH0KIAot
dm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIFN0cmluZyBjb250ZXh0QmVmb3JlOwogICAgIFN0cmlu
ZyBjb250ZXh0QWZ0ZXI7CkBAIC0yNjc2LDcgKzI2NzYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aGFzQXNzaXN0YWJsZUVsZW1lbnQoTm9kZSogc3RhcnROb2RlLCBQYWdlJiBwYWdlLCBib29sIGlz
Rm9ydwogICAgIHJldHVybiBuZXh0QXNzaXN0YWJsZUVsZW1lbnQoc3RhcnROb2RlLCBwYWdlLCBp
c0ZvcndhcmQpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29s
IGlzRm9yd2FyZCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9jdXNOZXh0
QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgRWxlbWVudCogbmV4dEVsZW1lbnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3Rl
ZE5vZGUuZ2V0KCksICptX3BhZ2UsIGlzRm9yd2FyZCk7CiAgICAgbV91c2VySXNJbnRlcmFjdGlu
ZyA9IHRydWU7CkBAIC0zMzAwLDcgKzMzMDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoQXN5
bmNocm9ub3VzVG91Y2hFdmVudHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBxdQog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3
VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQ2
NF90IGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQogewogICAgIGlmIChwcmludEluZm8uc25hcHNob3RGaXJzdFBhZ2Up
IHsKICAgICAgICAgcmVwbHktPnNlbmQoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmgKaW5kZXggMDIwZWVjMmY4NzA3MGZkN2I3OWE3OWU5YzAxZGVjMTJjNzQ0OWI3ZS4uNDI3
NWFlMzExNWE2ZDI1MTg0YmMyYmRkZDgyZDA0YTU1YTk5OTdiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLmgiCkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
dHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJh
Y2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFRyYW5zYWN0
aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsRGVzdHJveURp
c3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IqKTsKQEAg
LTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96
ZW4oYm9vbCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwot
ICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsgfQpAQCAtMTAzLDcgKzEwNCw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNv
bnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBhZGp1c3RMYXllckZsdXNoVGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhyb3R0bGVT
dGF0ZTo6RmxhZ3MpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQppbmRleCAyZDljOWE3ODZiYzVmZmU4ZTA0YTE1NDkzMjU3MjgzNTNiZGM2ZmM1Li45YzJl
NzNhMDZhZjkyMTE0YWI0MTNmYzNkM2M0MDc2OTA1NzE1ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpmbHVzaCgpCiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKG1fY29tbWl0RW5jb2RlciksIHsgfSk7CiB9CiAK
LXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAg
IC8vIEZJWE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwg
bGlrZSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKQEAgLTQ5Nyw3
ICs0OTcsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBibwogICAgIH0KIH0KIAotdm9pZCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRUcmFuc2Fj
dGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fcGVuZGluZ0Nh
bGxiYWNrSURzLmFwcGVuZChzdGF0aWNfY2FzdDxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
VHJhbnNhY3Rpb25DYWxsYmFja0lEPihjYWxsYmFja0lEKSk7CiAgICAgc2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyRmx1c2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAppbmRleCBjZjg5NTc4MTNmYTUzODRkMTRkNjgyYjkxNDU5NzhmMTg1YjUzYWQxLi5mMGU2YzU1
MDQxYTUxYTAyYTY3YTExOTAxNzZmYTI2ZTE4NDFhZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmb3JjZVJlcGFp
bnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxi
YWNrSUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJy
aWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
IG92ZXJyaWRlOwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRV
c2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3Jikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUs
IGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKTsKIAog
ICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwg
V2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiAK
ICAgICBSdW5Mb29wOjpUaW1lcjxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4gbV9zZW5k
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyOwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0
QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBt
X25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CiAgICAgYm9vbCBtX3dhbnRzRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fdmll
d092ZXJsYXlSb290TGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQppbmRleCA0ODBkNjgxZjhmNmI4Y2Q2ZjFhNDMzYTMwMmYzMmMwMzdkZjI4YzJmLi4xYjMw
YjUzMTdlOGNjOGNiMGY0NzRlNWViNzNmZGVjOWM3YWJhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnQoKQogICAgIFtDQVRyYW5zYWN0
aW9uIHN5bmNocm9uaXplXTsKIH0KIAotYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBpZiAobV9sYXllclRyZWVTdGF0ZUlzRnJvemVuKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00NTksNyArNDU5LDcgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIH0KIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFn
cyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKK3ZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUs
IGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFj
a0lEcykKIHsKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5k
VmVjdG9yKG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwogICAgIG1fd2FudHNE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlIHw9IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsKQEAg
LTQ4Miw3ICs0ODIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRV
cGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fd2FudHNEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlKQogICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkpOwogCi0gICAgZm9yICh1aW50NjRfdCBjYWxs
YmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQorICAgIGZvciAo
YXV0byBjYWxsYmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQog
ICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJh
Y2soY2FsbGJhY2tJRCkpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggMWViMDQzNzI4MTI4MGNjZDIwMTY4MjY3YjVhZmU1NGE5
NjVmY2RhOC4uMDE5MmZmMWMxNTczMGVhOTU3Y2RkYTdhNDViODBiMjk4MGZjNjIzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5
bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlCiAgICAgZnJhbWUu
ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9j
YXRpb25zLCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdDsKIApA
QCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNo
YXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxs
YmFjayhyZXN1bHQsIHJhbmdlVG9TZW5kLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Zm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmZv
bnRBdFNlbGVjdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIGZvbnRO
YW1lOwogICAgIGRvdWJsZSBmb250U2l6ZSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313775</attachid>
            <date>2017-06-23 23:55:31 -0700</date>
            <delta_ts>2017-06-24 00:07:32 -0700</delta_ts>
            <desc>Another WPE build fix attempt</desc>
            <filename>bug-173803-20170623235530.patch</filename>
            <type>text/plain</type>
            <size>171497</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
YWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhMzExZDk4YTY0OTdmMDM3ZWY3YTBjYTIwNzg0ZGY3Y2QzNWJjNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1
Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENh
bGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgQ2FsbGJhY2tJ
RCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQoY29uc3QgQ2FsbGJh
Y2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IG1faWQgJiYg
IUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IHJhd0lkICYm
ICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQgZnJvbUludGVnZXIodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJhY2tJRChy
YXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChyYXdJZCk7CisgICAgfQorCisgICAg
c3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJ
RCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVuaXF1ZUNhbGxiYWNrSUQrKyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FsbGJhY2tJRCYg
Y2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
TFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWludDY0X3QgbmV3SUQpCisgICAgICAg
IDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZXdJRCAhPSBIYXNoVHJhaXRz
PHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2Fs
bGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4gZnJpZW5kIGNs
YXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5kIGNsYXNzIE9wdGlvbmFsQ2FsbGJh
Y2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJhY2tJREhhc2g7CisgICAgZnJpZW5k
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD47CisKKyAgICB1aW50NjRfdCBt
X2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGNhbGxiYWNrSUQpIHsgcmV0dXJu
IGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBiKSB7IHJl
dHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6Q2Fs
bGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxiYWNrSUQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpD
YWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OkNhbGxiYWNr
SUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhhc2g7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTcyZTBj
ZTY1ZDYyZDZlMGFmYjYzYmYwZWMyNThkOTQzZGE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBPcHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
ZXhwbGljaXQgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisg
ICAgICAgIDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJ
RCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
SGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCB0b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6Omlz
VmFsaWRDYWxsYmFja0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNr
SUQobV9pZCk7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFj
a0lEKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVp
bnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lk
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsg
SGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDBhYTRmYjE1Njk5NjRiNTM5NDhkYTJiNTMyZDNkNmIzMjJiZmEyOGYuLjJhNDVmYTI2
MGE4ZTUwMzEyNmYxM2Q5MTkyOTA3ZjBlZTM1ZDRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb25faAogI2RlZmluZSBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0y
NjEsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQo
dWludDY0X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklE
OyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICB0
eXBlZGVmIENhbGxiYWNrSUQgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZlY3Rv
cjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tJRHM7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlv
bkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2Fs
bGJhY2tJRHMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBmNjEwODE3NzMyNDUwY2MyYTM4ZTQ2MTljOWE0OWRkZDNhNmYyZTVhLi4wYWI4ZjMy
NTA2ZjVkODc5ODdkODdlNzcxODcyNDQzYWM4NzE1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNh
bGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+CiAgICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAog
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkK
KyAgICAgICAgLCBtX2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAg
ICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7
Ci0gICAgfQotCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwor
ICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTcz
LDEzIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBj
YWxsYmFja01hcCwgQ2FsbGJhY2tCYXNlOjpFcnJvCiAKIGNsYXNzIENhbGxiYWNrTWFwIHsKIHB1
YmxpYzoKLSAgICB1aW50NjRfdCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKKyAg
ICBDYWxsYmFja0lEIHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlu
cyhjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAg
ICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybiBjYWxsYmFja0lEOwogICAgIH0KIApAQCAtMjAxLDE4ICsxOTQsMTggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90
IHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICBDYWxsYmFj
a0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwg
VC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7CiAg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+Ci0gICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBSZWZQdHI8VD4gdGFrZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFja0lEKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAg
IGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKICAgICAgICAgaWYgKCFi
YXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyOSw0ICsyMjIsNDUgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9t
YXA7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlPgorY2xhc3MgU3BlY2lm
aWNDYWxsYmFja01hcCB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNr
VHlwZT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7Cisg
ICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IENhbGxiYWNrVHlwZTo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgUmVmUHRyPENhbGxiYWNrVHlwZT4gdGFrZShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
YXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoYmFzZS5sZWFrUmVmKCktPnRlbXBsYXRlIGFzPENhbGxiYWNrVHlwZT4oKSk7CisgICAgfQor
CisgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX21hcCwgZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9tYXA7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTU3OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgx
MWY4NDJlMGYxYS4uNDA4MmViOWZlZTdlYzRhNmE5Y2Y4MzI3OWNiM2Y3MjRmOTgwMjhmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFn
ZXJDbGllbnRCYXNlKiBjbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQogewotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2Fy
cmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBv
YnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2llT2JzZXJ2ZXJz
LnZhbHVlcygpKSB7CkBAIC05MSwxOCArOTIsMTggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlD
YWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTExNywx
NCArMTE4LDExIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwot
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9hcnJheUNhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE0Nyw2OSArMTQ1LDUxIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAg
YXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25J
RCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBj
YWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENv
b2tpZUFjY2VwCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVk
IHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgog
ICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9u
ZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhl
bTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNp
c3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkp
OwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3Zv
aWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKGNh
bGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGlj
eSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKaW5kZXggODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIyZjU1
NC4uMGFlYTJjNWIwZDkzMzk5NjkzZWMyMjYzNjU4NDU0YTA4NmFjNWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtMTA3LDEz
ICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0g
ICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0
OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxs
YmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0Nh
bGxiYWNrTWFwPFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9s
ZWdhY3lDb29raWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxLi5hNWQ3N2I5NjI5
OTJmMWQzZjZkZWY4NDg3NTFiYTk2MWU1NTY5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDEzICsyMSwxMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewotICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAK
LSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIERpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAg
IERpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENv
b2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0YmZhZTBlNzRhYzkxMTk3MTNkMGY2MmY4Y2Y0NTlmNTcwZDkwMmZlLi43ODk1NjE4NzNl
OGQzN2Q1MTNhZTEwOWU1OWRhODA3ZWZmMjgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0x
NjI4LDcgKzE2MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXVEY6OkZ1bmN0aW9uPAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODU2LDcgKzI4NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg4MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0y
ODkyLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
QEAgLTI5MTgsNyArMjkxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKQEAgLTI5MzAsNyArMjkzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTUyLDcgKzI5NTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zMDA3LDcgKzMwMDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAg
ICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdp
bmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOyAKIH0KQEAgLTMyNDMsNyArMzI0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ewotICAgIEhhc2hTZXQ8dWludDY0X3Q+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOworICAgIEhhc2hTZXQ8
Q2FsbGJhY2tJRD4gbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzID0gV1RGTW92ZShtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFja0lE
IDogbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCkpCiAg
ICAgICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwpAQCAtNTAwMCw3ICs1MDAxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTUwMTEsNyArNTAxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRh
dGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUw
MjIsNyArNTAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW50NjRfCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJp
dG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDMzLDcgKzUwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCB1aQogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywg
dWludDY0X3QgY2FsbGJhY2tJCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNjEsNyArNTA2Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZh
bHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwODEs
NyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwOTIsNyArNTA5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVj
dHMsIGRvdWJsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShw
YWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQgc3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTEwMyw3ICs1
MTA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJl
c3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQo
KSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFu
Z2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjptYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC01MTkyLDcgKzUxOTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtNTk2MSw3ICs1OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwpA
QCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQo
KSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC01OTg3LDcgKzU5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5
OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02MzA3LDcgKzYzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzczLDcgKzYzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlT
dGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pCiAgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApAQCAtNjc0
Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRy
PFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGljb24sIHVpbnQ2NF8KICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAo
Ym9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRfdCBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpIDog
MDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSWRl
bnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NDQ1ZDUzMmRjNTA4
ZWFkMGYwOTNkMzk5ZGMzOWY5NDUyOTMxOWU1Li5jZTJlZjIwZmRlZmE5ODRkNTM2OTkzOGZjYjJi
NDgyZWNhODU3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRX
aW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzMgKzE0NDks
MzMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0
X3QpOwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0
X3QpOwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBi
b29sLCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRf
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1h
Y2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0
X3QpOworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAg
IHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0
LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9h
dCBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZv
aWQgc2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWlu
dDY0X3QpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2Fs
bGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94
eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxh
Z3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWlu
ZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhNzkxZGFiODBkM2NhNjUxN2FmODdhMDBkYjk4MzA0YTk0OGVhZDY4Li43
ZTAyZjRlZWMwOTMyNWZiNjI0NjQ5M2QyYjI0YmI3NTk5MzAyZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1NCwyNyAr
MTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKLSAg
ICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVuc2ln
bmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnRO
YW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgR2VzdHVyZUNh
bGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEF1dG9jb3Jy
ZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywg
U3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcg
YmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmlu
ZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNl
bGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRv
TGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgRHJhd1RvUERGQ2FsbGJh
Y2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
U2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2Vs
ZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERyYXdUb1BERkNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1
bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFBy
aW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9y
KQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBG
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDc4ZjZhOGZiODNlNjFmYjM2OGVkZDAzY2YxOGE0OWVlODEzMTdk
ZDkuLmMxYmE3NjRmMDE1NDI3MTFlMjlhZDVmOWEwNzM0Mjc3NjgyOGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNo
ZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWMKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBv
aW50LCB0b3VjaGVzLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgcmVjdHMs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50NjRfdCBmb250VHJh
aXRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFp
dHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlY3RzLCBm
b250TmFtZSwgZm9udFNpemUsIGZvbnRUcmFpdHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25z
dCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAgICAgCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2lu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0K
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNo
ZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRBc3Npc3RlZE5vZGUoaXNGb3J3YXJkLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHVpbnQzMl90IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBN
ZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5m
bywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fcGFnZUlEKTsKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBkYzhkYTVhYmJhMThjYTNhYjYyZDQy
OWZiMDQ3MTUyZDg0ZWU0YzEyLi4yYTU5MGJmNDg4Y2M3MzhmMmVkYjIwMmY3ZDI0NThiOGE3MzNm
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KQEAgLTI4MSwxMCArMjgxLDEwIEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIElQQ0NhCiAgICAgICAg
ICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgY29udGV4dC0+
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICBf
d2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludElu
Zm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVy
KGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7Ci0gICAgX2V4cGVj
dGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBf
ZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKQEAgLTUyMSwxMSArNTIx
LDExIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50
ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgICAgICAg
ICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ssIHNjYWxlZFByaW50aW5nUmVjdCk7
CiAKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKIAogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRv
SW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRlNzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYz
YzgwZjQyZGU1OTIuLmYxZmJiZGJjNWZmN2E0MjdjNTc4MjU0OWNiYzk4YmZiODAxMjY3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRl
ZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYg
c3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNl
bGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxl
Rm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM3ZWU1ODg1MDdiNjVkODhjOTA3ODQ2MDUzOWMxYTE0ODhi
OWVjNDUuLjZhYjEwMzE5NjRhOWMwYjk1ZWY0Y2FmOTI1NGZmZDE4MjI3MjkxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDkyOSw4IEBACiAJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQ0YxODYz
NzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgKi8sCiAJCQkJQkMzMDY1RjkxMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAv
KiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIg
LyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyog
Q2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIENoaWxk
UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3NTQzYTI5ZDhiZWI4Y2Vh
MzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1Li4xMjEzZDNhODczYmVmYzYzMzFiNWYwZDE1MjgzMDcy
YjA5MjJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGhvc3RuYW1lczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lv
bik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKQEAgLTg3LDE2ICs4NywxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9u
LCB0aW1lKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPENvb2tp
ZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMDUsNyArMTA0LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgdWludDY0X3QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsK
IAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAg
ICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFj
a0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDEyYWU1OTE3NGQ5Yjhi
YTRiNjkwY2JhYWE2NDA3YzdlNmQxYTllYjUuLjg0NGY3YTNiNDZkYTExZmY5NjJiZmZiMTRlOWRj
N2Q5ZWRmZGJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIz
NDUuLjVmZWVmYTcxMmM4MmRmZmMxZDQyNjEyNDlkMGRjYzI3NzdmNTE4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxOSArMjQsMTkgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFdlYkNvb2tpZU1hbmFnZXIgewotICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAotICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
U2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3Vt
ZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
R2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTA4N2E4YTMxMzQ3ZGVjZGQyZWFkMDljMTlh
Mjc4OTBjMWRmYzU4YS4uMWM1NWNhYmUzNjcwMGIxM2VmYmI4NWUzN2RmZWM1NWY0NzFjYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MTAsMTYgKzE4MTAsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5r
SWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9
KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYS5jcHAKaW5kZXggYmY1M2U2YzhhMjQ5MzM5ZmZlZWRkODQyZjIzMDBiNmI4ZWFm
ZDRiYS4uYWMyZTRmMzZiNTAxODY0ZWJlYTI0NjNmODQ5MjlhMzAyZTYzZGE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50KCkKICAgICB9CiB9CiAKLWJvb2wgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tEIGNhbGxiYWNr
SUQpCiB7CiAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPmZv
cmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpOwogfQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkK
IH0KICNlbmRpZgogCi12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYpCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JikKIHsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgKaW5kZXggMmYxOTEzZTAwNjhmNzMzYTc0Y2FlNGMxMTQ3NTBjY2ZmOTJkOTAyMS4uM2I2
NDk0NzJkNGFjNzBiNzI1ZDg4MTcxM2I0MmJiYzc1MzAzZmZiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5oCkBAIC00OCw3ICs0OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGxheWVyVHJlZVN0YXRl
SXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96
ZW47IH0KICAgICBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQo
KSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNldFBhaW50aW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKICAg
ICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVy
cmlkZTsKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVzdHJveU5hdGl2
ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyog
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4m
IC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5
R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDcyOTBhZmY2YjZiODZmNmVmNTE2ZGMxOTc0YjBiZjZhYmUzNmM3MWQu
LjQ2MTY1OWFkNTE3Zjg2N2JhOTBmZDQxYzk2NzI5NTgzYWY2N2QxZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJl
cGFpbnQoKQogICAgIG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CiB9
CiAKLWJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyh1aW50
NjRfdCBjYWxsYmFja0lEKQorYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVw
YWludEFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpyZW5kZXJOZXh0RnJhbWUoKQogICAgICAgICAvLyBhcmVuJ3QgbmVlZGVkLiBJZiB0aGV5IGFy
ZSwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uCiAgICAg
ICAgIC8vIGlzIGNhbGxlZCBhZnRlciB0aGUgbmV4dCB1cGRhdGUuCiAgICAgICAgIGlmICghbV9m
b3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2gpIHsKLSAgICAgICAgICAgIG1fd2ViUGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2ZvcmNlUmVwYWlu
dEFzeW5jLmNhbGxiYWNrSUQpKTsKKyAgICAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihtX2Zv
cmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQuY2FsbGJhY2tJRCgpKSkpOwogICAgICAgICAgICAg
bV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgfTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBt
X2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBl
MmM5ZmEyYjg4YjBjODM3N2EzYWQ5OTg4NmRjZjBjMDg5N2I1ZmMwLi4xNDUzODZhMWIyMWZjZGEy
YzMxYmY3MTQ4YzNiZjlkMjEwM2E5MjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNTEsNyArNTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNl
UmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3Qg
Y2FsbGJhY2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFj
a0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgbmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc1dhaXRpbmdGb3JSZW5kZXJlciB7IHRydWUgfTsKICAgICBib29sIG1fc2NoZWR1bGVk
V2hpbGVXYWl0aW5nRm9yUmVuZGVyZXIgeyBmYWxzZSB9OwogICAgIHN0cnVjdCB7Ci0gICAgICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgeyAwIH07CisgICAgICAgIE9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEOwogICAgICAgICBib29sIG5lZWRzRnJlc2hGbHVzaCB7IGZhbHNlIH07CiAgICAg
fSBtX2ZvcmNlUmVwYWludEFzeW5jOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNoVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDkwODU3NTY1ZTUzNjZlNGEwODAxMmQ2
NWM3MmQ2OWY4ODU1MjQ2NmIuLmE3ZGEzODIwYzQ0ZDFhOTIyNmRjZTY3OTA2MDg0NjYwZWE0OTg1
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJh
Y2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJl
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTc4LDcgKzc5LDcg
QEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgog
ICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGZv
cmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJv
b2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhv
c3QoKSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC0xMTYsNyArMTE3LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlv
bihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBj
YWxsYmFja0lEcyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7
IHJldHVybiB0cnVlOyB9CkBAIC0xNzQsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxi
YWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5k
aWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFU
Rk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNz
YWdlcy5pbgppbmRleCBiMDc2ZjM0YzFhYzY4YzM5ZDBkODAwZjNlYWFjNDA2NWYwNTcwZWVlLi42
ZjU4ZmU4ZTJhMWY1YTQ5MTcwNzc5NzU0YTViMTdiYWZiMmU4NzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2Vz
LmluCkBAIC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIHsKICAgICBBY2Nl
bGVyYXRlZEFuaW1hdGlvbkRpZFN0YXJ0KHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXksIGRv
dWJsZSBzdGFydFRpbWUpCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3Qg
bGF5ZXJJRCwgU3RyaW5nIGtleSkKICAgICAKLSAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQo
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBhYzMwZDliYTEwNjQzZDA4Y2UzMjI4ZTY3ZjI3OThhY2UxZWQx
NTBmLi4yY2JhM2ZjZDAwOWJhNWUzZGRjZmRmMmJkNjNmNDVjODZmYzRkMTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02MDAsNyArNjAw
LDcgQEAgdm9pZCBXZWJQYWdlOjplbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2Vz
KCkKIHZvaWQgV2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBpZiAobV9hY3Rpdml0eVN0YXRlICE9IHBhcmFt
ZXRlcnMuYWN0aXZpdHlTdGF0ZSkKLSAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJz
LmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBWZWN0b3I8dWludDY0X3Q+KCkpOworICAgICAgICBzZXRB
Y3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwgZmFsc2UsIFZlY3RvcjxDYWxs
YmFja0lEPigpKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9IHBhcmFtZXRlcnMubGF5
ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgc2V0TGF5ZXJIb3N0aW5nTW9kZShwYXJhbWV0ZXJzLmxh
eWVySG9zdGluZ01vZGUpOwogfQpAQCAtMTkyMSw3ICsxOTIxLDcgQEAgdm9pZCBXZWJQYWdlOjpz
ZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiAKICNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TKQogCi12b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRSZWN0IHNuYXBz
aG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hvdFJl
Y3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBzdGF0aWNf
Y2FzdDxTbmFwc2hvdE9wdGlvbnM+KG9wdGlvbnMpOwogICAgIHNuYXBzaG90T3B0aW9ucyB8PSBT
bmFwc2hvdE9wdGlvbnNTaGFyZWFibGU7CkBAIC0yNDIyLDcgKzI0MjIsNyBAQCB2b2lkIFdlYlBh
Z2U6OmtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGtleWJvYXJkRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGJvb2wgaXNFbmFi
bGVkID0gZmFsc2U7CiAgICAgaW50MzJfdCBzdGF0ZSA9IDA7CkBAIC0yNjI1LDcgKzI2MjUsNyBA
QCB2b2lkIFdlYlBhZ2U6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiAgICAgICAgIHZpZXctPndp
bGxFbmRMaXZlUmVzaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJv
b2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYgZXZlbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNldEluaXRp
YWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIGV2ZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OTAsNyArMjY5MCw3IEBAIHZvaWQgV2Vi
UGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNl
dEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxi
YWNrSURzKQordm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZs
YWdzIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25z
dCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewogICAgIEFjdGl2aXR5U3RhdGU6
OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwogICAgIG1f
YWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0yODQxLDcgKzI4NDEsNyBAQCBLZXli
b2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJk
QWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5
Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IHNjcmlwdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQg
dG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRl
cGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4K
QEAgLTI4NjIsMTQgKzI4NjIsMTQgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5j
ZSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJp
bmcgcmVzdWx0U3RyaW5nID0gbV9tYWluRnJhbWUtPmNvbnRlbnRzQXNTdHJpbmcoKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywg
Y2FsbGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
YnVmZmVyID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpOwog
CkBAIC0yODgwLDcgKzI4ODAsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERh
dGEodWludDY0X3QgY2FsbGJhY2tJRCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldFJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gcmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmVzZW50YXRpb24oKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0
cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwpAQCAtMjg5Niw3ICsyODk2
LDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0yOTEyLDcgKzI5MTIsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJ
RCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVm
ZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
V2ViRnJhbWUqIGZvY3VzZWRPck1haW5GcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkpOwogICAgIFN0cmlu
ZyByZXN1bHRTdHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPnNlbGVjdGlvbkFzU3RyaW5nKCk7
CkBAIC0yOTIxLDcgKzI5MjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFN0cmluZyByZXN1bHRTdHJp
bmc7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKGZyYW1lSUQpKQpAQCAtMjkzMCw3ICsyOTMwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRT
b3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5n
LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJh
bWVJRCkpIHsKQEAgLTI5NjIsNyArMjk2Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyCiAg
ICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+ZGF0YSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJl
c291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlVVJMU3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZVVSTFN0cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTI5ODEsNyArMjk4MSw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VVCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRh
Q2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMzAwNCw3ICszMDA0LDcgQEAgdm9pZCBXZWJQYWdl
Ojpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKQogICAgIG1fZHJhd2luZ0FyZWEtPmZvcmNl
UmVwYWludCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGlmIChtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnRBc3luYyhjYWxsYmFja0lE
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM4Myw3ICs0MzgzLDcgQEAgdm9pZCBXZWJQYWdlOjpl
bmRQcmludGluZygpCiAgICAgbV9wcmludENvbnRleHQgPSBudWxscHRyOwogfQogCi12b2lkIFdl
YlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
IHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFZlY3RvcjxJbnRSZWN0
PiByZXN1bHRQYWdlUmVjdHM7CiAgICAgZG91YmxlIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQ
cmludGluZyA9IDE7CkBAIC00NDEyLDcgKzQ0MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFn
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5jb3JlRnJhbWUo
KSA6IDA7CkBAIC00NDYxLDcgKzQ0NjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFn
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxi
YWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90
IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BE
Rih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgUmV0
YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERG
SW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFnZURhdGEpOwpAQCAt
NDUxOSw3ICs0NTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHUKIH0KIAogI2VsaWYgUExB
VEZPUk0oR1RLKQotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBi
ZWdpblByaW50aW5nKGZyYW1lSUQsIHByaW50SW5mbyk7CiAgICAgaWYgKG1fcHJpbnRDb250ZXh0
ICYmIG1fcHJpbnRPcGVyYXRpb24pIHsKQEAgLTQ1MzAsNyArNDUzMCw3IEBAIHZvaWQgV2ViUGFn
ZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluZm8sCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJh
Y2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaFByaW50T3BlcmF0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UHJpbnRGaW5pc2hlZENhbGxiYWNrKGVycm9yLCBj
YWxsYmFja0lEKSk7CiAgICAgbV9wcmludE9wZXJhdGlvbiA9IG51bGxwdHI7CkBAIC00ODM3LDcg
KzQ4MzcsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogICAgICAgICBmcmFtZS5lZGl0b3Io
KS5jb25maXJtQ29tcG9zaXRpb24odGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFya2Vk
UmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRS
YW5nZUFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC00ODUy
LDcgKzQ4NTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRpbmdSYW5n
ZUNhbGxiYWNrKEVkaXRpbmdSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTQ4NjcsNyArNDg2Nyw3IEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0aW5nUmFuZ2VDYWxsYmFjayhFZGl0aW5nUmFuZ2Uo
bG9jYXRpb24sIGxlbmd0aCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpjaGFy
YWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50
QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgdWludDY0X3QgaW5kZXggPSBub3RGb3VuZDsKIApAQCAtNDg4NSw3ICs0ODg1
LDcgQEAgdm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50NjQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soaW5kZXgsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5n
ZSYgZWRpdGluZ1JhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmaXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1Jh
bmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBJbnRSZWN0IHJl
c3VsdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZSgwLCAwKSk7CkBAIC01NjkyLDcgKzU2OTIsNyBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9h
ZGVyJiBkb2N1bWVudExvYWRlciwgRnJhbQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRC
eXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Qnl0
ZWNvZGVQcm9maWxlKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoIWNvbW1vblZN
KCkubV9wZXJCeXRlY29kZVByb2ZpbGVyKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKQEAgLTU3MDQs
NyArNTcwNCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFj
ayhyZXN1bHQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNhbXBs
aW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lmIEVOQUJMRShT
QU1QTElOR19QUk9GSUxFUikKICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVy
ID0gY29tbW9uVk0oKS5zYW1wbGluZ1Byb2ZpbGVyKCk7CkBAIC01ODg3LDEwICs1ODg3LDEwIEBA
IHZvaWQgV2ViUGFnZTo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRl
bnRpZmllciwgT3B0aW9uYWxDYWxsYmFja0lEIG5ld0NhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1
dG8qIGRvY3VtZW50TG9hZGVyID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKSkKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lv
bkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lEKTsKKyAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxv
YWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBuZXdDYWxsYmFja0lELnRvSW50ZWdlcigpKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjpzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2Fk
aW5nQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggY2ExMjlmYTBkOGJkOWY2NTM0MjIyMTRkZmU1YzFlMDY5MTY3ODYwZS4uYmY0YmNlYWUy
ZTgxY2E3ZWZlMDI2MTlhZTM4MzZmMDI5Y2Q5MWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxiYWNrSUQuaCIK
ICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC01NDIsNTAgKzU0NCw1MCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKTsKIAogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwotICAgIHZvaWQgc2Vs
ZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxh
cml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgdXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwot
ICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZy
b20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxl
Y3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBn
cmFudWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKLSAgICB2b2lkIG1v
dmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIG1vdmVTZWxl
Y3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMy
X3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVjdFBvc2l0
aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgYmVnaW5TZWxl
Y3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRC
b3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LQotICAgIHZvaWQgcmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0
aW9uLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxh
cml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisK
KyAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQg
cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYg
bmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xk
VGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVj
dGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0
Rm9yQXV0b2NvcnJlY3Rpb24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgYXBwbHlBdXRvY29ycmVj
dGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0
cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIGJvb2wmIGNvcnJl
Y3Rpb25BcHBsaWVkKTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0
KENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYg
YmVmb3JlVGV4dCwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3Ry
aW5nJiBhZnRlclRleHQsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAg
ICAgdm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0JiwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKTsKICAgICB2b2lk
IHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0Jik7CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9u
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsK
ICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKTsKLSAgICB2
b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWUoY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSk7CiAgICAgdm9p
ZCBzZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93
TXVsdGlwbGVTZWxlY3Rpb24pOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZvckVsZW1lbnRB
dEludGVyYWN0aW9uTG9jYXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFwcGVhcmFu
Y2UoKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgaGFu
ZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQ2NF90
IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlv
bk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5n
JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5
V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tJRCk7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9p
ZCBkaXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKGNvbnN0IFZlY3RvcjxXZWJUb3VjaEV2
ZW50LCAxPiYgcXVldWUpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdvcnlE
aWRDaGFuZ2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRXaXRo
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBl
eGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7
CiAKICAgICBTZWNvbmRzIGV2ZW50VGhyb3R0bGluZ0RlbGF5KCkgY29uc3Q7CiAKQEAgLTY3Mywx
NyArNjc1LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVn
aW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dElucHV0KTsKIAogICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVy
VW5kb0dyb3VwID0gZmFsc2UsIHVpbnQzMl90IGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9ICh1
aW50MzJfdClFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBw
cmVzc1NlbGVjdGlvblVwZGF0ZSA9IGZhbHNlKTsKLSAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5
bmModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMo
dWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5
bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2
b2lkIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwg
dWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKENhbGxi
YWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENhbGxiYWNrSUQpOworICAg
IHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRp
b25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3Np
dGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9u
UmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgdm9pZCBj
b25maXJtQ29tcG9zaXRpb25Bc3luYygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQg
aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5n
UmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVy
VW5kb0dyb3VwID0gZmFsc2UpOwotICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJh
Y3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBmb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5n
UmFuZ2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihDYWxsYmFja0lE
KTsKICNlbmRpZgogCiAgICAgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
V1RGOjpTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZXN1bHQpOwpAQCAtNzQ2LDE4ICs3
NDgsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKLSAgICB2b2lk
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSYg
dG90YWxTY2FsZUZhY3Rvcik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBkcmF3UmVj
dFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIGRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAg
dm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5
PiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgZHJhd1BhZ2VzRm9y
UHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFn
ZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRSZXNvdXJj
ZVJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CkBAIC05MTUsOCArOTE3LDggQEAgcHVibGljOgogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExv
YWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAg
IHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2FkZXImLCBXZWJD
b3JlOjpGcmFtZSYpOwogCi0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKENhbGxiYWNrSUQpOworICAg
IHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDYWxsYmFja0lEKTsKICAgICAKICNpZiBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNU
SU9OKQogICAgIHZvaWQgaGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBu
dW1iZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC05NjksNyArOTcxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQg
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRl
bnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIE9w
dGlvbmFsQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29s
KTsKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpAQCAtMTA1OSwxMSArMTA2MSwxMSBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ29CYWNrKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0
X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IHVpbnQ2NF90KTsKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwotICAgIHZv
aWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxp
ZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxp
ZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdXBkYXRl
SXNJbldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2UpOwogICAgIHZvaWQgdmlzaWJp
bGl0eURpZENoYW5nZSgpOwotICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFu
ZChjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7CisgICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcyk7CisgICAgdm9pZCB2
YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleGVj
dXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBz
ZXRFZGl0YWJsZShib29sKTsKIApAQCAtMTEwNCwyMCArMTEwNiwyMCBAQCBwcml2YXRlOgogICAg
IHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lkIHZpZXdXaWxsRW5kTGl2
ZVJlc2l6ZSgpOwogCi0gICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEKTsKICNpZiBF
TkFCTEUoTUhUTUwpCi0gICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlc291
cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmb3JjZVJlcGFpbnQodWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVj
dCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0
aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxE
YXRhKENhbGxiYWNrSUQpOworI2VuZGlmCisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlc291cmNl
RGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJM
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxs
YmFja0lEKTsKKyAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCk7
CisgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdl
YkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7
CiAKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKTsKICAgICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBmOGExOTc1ZDU0NTQwMTI5YTRhOTJmYjdm
ZWE3YWQ4YjhlODE1Njg0Li5hYzkzZjJiMTMwOTUwZmE1Y2NkNDA3ZDliMTQwNGM5ZDMwMzM1MzNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMjEsOCArMjEsOCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBm
b3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZl
bnQgZXZlbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNp
Z25lZCBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgVmVj
dG9yPHVpbnQ2NF90PiBjYWxsYmFja0lEcykKKyAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQg
ZXZlbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNldEFjdGl2aXR5U3Rh
dGUodW5zaWduZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGUsIFZlY3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQogICAgIFNldExheWVy
SG9zdGluZ01vZGUoZW51bSBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSkKIAogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKQEAgLTU0
LDM0ICs1NCwzNCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJ
bnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9p
bnQpCiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50IHBvaW50KQogICAgIEJsdXJBc3Npc3RlZE5vZGUoKQotICAgIFNlbGVjdFdpdGhHZXN0
dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywg
Ym9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoR2Vz
dHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVw
ZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJf
dCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0aW9uKQotICAgIFNlbGVj
dFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50
IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50NjRf
dCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50
IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFeHRl
bmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkpCiAgICAgU2VsZWN0V29yZEJhY2t3YXJk
KCkKLSAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFBvc2l0aW9u
QXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90
IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgTW92ZVNlbGVjdGlvbkF0Qm91
bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rp
b24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMy
X3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFRleHRXaXRoR3JhbnVsYXJp
dHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVj
dGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50
MzJfdCBkaXJlY3Rpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisgICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBS
ZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBSZXBsYWNlRGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3VGV4dCkKICAg
ICBSZXBsYWNlU2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3VGV4dCkKLSAg
ICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29y
cmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBS
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3Ry
aW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIFN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9u
LCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAtPiAoYm9vbCBhdXRvY29ycmVjdGlvbkFwcGxpZWQpCi0g
ICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgR2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkgLT4gKFN0cmluZyBiZWZvcmVDb250
ZXh0LCBTdHJpbmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGFmdGVy
Q29udGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkgCiAgICAgR2V0UG9z
aXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
UG9zaXRpb24gaW5mb3JtYXRpb24pCiAgICAgUmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oc3Ry
dWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkKICAgICBT
dGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBv
aW50KQogICAgIFN0b3BJbnRlcmFjdGlvbigpCiAgICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1
aW50MzJfdCBhY3Rpb24pCi0gICAgRm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJk
LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlz
Rm9yd2FyZCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QXNzaXN0ZWRO
b2RlVmFsdWUoU3RyaW5nIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIo
ZG91YmxlIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWludDMyX3Qg
aW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbikKQEAgLTkxLDEzICs5MSwxMyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKICAgICBBcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShTdHJp
bmcgY29udGVudFNpemVDYXRlZ29yeSkKLSAgICBFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJh
Y2soU3RyaW5nIG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9uQ29u
dGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxs
YmFjayhTdHJpbmcgbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0
U2VsZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRB
bGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCBhbGxvd3MpCiAgICAgSGFuZGxl
VHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgcmVx
dWVzdElEKQogICAgIFNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxl
KQotICAgIEdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90
IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJpbmcg
dGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgR2V0UmVjdHNGb3JHcmFudWxhcml0eVdp
dGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CisgICAgR2V0UmVjdHNBdFNlbGVjdGlvbk9m
ZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJpbmcgdGV4dCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9u
KGJvb2wgY29udHJvbGxlZCkKQEAgLTE1NiwxOSArMTU2LDE5IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJs
ZUVsZW1lbnQoKQogCiAgICAgIyBDYWxsYmFja3MuCi0gICAgR2V0Q29udGVudHNBc1N0cmluZyh1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENvbnRlbnRzQXNN
SFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKLSNlbmRpZgotICAgIEdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyByZXNvdXJj
ZVVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFdlYkFyY2hpdmVPZkZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFN0cmluZyBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
Rm9yY2VSZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc01IVE1M
RGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNlbmRpZgorICAgIEdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgcmVzb3VyY2VVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNvdXJjZUZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFdlYkFy
Y2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAjIERpY3Rpb25hcnkg
c3VwcG9ydC4KQEAgLTE5Miw3ICsxOTIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBUcnlDbG9zZSgpCiAKICAgICBTZXRFZGl0YWJsZShib29sIGVkaXRhYmxl
KQotICAgIFZhbGlkYXRlQ29tbWFuZChTdHJpbmcgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
KyAgICBWYWxpZGF0ZUNvbW1hbmQoU3RyaW5nIG5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIEV4ZWN1dGVFZGl0Q29tbWFuZChTdHJpbmcgbmFtZSwgU3RyaW5nIGFyZ3Vt
ZW50KQogCiAgICAgRGlkUmVtb3ZlRWRpdENvbW1hbmQodWludDY0X3QgY29tbWFuZElEKQpAQCAt
MzIyLDE2ICszMjIsMTYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgIyBQcmludGluZy4KICAgICBCZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pCiAgICAgRW5kUHJpbnRpbmcoKQotICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlBy
aW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgRHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50
U2l6ZSBpbWFnZVNpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRHJhd1BhZ2VzVG9QREYo
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERy
YXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUgaW1hZ2VT
aXplLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEcmF3UGFnZXNUb1BERih1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogI2lmIFBMQVRGT1JNKElPUykKLSAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdU
b1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCB1aW50NjRfdCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50KSBEZWxheWVkCisg
ICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291bnQpIERlbGF5ZWQKICNlbmRpZgogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIERyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAjZW5kaWYKIAogICAgICMgTWVkaWEKQEAgLTM4MywxNyArMzgzLDE3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBl
dmVudE51bWJlciwgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQp
CiAKICAgICBJbnNlcnRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRp
bmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCB1aW50MzJf
dCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8sIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUp
Ci0gICAgR2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNl
bGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENoYXJhY3RlckluZGV4
Rm9yUG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpF
ZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEdldE1hcmtlZFJh
bmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIENoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpOworICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3Ry
dWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCk7CiAgICAgU2V0Q29tcG9zaXRpb25Bc3luYyhTdHJpbmcgdGV4dCwgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2Ugc2VsZWN0aW9uUmFuZ2UsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBs
YWNlbWVudFJhbmdlKQogICAgIENvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBJbnNlcnREaWN0YXRlZFRleHRBc3luYyhTdHJpbmcgdGV4dCwg
c3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIFZlY3RvcjxXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJl
Z2lzdGVyVW5kb0dyb3VwKQotICAgIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7Ci0gICAgRm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEF0
dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVk
aXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIEZv
bnRBdFNlbGVjdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKIAog
ICAgIFNldE1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUgbWluaW11bUxheW91dFNp
emUpCkBAIC00MTIsMTEgKzQxMiwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlubmluZykKICAg
ICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xs
YmFyU3R5bGUpCiAKLSAgICBHZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkK
KyAgICBHZXRCeXRlY29kZVByb2ZpbGUoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAK
LSAgICBHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICAKLSAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdl
YkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKKyAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3Qs
IFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFBlcmZvcm1JbW1l
ZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9u
KQogICAgIEltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpCkBAIC00NjIsNyArNDYyLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAotICAgIERpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2
NF90IG5ld0NhbGxiYWNrSUQpCisgICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRl
Y2lzaW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIFdlYktpdDo6T3B0aW9u
YWxDYWxsYmFja0lEIG5ld0NhbGxiYWNrSUQpCiAgICAgU2V0VXNlSWNvbkxvYWRpbmdDbGllbnQo
Ym9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IDc3NTkwNmVlZTlhOGFkZTRmNDU5MGM1YjFiNmZiMGZkNWYwYzkyYjguLmU3NmY5YjcxZmRh
ZTliMmQ0MGYzZDIxZmNiZjhmMzAxYTBlNzkwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTM5Niw3ICszOTYsNyBA
QCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0U2VsZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpn
ZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7CkBAIC0xMDQ2LDcgKzEwNDYs
NyBAQCBSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OnJhbmdlRm9yQmxvY2tBdFBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkKICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2Vs
ZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0
eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBn
cmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9z
aXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSk7CkBAIC0xNzIyLDcgKzE3MjIsNyBAQCBib29sIFdlYlBhZ2U6OnNob3Vs
ZFN3aXRjaFRvQmxvY2tNb2RlRm9ySGFuZGxlKGNvbnN0IEludFBvaW50JiBoYW5kbGVQb2ludCwg
U2VsZQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hl
cyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3Rh
cnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhUb3VjaGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBi
YXNlSXNTdGFydCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgSW50
UG9pbnQgcG9pbnRJbkRvY3VtZW50ID0gZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29udGVudHMo
cG9pbnQpOwpAQCAtMTc4Myw3ICsxNzgzLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMKICAg
ICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3Qg
Z2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5
cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGZyb21Qb3NpdGlvbiA9IGZyYW1lLnZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKGZyb20pKTsK
QEAgLTE4MjQsNyArMTgyNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJkKCkK
ICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRl
KCpmcmFtZS5kb2N1bWVudCgpLCBzdGFydFBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIHBvc2l0
aW9uLmFmZmluaXR5KCksIHRydWUsIFVzZXJUcmlnZ2VyZWQpOwogfQogCi12b2lkIFdlYlBhZ2U6
Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAKQEAgLTE4NTAsNyArMTg1
MCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25X
aXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvCiAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlv
bkZvckluZGV4KHN0YXJ0SW5kZXggKyBvZmZzZXQsIHJvb3QuZ2V0KCkpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90
IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMy
X3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwpAQCAtMTg4Myw3ICsxODgzLDcgQEAgc3RhdGljIFJlZlB0cjxS
YW5nZT4gcmFuZ2VOZWFyUG9zaXRpb25NYXRjaGVzVGV4dChjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvc2l0aW8KICAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlbGVjdGlvblJhbmdl
LmdldCgpLCBtYXRjaFRleHQsIDAsIHRhcmdldE9mZnNldCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBT
dHJpbmcmIHRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJlY3Rz
QXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICB1aW50MzJfdCBs
ZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwpAQCAtMTkyOCw3ICsxOTI4LDcgQEAgVmlzaWJsZVBvc2l0
aW9uIFdlYlBhZ2U6OnZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChjb25zdCBG
cmFtZSYgZnJhbWUKICAgICByZXR1cm4gZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29u
c3RyYWluZWRQb2ludCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0UG9z
aXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3Vz
ZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSk7CkBAIC0xOTM4LDcgKzE5MzgsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcgogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQz
Ml90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51
bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZy
YW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTk1MSw3ICsx
OTUxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2kKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0
eSwgdWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJh
bWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICAKQEAgLTE5OTUsNyArMTk5NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZWN0SXNU
b29CaWdGb3JTZWxlY3Rpb24oY29uc3QgSW50UmVjdCYgYmxvY2tSZWN0LCBjb25zdCBGcmFtCiAg
ICAgcmV0dXJuIGJsb2NrUmVjdC5oZWlnaHQoKSA+IGZyYW1lLnZpZXcoKS0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0KCkuaGVpZ2h0KCkgKiBmYWN0b3I7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0
VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFu
dWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBn
cmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gcmFu
Z2VGb3JHcmFudWxhcml0eUF0UG9pbnQoZnJhbWUsIHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMjAyMiwxMyArMjAyMiwxMyBAQCB2b2lkIFdl
YlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENh
bGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX3NlbGVjdGlvbkFuY2hvciA9IChzdGF0aWNf
Y2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+KGRpcmVjdGlvbikgPT0gRGlyZWN0aW9uTGVmdCkgPyBT
dGFydCA6IEVuZDsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2Fs
bGJhY2sobV9zZWxlY3Rpb25BbmNob3IgPT0gU3RhcnQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
YXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9j
dXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlKTsKQEAgLTIwNTcsNyArMjA1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKHNlbGVjdGlvblN0
YXJ0ID09IG1faW5pdGlhbFNlbGVjdGlvbi0+c3RhcnRQb3NpdGlvbigpLCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZv
Y3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSk7CkBAIC0yMTA4LDcgKzIxMDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbnZlcnRTZWxlY3Rp
b25SZWN0c1RvUm9vdFZpZXcoRnJhbWVWaWV3KiB2aWV3LCBWZWN0b3I8U2VsZWN0aW9uUgogICAg
IH0KIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CkBAIC0yMTkw
LDcgKzIxOTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3Ry
aW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgZnJhbWUuZWRpdG9yKCku
c2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVx
dWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlv
biwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0
aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5pc0Nh
cmV0KCkpIHsKQEAgLTIyMzgsMTQgKzIyMzgsMTQgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0
b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW4K
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKHJlY3RzRm9yVGV4dCwgZm9udE5hbWUuZ2V0KCksIGZvbnRTaXplLCBmb250VHJhaXRzLCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0
cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBib29sIGNvcnJlY3Rpb25BcHBsaWVkOwogICAgIHN5bmNBcHBs
eUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY29ycmVjdGlvbkFwcGxp
ZWQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soY29y
cmVjdGlvbkFwcGxpZWQgPyBjb3JyZWN0aW9uIDogU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBleGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5h
bWUsIFN0cmluZygpKTsKICAgICBpZiAoY29tbWFuZE5hbWUgPT0gInRvZ2dsZUJvbGQiIHx8IGNv
bW1hbmROYW1lID09ICJ0b2dnbGVJdGFsaWMiIHx8IGNvbW1hbmROYW1lID09ICJ0b2dnbGVVbmRl
cmxpbmUiKQpAQCAtMjM5Miw3ICsyMzkyLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUF1dG9jb3Jy
ZWN0aW9uQ29udGV4dChGcmFtZSYgZnJhbWUsIFN0cmluZyYgY29udGV4dEJlZm9yZSwgU3QKICAg
ICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCh1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgY29udGV4dEJlZm9yZTsK
ICAgICBTdHJpbmcgY29udGV4dEFmdGVyOwpAQCAtMjY3Niw3ICsyNjc2LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGhhc0Fzc2lzdGFibGVFbGVtZW50KE5vZGUqIHN0YXJ0Tm9kZSwgUGFnZSYgcGFn
ZSwgYm9vbCBpc0ZvcncKICAgICByZXR1cm4gbmV4dEFzc2lzdGFibGVFbGVtZW50KHN0YXJ0Tm9k
ZSwgcGFnZSwgaXNGb3J3YXJkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb2N1c05leHRBc3Npc3Rl
ZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIEVsZW1lbnQqIG5leHRFbGVtZW50ID0gbmV4dEFzc2lzdGFibGVFbGVtZW50
KG1fYXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCBpc0ZvcndhcmQpOwogICAgIG1fdXNlcklz
SW50ZXJhY3RpbmcgPSB0cnVlOwpAQCAtMzMwMCw3ICszMzAwLDcgQEAgdm9pZCBXZWJQYWdlOjpk
aXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKGNvbnN0IFZlY3RvcjxXZWJUb3VjaEV2ZW50
LCAxPiYgcXUKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCB1aW50NjRfdCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lk
IFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQs
IFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9Q
REY6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90
Rmlyc3RQYWdlKSB7CiAgICAgICAgIHJlcGx5LT5zZW5kKDEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCmluZGV4IDAyMGVlYzJmODcwNzBmZDdiNzlhNzllOWMwMWRlYzEyYzc0
NDliN2UuLjQyNzVhZTMxMTVhNmQyNTE4NGJjMmJkZGQ4MmQwNGE1NWE5OTk3YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEu
aCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCIKICNpbmNsdWRlICJSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5oIgpAQCAtNjgsNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwg
V2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhZGRUcmFuc2Fj
dGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBh
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAKICAgICBSZWZQ
dHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1v
bml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIG92ZXJyaWRlOwogICAgIHZvaWQgd2ls
bERlc3Ryb3lEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yKik7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYXllclRyZWVT
dGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBv
dmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pikgb3ZlcnJpZGU7CiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7IH0KQEAgLTEwMyw3ICsxMDQs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFj
a0lEcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmcoV2ViQ29yZTo6TGF5ZXJGbHVz
aFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KaW5kZXggMmQ5YzlhNzg2YmM1ZmZlOGUwNGExNTQ5MzI1NzI4MzUzYmRj
NmZjNS4uOWMyZTczYTA2YWY5MjExNGFiNDEzZmMzZDNjNDA3NjkwNTcxNWZiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Zmx1c2goKQog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7
IH0pOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCit2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBi
b29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+
JikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1c3BlbmQgcGFpbnRpbmcgd2hpbGUgbm90
IHZpc2libGUsIGxpa2UgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE/IFByb2JhYmx5Lgog
CkBAIC00OTcsNyArNDk3LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm8KICAgICB9CiB9CiAK
LXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJ
RCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBt
X3BlbmRpbmdDYWxsYmFja0lEcy5hcHBlbmQoc3RhdGljX2Nhc3Q8UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OlRyYW5zYWN0aW9uQ2FsbGJhY2tJRD4oY2FsbGJhY2tJRCkpOwogICAgIHNjaGVk
dWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmgKaW5kZXggY2Y4OTU3ODEzZmE1Mzg0ZDE0ZDY4MmI5MTQ1OTc4ZjE4NWI1M2Fk
MS4uZjBlNmM1NTA0MWE1MWEwMmE2N2ExMTkwMTc2ZmEyNmUxODQxYWZjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
Zm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50
NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKyAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENh
bGxiYWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihi
b29sKSBvdmVycmlkZTsKICAgICBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1l
VmlldyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBh
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5n
ZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJh
Y2tJRD4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZp
cmVkKCk7CiAKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTE0OSw3ICsx
NDksNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJh
bnNmb3JtOwogCiAgICAgUnVuTG9vcDo6VGltZXI8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE+IG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lcjsKLSAgICBWZWN0b3I8dWludDY0
X3Q+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKKyAgICBWZWN0b3I8Q2Fs
bGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzOwogICAgIGJvb2wg
bV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGU7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKiBtX3ZpZXdPdmVybGF5Um9vdExheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KaW5kZXggNDgwZDY4MWY4ZjZiOGNkNmYxYTQzM2EzMDJmMzJjMDM3ZGYy
OGMyZi4uMWIzMGI1MzE3ZThjYzhjYjBmNDc0ZTVlYjczZmRlYzljN2FiYTUyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0xNDcsNyArMTQ3LDcgQEAg
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50KCkKICAgICBb
Q0FUcmFuc2FjdGlvbiBzeW5jaHJvbml6ZV07CiB9CiAKLWJvb2wgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCitib29s
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGJvb2wgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMp
Cit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIG5leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tJRHMpCiB7CiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzLmFwcGVuZFZlY3RvcihuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKTsKICAg
ICBtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSB8PSB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5
U3RhdGU7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKQogICAgIGlmIChtX3dhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSgpKTsKIAotICAgIGZvciAodWlu
dDY0X3QgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykK
KyAgICBmb3IgKGF1dG8gY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja0lEcykKICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIAogICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VDYWxsYmFja0lEcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDFlYjA0MzcyODEyODBjY2QyMDE2ODI2
N2I1YWZlNTRhOTY1ZmNkYTguLjAxOTJmZjFjMTU3MzBlYTk1N2NkZGE3YTQ1YjgwYjI5ODBmYzYy
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3Rh
dGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZQog
ICAgIGZyYW1lLmVkaXRvcigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRl
cm5hdGl2ZUxvY2F0aW9ucywgbnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YXR0cmlidXRl
ZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0
aW5nUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGlu
Z1JhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgQXR0cmlidXRlZFN0cmluZyBy
ZXN1bHQ7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJz
dHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdAogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2socmVzdWx0LCByYW5nZVRvU2VuZCwgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpmb250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFN0
cmluZyBmb250TmFtZTsKICAgICBkb3VibGUgZm9udFNpemUgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313776</attachid>
            <date>2017-06-24 00:07:33 -0700</date>
            <delta_ts>2017-06-24 00:21:23 -0700</delta_ts>
            <desc>Yet another WPE build fix attempt</desc>
            <filename>bug-173803-20170624000732.patch</filename>
            <type>text/plain</type>
            <size>171723</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
YWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhMzExZDk4YTY0OTdmMDM3ZWY3YTBjYTIwNzg0ZGY3Y2QzNWJjNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1
Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENh
bGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgQ2FsbGJhY2tJ
RCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQoY29uc3QgQ2FsbGJh
Y2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IG1faWQgJiYg
IUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IHJhd0lkICYm
ICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQgZnJvbUludGVnZXIodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJhY2tJRChy
YXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChyYXdJZCk7CisgICAgfQorCisgICAg
c3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJ
RCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVuaXF1ZUNhbGxiYWNrSUQrKyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FsbGJhY2tJRCYg
Y2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
TFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWludDY0X3QgbmV3SUQpCisgICAgICAg
IDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZXdJRCAhPSBIYXNoVHJhaXRz
PHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2Fs
bGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4gZnJpZW5kIGNs
YXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5kIGNsYXNzIE9wdGlvbmFsQ2FsbGJh
Y2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJhY2tJREhhc2g7CisgICAgZnJpZW5k
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD47CisKKyAgICB1aW50NjRfdCBt
X2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGNhbGxiYWNrSUQpIHsgcmV0dXJu
IGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBiKSB7IHJl
dHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6Q2Fs
bGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxiYWNrSUQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpD
YWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OkNhbGxiYWNr
SUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhhc2g7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTcyZTBj
ZTY1ZDYyZDZlMGFmYjYzYmYwZWMyNThkOTQzZGE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBPcHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
ZXhwbGljaXQgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisg
ICAgICAgIDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJ
RCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
SGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCB0b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6Omlz
VmFsaWRDYWxsYmFja0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNr
SUQobV9pZCk7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFj
a0lEKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVp
bnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lk
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsg
SGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDBhYTRmYjE1Njk5NjRiNTM5NDhkYTJiNTMyZDNkNmIzMjJiZmEyOGYuLjJhNDVmYTI2
MGE4ZTUwMzEyNmYxM2Q5MTkyOTA3ZjBlZTM1ZDRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb25faAogI2RlZmluZSBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0y
NjEsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQo
dWludDY0X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklE
OyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICB0
eXBlZGVmIENhbGxiYWNrSUQgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZlY3Rv
cjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tJRHM7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlv
bkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2Fs
bGJhY2tJRHMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBmNjEwODE3NzMyNDUwY2MyYTM4ZTQ2MTljOWE0OWRkZDNhNmYyZTVhLi4wYWI4ZjMy
NTA2ZjVkODc5ODdkODdlNzcxODcyNDQzYWM4NzE1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNh
bGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+CiAgICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAog
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkK
KyAgICAgICAgLCBtX2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAg
ICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7
Ci0gICAgfQotCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwor
ICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTcz
LDEzIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBj
YWxsYmFja01hcCwgQ2FsbGJhY2tCYXNlOjpFcnJvCiAKIGNsYXNzIENhbGxiYWNrTWFwIHsKIHB1
YmxpYzoKLSAgICB1aW50NjRfdCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKKyAg
ICBDYWxsYmFja0lEIHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlu
cyhjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAg
ICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybiBjYWxsYmFja0lEOwogICAgIH0KIApAQCAtMjAxLDE4ICsxOTQsMTggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90
IHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICBDYWxsYmFj
a0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwg
VC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7CiAg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+Ci0gICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBSZWZQdHI8VD4gdGFrZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFja0lEKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAg
IGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKICAgICAgICAgaWYgKCFi
YXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyOSw0ICsyMjIsNDUgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9t
YXA7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlPgorY2xhc3MgU3BlY2lm
aWNDYWxsYmFja01hcCB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNr
VHlwZT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7Cisg
ICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IENhbGxiYWNrVHlwZTo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgUmVmUHRyPENhbGxiYWNrVHlwZT4gdGFrZShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
YXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoYmFzZS5sZWFrUmVmKCktPnRlbXBsYXRlIGFzPENhbGxiYWNrVHlwZT4oKSk7CisgICAgfQor
CisgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX21hcCwgZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9tYXA7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTU3OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgx
MWY4NDJlMGYxYS4uNDA4MmViOWZlZTdlYzRhNmE5Y2Y4MzI3OWNiM2Y3MjRmOTgwMjhmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFn
ZXJDbGllbnRCYXNlKiBjbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQogewotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2Fy
cmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBv
YnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2llT2JzZXJ2ZXJz
LnZhbHVlcygpKSB7CkBAIC05MSwxOCArOTIsMTggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlD
YWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTExNywx
NCArMTE4LDExIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwot
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9hcnJheUNhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE0Nyw2OSArMTQ1LDUxIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAg
YXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25J
RCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBj
YWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENv
b2tpZUFjY2VwCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVk
IHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgog
ICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9u
ZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhl
bTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNp
c3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkp
OwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3Zv
aWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKGNh
bGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGlj
eSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKaW5kZXggODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIyZjU1
NC4uMGFlYTJjNWIwZDkzMzk5NjkzZWMyMjYzNjU4NDU0YTA4NmFjNWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtMTA3LDEz
ICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0g
ICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0
OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxs
YmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0Nh
bGxiYWNrTWFwPFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9s
ZWdhY3lDb29raWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxLi5hNWQ3N2I5NjI5
OTJmMWQzZjZkZWY4NDg3NTFiYTk2MWU1NTY5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDEzICsyMSwxMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewotICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAK
LSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIERpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAg
IERpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENv
b2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0YmZhZTBlNzRhYzkxMTk3MTNkMGY2MmY4Y2Y0NTlmNTcwZDkwMmZlLi43ODk1NjE4NzNl
OGQzN2Q1MTNhZTEwOWU1OWRhODA3ZWZmMjgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0x
NjI4LDcgKzE2MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXVEY6OkZ1bmN0aW9uPAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODU2LDcgKzI4NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg4MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0y
ODkyLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
QEAgLTI5MTgsNyArMjkxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKQEAgLTI5MzAsNyArMjkzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTUyLDcgKzI5NTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zMDA3LDcgKzMwMDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAg
ICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdp
bmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOyAKIH0KQEAgLTMyNDMsNyArMzI0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ewotICAgIEhhc2hTZXQ8dWludDY0X3Q+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOworICAgIEhhc2hTZXQ8
Q2FsbGJhY2tJRD4gbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzID0gV1RGTW92ZShtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFja0lE
IDogbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCkpCiAg
ICAgICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwpAQCAtNTAwMCw3ICs1MDAxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTUwMTEsNyArNTAxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRh
dGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUw
MjIsNyArNTAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW50NjRfCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJp
dG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDMzLDcgKzUwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCB1aQogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywg
dWludDY0X3QgY2FsbGJhY2tJCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNjEsNyArNTA2Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZh
bHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwODEs
NyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwOTIsNyArNTA5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVj
dHMsIGRvdWJsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShw
YWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQgc3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTEwMyw3ICs1
MTA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJl
c3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQo
KSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFu
Z2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjptYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC01MTkyLDcgKzUxOTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtNTk2MSw3ICs1OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwpA
QCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQo
KSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC01OTg3LDcgKzU5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5
OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02MzA3LDcgKzYzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzczLDcgKzYzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlT
dGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pCiAgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApAQCAtNjc0
Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRy
PFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGljb24sIHVpbnQ2NF8KICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAo
Ym9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRfdCBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpIDog
MDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSWRl
bnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NDQ1ZDUzMmRjNTA4
ZWFkMGYwOTNkMzk5ZGMzOWY5NDUyOTMxOWU1Li5jZTJlZjIwZmRlZmE5ODRkNTM2OTkzOGZjYjJi
NDgyZWNhODU3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRX
aW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzMgKzE0NDks
MzMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0
X3QpOwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0
X3QpOwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBi
b29sLCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRf
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1h
Y2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0
X3QpOworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAg
IHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0
LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9h
dCBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZv
aWQgc2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWlu
dDY0X3QpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2Fs
bGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94
eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxh
Z3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWlu
ZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhNzkxZGFiODBkM2NhNjUxN2FmODdhMDBkYjk4MzA0YTk0OGVhZDY4Li43
ZTAyZjRlZWMwOTMyNWZiNjI0NjQ5M2QyYjI0YmI3NTk5MzAyZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1NCwyNyAr
MTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKLSAg
ICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVuc2ln
bmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnRO
YW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgR2VzdHVyZUNh
bGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEF1dG9jb3Jy
ZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywg
U3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcg
YmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmlu
ZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNl
bGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRv
TGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgRHJhd1RvUERGQ2FsbGJh
Y2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
U2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2Vs
ZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERyYXdUb1BERkNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1
bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFBy
aW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9y
KQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBG
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDc4ZjZhOGZiODNlNjFmYjM2OGVkZDAzY2YxOGE0OWVlODEzMTdk
ZDkuLmMxYmE3NjRmMDE1NDI3MTFlMjlhZDVmOWEwNzM0Mjc3NjgyOGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNo
ZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWMKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBv
aW50LCB0b3VjaGVzLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgcmVjdHMs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50NjRfdCBmb250VHJh
aXRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFp
dHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlY3RzLCBm
b250TmFtZSwgZm9udFNpemUsIGZvbnRUcmFpdHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25z
dCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAgICAgCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2lu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0K
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNo
ZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRBc3Npc3RlZE5vZGUoaXNGb3J3YXJkLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHVpbnQzMl90IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBN
ZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5m
bywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fcGFnZUlEKTsKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBkYzhkYTVhYmJhMThjYTNhYjYyZDQy
OWZiMDQ3MTUyZDg0ZWU0YzEyLi4yYTU5MGJmNDg4Y2M3MzhmMmVkYjIwMmY3ZDI0NThiOGE3MzNm
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KQEAgLTI4MSwxMCArMjgxLDEwIEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIElQQ0NhCiAgICAgICAg
ICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgY29udGV4dC0+
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICBf
d2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludElu
Zm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVy
KGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7Ci0gICAgX2V4cGVj
dGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBf
ZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKQEAgLTUyMSwxMSArNTIx
LDExIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50
ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgICAgICAg
ICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ssIHNjYWxlZFByaW50aW5nUmVjdCk7
CiAKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKIAogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRv
SW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRlNzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYz
YzgwZjQyZGU1OTIuLmYxZmJiZGJjNWZmN2E0MjdjNTc4MjU0OWNiYzk4YmZiODAxMjY3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRl
ZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYg
c3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNl
bGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxl
Rm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM3ZWU1ODg1MDdiNjVkODhjOTA3ODQ2MDUzOWMxYTE0ODhi
OWVjNDUuLjZhYjEwMzE5NjRhOWMwYjk1ZWY0Y2FmOTI1NGZmZDE4MjI3MjkxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDkyOSw4IEBACiAJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQ0YxODYz
NzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgKi8sCiAJCQkJQkMzMDY1RjkxMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAv
KiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIg
LyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyog
Q2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIENoaWxk
UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3NTQzYTI5ZDhiZWI4Y2Vh
MzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1Li4xMjEzZDNhODczYmVmYzYzMzFiNWYwZDE1MjgzMDcy
YjA5MjJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGhvc3RuYW1lczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lv
bik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKQEAgLTg3LDE2ICs4NywxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9u
LCB0aW1lKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPENvb2tp
ZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMDUsNyArMTA0LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgdWludDY0X3QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsK
IAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAg
ICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFj
a0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDEyYWU1OTE3NGQ5Yjhi
YTRiNjkwY2JhYWE2NDA3YzdlNmQxYTllYjUuLjg0NGY3YTNiNDZkYTExZmY5NjJiZmZiMTRlOWRj
N2Q5ZWRmZGJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIz
NDUuLjVmZWVmYTcxMmM4MmRmZmMxZDQyNjEyNDlkMGRjYzI3NzdmNTE4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxOSArMjQsMTkgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFdlYkNvb2tpZU1hbmFnZXIgewotICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAotICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
U2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3Vt
ZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
R2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTA4N2E4YTMxMzQ3ZGVjZGQyZWFkMDljMTlh
Mjc4OTBjMWRmYzU4YS4uMWM1NWNhYmUzNjcwMGIxM2VmYmI4NWUzN2RmZWM1NWY0NzFjYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MTAsMTYgKzE4MTAsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5r
SWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9
KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYS5jcHAKaW5kZXggYmY1M2U2YzhhMjQ5MzM5ZmZlZWRkODQyZjIzMDBiNmI4ZWFm
ZDRiYS4uYWMyZTRmMzZiNTAxODY0ZWJlYTI0NjNmODQ5MjlhMzAyZTYzZGE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50KCkKICAgICB9CiB9CiAKLWJvb2wgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tEIGNhbGxiYWNr
SUQpCiB7CiAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPmZv
cmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpOwogfQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkK
IH0KICNlbmRpZgogCi12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYpCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JikKIHsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgKaW5kZXggMmYxOTEzZTAwNjhmNzMzYTc0Y2FlNGMxMTQ3NTBjY2ZmOTJkOTAyMS4uM2I2
NDk0NzJkNGFjNzBiNzI1ZDg4MTcxM2I0MmJiYzc1MzAzZmZiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5oCkBAIC00OCw3ICs0OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGxheWVyVHJlZVN0YXRl
SXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96
ZW47IH0KICAgICBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQo
KSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNldFBhaW50aW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKICAg
ICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVy
cmlkZTsKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVzdHJveU5hdGl2
ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyog
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4m
IC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5
R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDcyOTBhZmY2YjZiODZmNmVmNTE2ZGMxOTc0YjBiZjZhYmUzNmM3MWQu
LjQ2MTY1OWFkNTE3Zjg2N2JhOTBmZDQxYzk2NzI5NTgzYWY2N2QxZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJl
cGFpbnQoKQogICAgIG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CiB9
CiAKLWJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyh1aW50
NjRfdCBjYWxsYmFja0lEKQorYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVw
YWludEFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpyZW5kZXJOZXh0RnJhbWUoKQogICAgICAgICAvLyBhcmVuJ3QgbmVlZGVkLiBJZiB0aGV5IGFy
ZSwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uCiAgICAg
ICAgIC8vIGlzIGNhbGxlZCBhZnRlciB0aGUgbmV4dCB1cGRhdGUuCiAgICAgICAgIGlmICghbV9m
b3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2gpIHsKLSAgICAgICAgICAgIG1fd2ViUGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2ZvcmNlUmVwYWlu
dEFzeW5jLmNhbGxiYWNrSUQpKTsKKyAgICAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihtX2Zv
cmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQuY2FsbGJhY2tJRCgpKSkpOwogICAgICAgICAgICAg
bV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgfTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBt
X2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBl
MmM5ZmEyYjg4YjBjODM3N2EzYWQ5OTg4NmRjZjBjMDg5N2I1ZmMwLi4zNjJmZTc5MzZhMjk1Nzdk
MDVkOThmYzQ5ODgwYjc4NDg5NWRiOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMjMsOCArMjMsMTAgQEAKIAog
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAorI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIK
ICNpbmNsdWRlICJDb21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVl
SG9zdC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDcgKzUzLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmb3JjZVJl
cGFpbnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNh
bGxiYWNrSUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJ
RCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIG5ld1NpemUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKSBvdmVycmlkZTsKQEAgLTg1LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNXYWl0aW5nRm9yUmVuZGVyZXIgeyB0cnVlIH07CiAgICAgYm9vbCBtX3NjaGVkdWxlZFdo
aWxlV2FpdGluZ0ZvclJlbmRlcmVyIHsgZmFsc2UgfTsKICAgICBzdHJ1Y3QgewotICAgICAgICB1
aW50NjRfdCBjYWxsYmFja0lEIHsgMCB9OworICAgICAgICBPcHRpb25hbENhbGxiYWNrSUQgY2Fs
bGJhY2tJRDsKICAgICAgICAgYm9vbCBuZWVkc0ZyZXNoRmx1c2ggeyBmYWxzZSB9OwogICAgIH0g
bV9mb3JjZVJlcGFpbnRBc3luYzsKICAgICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q+IG1fbGF5ZXJGbHVzaFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA5MDg1NzU2NWU1MzY2ZTRhMDgwMTJkNjVj
NzJkNjlmODg1NTI0NjZiLi5hN2RhMzgyMGM0NGQxYTkyMjZkY2U2NzkwNjA4NDY2MGVhNDk4NTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNhbGxiYWNr
SUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVD
b250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCkBAIC03OCw3ICs3OSw3IEBA
IHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KICAg
ICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBmb3Jj
ZVJlcGFpbnRBc3luYyh1aW50NjRfdCAvKmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29s
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0
KCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtMTE2LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24o
V1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2Fs
bGJhY2tJRHMgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgeyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgbWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtMTc0LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFj
a0lEKFdlYktpdDo6Q2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlm
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZP
Uk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2Fn
ZXMuaW4KaW5kZXggYjA3NmYzNGMxYWM2OGMzOWQwZDgwMGYzZWFhYzQwNjVmMDU3MGVlZS4uNmY1
OGZlOGUyYTFmNWE0OTE3MDc3OTc1NGE1YjE3YmFmYjJlODczNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bgpAQCAtMzcsNyArMzcsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSB7CiAgICAgQWNjZWxl
cmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5LCBkb3Vi
bGUgc3RhcnRUaW1lKQogICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxh
eWVySUQsIFN0cmluZyBrZXkpCiAgICAgCi0gICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCisgICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggYWMzMGQ5YmExMDY0M2QwOGNlMzIyOGU2N2YyNzk4YWNlMWVkMTUw
Zi4uMmNiYTNmY2QwMDliYTVlM2RkY2ZkZjJiZDYzZjQ1Yzg2ZmM0ZDE3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjAwLDcgKzYwMCw3
IEBAIHZvaWQgV2ViUGFnZTo6ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygp
CiB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0ZSAhPSBwYXJhbWV0
ZXJzLmFjdGl2aXR5U3RhdGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5h
Y3Rpdml0eVN0YXRlLCBmYWxzZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKKyAgICAgICAgc2V0QWN0
aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBWZWN0b3I8Q2FsbGJh
Y2tJRD4oKSk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBwYXJhbWV0ZXJzLmxheWVy
SG9zdGluZ01vZGUpCiAgICAgICAgIHNldExheWVySG9zdGluZ01vZGUocGFyYW1ldGVycy5sYXll
ckhvc3RpbmdNb2RlKTsKIH0KQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogCiAjZW5kaWYgLy8gIVBM
QVRGT1JNKElPUykKIAotdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hv
dFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qgc25hcHNob3RSZWN0
LCBJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc3RhdGljX2Nh
c3Q8U25hcHNob3RPcHRpb25zPihvcHRpb25zKTsKICAgICBzbmFwc2hvdE9wdGlvbnMgfD0gU25h
cHNob3RPcHRpb25zU2hhcmVhYmxlOwpAQCAtMjQyMiw3ICsyNDIyLDcgQEAgdm9pZCBXZWJQYWdl
OjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVp
bnQzMl90PihrZXlib2FyZEV2ZW50LnR5cGUoKSksIGhhbmRsZWQpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYg
Y29tbWFuZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBib29sIGlzRW5hYmxl
ZCA9IGZhbHNlOwogICAgIGludDMyX3Qgc3RhdGUgPSAwOwpAQCAtMjYyNSw3ICsyNjI1LDcgQEAg
dm9pZCBXZWJQYWdlOjp2aWV3V2lsbEVuZExpdmVSZXNpemUoKQogICAgICAgICB2aWV3LT53aWxs
RW5kTGl2ZVJlc2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29s
IGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIGV2ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZXRJbml0aWFs
Rm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiBldmVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0yNjkwLDcgKzI2OTAsNyBAQCB2b2lkIFdlYlBh
Z2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFj
a0lEcykKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFn
cyBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3Qg
VmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykKIHsKICAgICBBY3Rpdml0eVN0YXRlOjpG
bGFncyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBtX2Fj
dGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAtMjg0MSw3ICsyODQxLDcgQEAgS2V5Ym9h
cmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFj
Y2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJv
YXJkQWNjZXNzVGFic1RvTGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRv
IGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBl
bmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCkBA
IC0yODYyLDE0ICsyODYyLDE0IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lECiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2Us
IGhhZEV4Y2VwdGlvbiwgZGV0YWlscywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5n
IHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCk7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNh
bGxiYWNrSUQpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2ViUGFnZTo6Z2V0Q29u
dGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGJ1
ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdlLmdldCgpKTsKIApA
QCAtMjg4MCw3ICsyODgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJp
bmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKQEAgLTI4OTYsNyArMjg5Niw3
IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMjkxMiw3ICsyOTEyLDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVy
ZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29u
dGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdl
YkZyYW1lKiBmb2N1c2VkT3JNYWluRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsKICAgICBTdHJpbmcg
cmVzdWx0U3RyaW5nID0gZm9jdXNlZE9yTWFpbkZyYW1lLT5zZWxlY3Rpb25Bc1N0cmluZygpOwpA
QCAtMjkyMSw3ICsyOTIxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5n
OwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJG
cmFtZShmcmFtZUlEKSkKQEAgLTI5MzAsNyArMjkzMCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291
cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1l
SUQpKSB7CkBAIC0yOTYyLDcgKzI5NjIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogICAg
IHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZVVSTFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VV
UkxTdHJpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0yOTgxLDcgKzI5ODEsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlVQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNh
bGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpn
ZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTMwMDQsNyArMzAwNCw3IEBAIHZvaWQgV2ViUGFnZTo6
Zm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCkKICAgICBtX2RyYXdpbmdBcmVhLT5mb3JjZVJl
cGFpbnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQodWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJRCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTQzODMsNyArNDM4Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZW5k
UHJpbnRpbmcoKQogICAgIG1fcHJpbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8SW50UmVjdD4g
cmVzdWx0UGFnZVJlY3RzOwogICAgIGRvdWJsZSByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJp
bnRpbmcgPSAxOwpAQCAtNDQxMiw3ICs0NDEyLDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFn
ZXNGb3JQcmludGluZ0ltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmkK
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkg
OiAwOwpAQCAtNDQ2MSw3ICs0NDYxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnMKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlQ2FsbGJhY2soaGFuZGxlLCBjYWxsYmFj
a0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBj
b3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJldGFp
blB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERklt
cGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKQEAgLTQ1
MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1CiB9CiAKICNlbGlmIFBMQVRG
T1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYmVn
aW5QcmludGluZyhmcmFtZUlELCBwcmludEluZm8pOwogICAgIGlmIChtX3ByaW50Q29udGV4dCAm
JiBtX3ByaW50T3BlcmF0aW9uKSB7CkBAIC00NTMwLDcgKzQ1MzAsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvLAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNr
KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hQcmludE9wZXJhdGlv
bihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlByaW50RmluaXNoZWRDYWxsYmFjayhlcnJvciwgY2Fs
bGJhY2tJRCkpOwogICAgIG1fcHJpbnRPcGVyYXRpb24gPSBudWxscHRyOwpAQCAtNDgzNyw3ICs0
ODM3LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4KICAgICAgICAgZnJhbWUuZWRpdG9yKCku
Y29uZmlybUNvbXBvc2l0aW9uKHRleHQpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJh
bmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFya2VkUmFu
Z2VBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIApAQCAtNDg1Miw3
ICs0ODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0aW5nUmFuZ2VD
YWxsYmFjayhFZGl0aW5nUmFuZ2UobG9jYXRpb24sIGxlbmd0aCksIGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC00ODY3LDcgKzQ4NjcsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdGluZ1JhbmdlQ2FsbGJhY2soRWRpdGluZ1JhbmdlKGxv
Y2F0aW9uLCBsZW5ndGgpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y2hhcmFj
dGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFz
eW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIHVpbnQ2NF90IGluZGV4ID0gbm90Rm91bmQ7CiAKQEAgLTQ4ODUsNyArNDg4NSw3
IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBwb2ludCwgdWludDY0CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpVbnNpZ25lZENhbGxiYWNrKGluZGV4LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2Um
IGVkaXRpbmdSYW5nZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5n
ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgSW50UmVjdCByZXN1
bHQoSW50UG9pbnQoMCwgMCksIEludFNpemUoMCwgMCkpOwpAQCAtNTY5Miw3ICs1NjkyLDcgQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRl
ciYgZG9jdW1lbnRMb2FkZXIsIEZyYW0KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Qnl0
ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldEJ5dGVj
b2RlUHJvZmlsZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKCFjb21tb25WTSgp
Lm1fcGVyQnl0ZWNvZGVQcm9maWxlcikgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlN0cmluZ0NhbGxiYWNrKFN0cmluZygpLCBjYWxsYmFja0lEKSk7CkBAIC01NzA0LDcg
KzU3MDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxs
YmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2so
cmVzdWx0LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9m
aWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBFTkFCTEUoU0FN
UExJTkdfUFJPRklMRVIpCiAgICAgU2FtcGxpbmdQcm9maWxlciogc2FtcGxpbmdQcm9maWxlciA9
IGNvbW1vblZNKCkuc2FtcGxpbmdQcm9maWxlcigpOwpAQCAtNTg4NywxMCArNTg4NywxMCBAQCB2
b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxv
YWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50
aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQogewogICAgIGlmIChhdXRv
KiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJRCk7CisgICAgICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2Fk
SWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJhY2tJRC50b0ludGVnZXIoKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGlu
Z0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGNhMTI5ZmEwZDhiZDlmNjUzNDIyMjE0ZGZlNWMxZTA2OTE2Nzg2MGUuLmJmNGJjZWFlMmU4
MWNhN2VmZTAyNjE5YWUzODM2ZjAyOWNkOTFkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkFQSUlu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUluamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVk
ZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIgpAQCAtMzksNiArNDAsNyBAQAogI2luY2x1ZGUg
IkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCiAj
aW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNTQyLDUwICs1NDQsNTAgQEAgcHVibGljOgogICAgIHZv
aWQgaW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7CiAKICAgICB2b2lkIGJsdXJBc3Npc3RlZE5vZGUoKTsKLSAgICB2b2lkIHNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lE
KTsKICAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0aW9uKTsKLSAg
ICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9t
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0
V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVT
dGF0ZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3Jh
bnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0V29yZEJhY2t3YXJkKCk7Ci0gICAgdm9pZCBtb3Zl
U2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlv
bkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0
aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0K
LSAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lE
KTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdy
YW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlv
biwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworCisg
ICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIHJl
cGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5l
d1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRl
eHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rp
b25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rp
b24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBib29sJiBjb3JyZWN0
aW9uQXBwbGllZCk7Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChD
YWxsYmFja0lEKTsKICAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9uQ29udGV4dChTdHJpbmcmIGJl
Zm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3RlZFRleHQsIFN0cmlu
ZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAg
IHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
UmVxdWVzdCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7CiAgICAgdm9pZCBy
ZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVx
dWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgc3RvcEludGVyYWN0aW9uKCk7CiAg
ICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbik7Ci0gICAgdm9p
ZCBmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOworICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUpOwogICAgIHZvaWQg
c2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011
bHRpcGxlU2VsZWN0aW9uKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RGb3JFbGVtZW50QXRJ
bnRlcmFjdGlvbkxvY2F0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25BcHBlYXJhbmNl
KCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIGhhbmRs
ZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCBy
ZXF1ZXN0SUQpOwotICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25P
ZmZzZXQodWludDMyX3QsIGludDMyX3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdp
dGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQg
ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhjb25zdCBWZWN0b3I8V2ViVG91Y2hFdmVu
dCwgMT4mIHF1ZXVlKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5RGlk
Q2hhbmdlKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENh
bGxiYWNrKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwog
CiAgICAgU2Vjb25kcyBldmVudFRocm90dGxpbmdEZWxheSgpIGNvbnN0OwogCkBAIC02NzMsMTcg
KzY3NSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2lu
KHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHRleHRJbnB1dCk7CiAKICAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVu
ZG9Hcm91cCA9IGZhbHNlLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8gPSAodWlu
dDMyX3QpRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3QsIGJvb2wgc3VwcHJl
c3NTZWxlY3Rpb25VcGRhdGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5j
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyhDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxsYmFja0lEKTsKKyAgICB2
b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9u
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRp
b25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJh
bmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29u
ZmlybUNvbXBvc2l0aW9uQXN5bmMoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGlu
c2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1Jh
bmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0
ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCByZWdpc3RlclVu
ZG9Hcm91cCA9IGZhbHNlKTsKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1Jh
bmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCk7
CiAjZW5kaWYKIAogICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFdU
Rjo6U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgYm9vbCYgcmVzdWx0KTsKQEAgLTc0NiwxOCArNzQ4
LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mKTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7Ci0gICAgdm9pZCBj
b21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5n
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYsIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUmIHRv
dGFsU2NhbGVGYWN0b3IpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZHJhd1JlY3RU
b0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSk7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZv
aWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5PiYm
KTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4m
Jik7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIGRyYXdQYWdlc0ZvclBy
aW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkUmVzb3VyY2VS
ZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpA
QCAtOTE1LDggKzkxNyw4IEBAIHB1YmxpYzoKICAgICBSZWY8V2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2
b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiwgV2ViQ29y
ZTo6RnJhbWUmKTsKIAotICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCk7CiAgICAgCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElP
TikKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVt
YmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtOTY5LDcgKzk3MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lz
aW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBPcHRp
b25hbENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7
CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTEwNTksMTEgKzEwNjEsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdvQmFjayh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90
KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCB1
aW50NjRfdCk7CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKLSAgICB2b2lk
IHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQs
IGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQs
IGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUlz
SW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2b2lkIHZpc2liaWxp
dHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcyk7Ci0gICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQo
Y29uc3QgU3RyaW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpOworICAgIHZvaWQgdmFs
aWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZXhlY3V0
ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0
RWRpdGFibGUoYm9vbCk7CiAKQEAgLTExMDQsMjAgKzExMDYsMjAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3V2lsbEVuZExpdmVS
ZXNpemUoKTsKIAotICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCk7CiAjaWYgRU5B
QkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSNlbmRpZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVS
TCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBn
ZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qg
c25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlv
bnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0
YShDYWxsYmFja0lEKTsKKyNlbmRpZgorICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJD
b3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwog
CiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZjhhMTk3NWQ1NDU0MDEyOWE0YTkyZmI3ZmVh
N2FkOGI4ZTgxNTY4NC4uYWM5M2YyYjEzMDk1MGZhNWNjZDQwN2Q5YjE0MDRjOWQzMDMzNTMzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTIxLDggKzIxLDggQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9y
d2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50
IGV2ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNldEFjdGl2aXR5U3RhdGUodW5zaWdu
ZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIFZlY3Rv
cjx1aW50NjRfdD4gY2FsbGJhY2tJRHMpCisgICAgU2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2
ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZXRBY3Rpdml0eVN0YXRl
KHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
LCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcykKICAgICBTZXRMYXllckhv
c3RpbmdNb2RlKGVudW0gV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUp
CiAKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCkBAIC01NCwz
NCArNTQsMzQgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5z
cGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50
KQogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCBwb2ludCkKICAgICBCbHVyQXNzaXN0ZWROb2RlKCkKLSAgICBTZWxlY3RXaXRoR2VzdHVy
ZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJv
b2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgU2VsZWN0V2l0aEdlc3R1
cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRh
dGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3Qg
dG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3NpdGlvbikKLSAgICBTZWxlY3RX
aXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0
bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBm
cm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRXh0ZW5k
U2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgIFNlbGVjdFdvcmRCYWNrd2FyZCgp
Ci0gICAgTW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQotICAgIFNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxlY3RQb3NpdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBn
cmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9u
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKLSAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90
IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQz
Ml90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50
NjRfdCBjYWxsYmFja0lEKQotICAgIFJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgTW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5
QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIFNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rp
b24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1
aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMy
X3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVx
dWVzdERpY3RhdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
UmVwbGFjZURpY3RhdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQpCiAgICAg
UmVwbGFjZVNlbGVjdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQpCi0gICAg
UmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJpbmcgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJl
Y3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVx
dWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJpbmcgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmlu
ZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwg
U3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKQotICAg
IFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBS
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIEdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpIC0+IChTdHJpbmcgYmVmb3JlQ29udGV4
dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBhZnRlckNv
bnRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIAogICAgIEdldFBvc2l0
aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVj
dCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QpCiAgICAgU3Rh
cnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCkKICAgICBTdG9wSW50ZXJhY3Rpb24oKQogICAgIFBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWlu
dDMyX3QgYWN0aW9uKQotICAgIEZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0Zv
cndhcmQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEFzc2lzdGVkTm9k
ZVZhbHVlKFN0cmluZyB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRv
dWJsZSB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGlu
ZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pCkBAIC05MSwxMyArOTEsMTMgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiAgICAgQXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKQogICAgIENvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoU3RyaW5n
IGNvbnRlbnRTaXplQ2F0ZWdvcnkpCi0gICAgRXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNr
KFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNlbGVjdGlvbkNvbnRl
eHQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJh
Y2soU3RyaW5nIG5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNl
bGVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QWxs
b3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogICAgIEhhbmRsZVR3
b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKICAgICBTZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkK
LSAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBn
cmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIEdl
dFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRl
eHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRo
U2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZz
ZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihi
b29sIGNvbnRyb2xsZWQpCkBAIC0xNTYsMTkgKzE1NiwxOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVF
bGVtZW50KCkKIAogICAgICMgQ2FsbGJhY2tzLgotICAgIEdldENvbnRlbnRzQXNTdHJpbmcodWlu
dDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRDb250ZW50c0FzTUhU
TUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0jZW5kaWYKLSAgICBHZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdl
dFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VV
UkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U291cmNlRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRXZWJBcmNoaXZlT2ZGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEZv
cmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNNSFRNTERh
dGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKKyAgICBHZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIHJlc291cmNlVVJMLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBH
ZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRXZWJBcmNo
aXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nIHNjcmlwdCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5IHN1
cHBvcnQuCkBAIC0xOTIsNyArMTkyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7CiAgICAgVHJ5Q2xvc2UoKQogCiAgICAgU2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkK
LSAgICBWYWxpZGF0ZUNvbW1hbmQoU3RyaW5nIG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgVmFsaWRhdGVDb21tYW5kKFN0cmluZyBuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBFeGVjdXRlRWRpdENvbW1hbmQoU3RyaW5nIG5hbWUsIFN0cmluZyBhcmd1bWVu
dCkKIAogICAgIERpZFJlbW92ZUVkaXRDb21tYW5kKHVpbnQ2NF90IGNvbW1hbmRJRCkKQEAgLTMy
MiwxNiArMzIyLDE2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
ICMgUHJpbnRpbmcuCiAgICAgQmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKQogICAgIEVuZFByaW50aW5nKCkKLSAgICBDb21w
dXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIENvbXB1dGVQYWdlc0Zv
clByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmlu
dEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIERyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQ
cmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNp
emUgaW1hZ2VTaXplLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIERyYXdQYWdlc1RvUERGKHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQz
Ml90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBEcmF3
UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6
ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRHJhd1BhZ2VzVG9QREYodWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9Q
REYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywg
dWludDY0X3QgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgRGVsYXllZAorICAg
IENvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50KSBEZWxheWVkCiAjZW5kaWYKICNlbmRpZgog
I2lmIFBMQVRGT1JNKEdUSykKLSAgICBEcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIERyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogI2VuZGlmCiAKICAgICAjIE1lZGlhCkBAIC0zODMsMTcgKzM4MywxNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZl
bnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJvb2wgcmVzdWx0KQog
CiAgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5n
UmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCwgdWludDMyX3Qg
ZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLCBib29sIHN1cHByZXNzU2VsZWN0aW9uVXBkYXRlKQot
ICAgIEdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxl
Y3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBDaGFyYWN0ZXJJbmRleEZv
clBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRp
dGluZ1JhbmdlIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBHZXRNYXJrZWRSYW5n
ZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNlbGVjdGVkUmFu
Z2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBDaGFyYWN0ZXJJbmRl
eEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKTsKKyAgICBGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVj
dCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpOwogICAgIFNldENvbXBvc2l0aW9uQXN5bmMoU3RyaW5nIHRleHQsIFZlY3RvcjxXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgc3RydWN0IFdlYktpdDo6RWRpdGlu
Z1JhbmdlIHNlbGVjdGlvblJhbmdlLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFj
ZW1lbnRSYW5nZSkKICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCiAjZW5kaWYKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0
cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBWZWN0b3I8V2ViQ29y
ZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdp
c3RlclVuZG9Hcm91cCkKLSAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIEZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBBdHRy
aWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBGb250
QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAg
ICBTZXRNaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRTaXplIG1pbmltdW1MYXlvdXRTaXpl
KQpAQCAtNDEyLDExICs0MTIsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCiAgICAg
U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJh
clN0eWxlKQogCi0gICAgR2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgR2V0Qnl0ZWNvZGVQcm9maWxlKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCi0g
ICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgCi0gICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJD
b3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBX
ZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQZXJmb3JtSW1tZWRp
YXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbikK
ICAgICBJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQpAQCAtNDYyLDcgKzQ2Miw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRf
dCBuZXdDYWxsYmFja0lEKQorICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNp
c2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQogICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJv
b2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCA3NzU5MDZlZWU5YThhZGU0ZjQ1OTBjNWIxYjZmYjBmZDVmMGM5MmI4Li5lNzZmOWI3MWZkYWU5
YjJkNDBmM2QyMWZjYmY4ZjMwMWEwZTc5MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAg
Ym9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlBhZ2U6Omdl
dFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkgewpAQCAtMTA0Niw3ICsxMDQ2LDcg
QEAgUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckJsb2NrQXRQb2ludChjb25zdCBJbnRQ
b2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIHJhbmdlOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0
aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUpOwpAQCAtMTcyMiw3ICsxNzIyLDcgQEAgYm9vbCBXZWJQYWdlOjpzaG91bGRT
d2l0Y2hUb0Jsb2NrTW9kZUZvckhhbmRsZShjb25zdCBJbnRQb2ludCYgaGFuZGxlUG9pbnQsIFNl
bGUKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRo
VG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFz
ZUlzU3RhcnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEludFBv
aW50IHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBv
aW50KTsKQEAgLTE3ODMsNyArMTc4Myw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzCiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdl
c3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBG
cmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBmcm9tUG9zaXRpb24gPSBmcmFtZS52aXNpYmxlUG9z
aXRpb25Gb3JQb2ludChmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhmcm9tKSk7CkBA
IC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAg
ICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgq
ZnJhbWUuZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlv
bi5hZmZpbml0eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpt
b3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCkBAIC0xODUwLDcgKzE4NTAs
NyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0
aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpbwogICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb25G
b3JJbmRleChzdGFydEluZGV4ICsgb2Zmc2V0LCByb290LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBn
cmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90
IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKQEAgLTE4ODMsNyArMTg4Myw3IEBAIHN0YXRpYyBSZWZQdHI8UmFu
Z2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBw
b3NpdGlvCiAgICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KCpzZWxlY3Rpb25SYW5nZS5n
ZXQoKSwgbWF0Y2hUZXh0LCAwLCB0YXJnZXRPZmZzZXQpOwogfQogCi12b2lkIFdlYlBhZ2U6Omdl
dFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgdWludDMyX3QgbGVu
Z3RoID0gdGV4dC5sZW5ndGgoKTsKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFZpc2libGVQb3NpdGlv
biBXZWJQYWdlOjp2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoY29uc3QgRnJh
bWUmIGZyYW1lCiAgICAgcmV0dXJuIGZyYW1lLnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0
cmFpbmVkUG9pbnQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0
aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRv
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2Vk
Tm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUp
OwpAQCAtMTkzOCw3ICsxOTM4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXIKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJf
dCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxh
cml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFt
ZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTE5NTEsNyArMTk1
MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6Om1v
dmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwg
dWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpt
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1l
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAgICAgCkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9v
QmlnRm9yU2VsZWN0aW9uKGNvbnN0IEludFJlY3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbQogICAg
IHJldHVybiBibG9ja1JlY3QuaGVpZ2h0KCkgPiBmcmFtZS52aWV3KCktPnVub2JzY3VyZWRDb250
ZW50UmVjdCgpLmhlaWdodCgpICogZmFjdG9yOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFRl
eHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
dWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVs
YXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHJhbmdl
Rm9yR3JhbnVsYXJpdHlBdFBvaW50KGZyYW1lLCBwb2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIwMjIsMTMgKzIwMjIsMTMgQEAgdm9pZCBXZWJQ
YWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxs
YmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRp
cmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV9zZWxlY3Rpb25BbmNob3IgPSAoc3RhdGljX2Nh
c3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pID09IERpcmVjdGlvbkxlZnQpID8gU3Rh
cnQgOiBFbmQ7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxi
YWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3Vz
ZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSk7CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JgogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFy
dCA9PSBtX2luaXRpYWxTZWxlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1
c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUpOwpAQCAtMjEwOCw3ICsyMTA4LDcgQEAgdm9pZCBXZWJQYWdlOjpjb252ZXJ0U2VsZWN0aW9u
UmVjdHNUb1Jvb3RWaWV3KEZyYW1lVmlldyogdmlldywgVmVjdG9yPFNlbGVjdGlvblIKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9z
aXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwpAQCAtMjE5MCw3
ICsyMTkwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmlu
ZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogICAgIGZyYW1lLmVkaXRvcigpLnNl
dElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVl
c3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlv
bkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJl
dCgpKSB7CkBAIC0yMjM4LDE0ICsyMjM4LDE0IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9j
b3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWluCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhyZWN0c0ZvclRleHQsIGZvbnROYW1lLmdldCgpLCBmb250U2l6ZSwgZm9udFRyYWl0cywgY2Fs
bGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3Qg
U3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJp
bmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgYm9vbCBjb3JyZWN0aW9uQXBwbGllZDsKICAgICBzeW5jQXBwbHlB
dXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNvcnJlY3Rpb25BcHBsaWVk
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKGNvcnJl
Y3Rpb25BcHBsaWVkID8gY29ycmVjdGlvbiA6IFN0cmluZygpLCBjYWxsYmFja0lEKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmV4ZWN1
dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1l
LCBTdHJpbmcoKSk7CiAgICAgaWYgKGNvbW1hbmROYW1lID09ICJ0b2dnbGVCb2xkIiB8fCBjb21t
YW5kTmFtZSA9PSAidG9nZ2xlSXRhbGljIiB8fCBjb21tYW5kTmFtZSA9PSAidG9nZ2xlVW5kZXJs
aW5lIikKQEAgLTIzOTIsNyArMjM5Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVBdXRvY29ycmVj
dGlvbkNvbnRleHQoRnJhbWUmIGZyYW1lLCBTdHJpbmcmIGNvbnRleHRCZWZvcmUsIFN0CiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIGNvbnRleHRCZWZvcmU7CiAg
ICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKQEAgLTI2NzYsNyArMjY3Niw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBoYXNBc3Npc3RhYmxlRWxlbWVudChOb2RlKiBzdGFydE5vZGUsIFBhZ2UmIHBhZ2Us
IGJvb2wgaXNGb3J3CiAgICAgcmV0dXJuIG5leHRBc3Npc3RhYmxlRWxlbWVudChzdGFydE5vZGUs
IHBhZ2UsIGlzRm9yd2FyZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWRO
b2RlKGJvb2wgaXNGb3J3YXJkLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpm
b2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudCht
X2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgaXNGb3J3YXJkKTsKICAgICBtX3VzZXJJc0lu
dGVyYWN0aW5nID0gdHJ1ZTsKQEAgLTMzMDAsNyArMzMwMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlz
cGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhjb25zdCBWZWN0b3I8V2ViVG91Y2hFdmVudCwg
MT4mIHF1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgdWludDY0X3QgY2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBX
ZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
OjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7CiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZp
cnN0UGFnZSkgewogICAgICAgICByZXBseS0+c2VuZCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuaAppbmRleCAwMjBlZWMyZjg3MDcwZmQ3Yjc5YTc5ZTljMDFkZWMxMmM3NDQ5
YjdlLi40Mjc1YWUzMTE1YTZkMjUxODRiYzJiZGRkODJkMDRhNTVhOTk5N2JmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24uaCIKQEAgLTY4LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWRkVHJhbnNhY3Rp
b25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
VHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25p
dG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxE
ZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ciopOwpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0OyB9CkBAIC0xMDMsNyArMTA0LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRz
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJ
RHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hU
aHJvdHRsZVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCmluZGV4IDJkOWM5YTc4NmJjNWZmZThlMDRhMTU0OTMyNTcyODM1M2JkYzZm
YzUuLjljMmU3M2EwNmFmOTIxMTRhYjQxM2ZjM2QzYzQwNzY5MDU3MTVmYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZsdXNoKCkKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9
KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9v
bCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYp
CiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2
aXNpYmxlLCBsaWtlIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIApA
QCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvCiAgICAgfQogfQogCi12
b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQo
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFk
ZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV9w
ZW5kaW5nQ2FsbGJhY2tJRHMuYXBwZW5kKHN0YXRpY19jYXN0PFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+KGNhbGxiYWNrSUQpKTsKICAgICBzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oCmluZGV4IGNmODk1NzgxM2ZhNTM4NGQxNGQ2ODJiOTE0NTk3OGYxODViNTNhZDEu
LmYwZTZjNTUwNDFhNTFhMDJhNjdhMTE5MDE3NmZhMjZlMTg0MWFmYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZv
cmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxs
YmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9v
bCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGU7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZp
ZXcmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0
aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2Vk
LCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNr
SUQ+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJl
ZCgpOwogCiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6
RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CkBAIC0xNDksNyArMTQ5
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5z
Zm9ybTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
PiBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXI7Ci0gICAgVmVjdG9yPHVpbnQ2NF90
PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CisgICAgVmVjdG9yPENhbGxi
YWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKICAgICBib29sIG1f
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciogbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCmluZGV4IDQ4MGQ2ODFmOGY2YjhjZDZmMWE0MzNhMzAyZjMyYzAzN2RmMjhj
MmYuLjFiMzBiNTMxN2U4Y2M4Y2IwZjQ3NGU1ZWI3M2ZkZWM5YzdhYmE1MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgW0NB
VHJhbnNhY3Rpb24gc3luY2hyb25pemVdOwogfQogCi1ib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQorYm9vbCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBib29sIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgfQogfQogCi12b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3Rh
dGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQor
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrSURzKQogewogICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lE
cy5hcHBlbmRWZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7CiAgICAg
bV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgfD0gd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCkKICAgICBpZiAobV93YW50c0Rp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CiAKLSAgICBmb3IgKHVpbnQ2
NF90IGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisg
ICAgZm9yIChhdXRvIGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tJRHMpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZv
aWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiAKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tJRHMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAxZWIwNDM3MjgxMjgwY2NkMjAxNjgyNjdi
NWFmZTU0YTk2NWZjZGE4Li4wMTkyZmYxYzE1NzMwZWE5NTdjZGRhN2E0NWI4MGIyOTgwZmM2MjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRl
ZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmUKICAg
ICBmcmFtZS5lZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVMb2NhdGlvbnMsIG51bGxwdHIpOwogfQogCi12b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGlu
Z1JhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdS
YW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEF0dHJpYnV0ZWRTdHJpbmcgcmVz
dWx0OwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXQKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJS
YW5nZUNhbGxiYWNrKHJlc3VsdCwgcmFuZ2VUb1NlbmQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Zm9udEF0U2VsZWN0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJp
bmcgZm9udE5hbWU7CiAgICAgZG91YmxlIGZvbnRTaXplID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313777</attachid>
            <date>2017-06-24 00:21:25 -0700</date>
            <delta_ts>2017-06-24 00:28:33 -0700</delta_ts>
            <desc>More GTK+ and WPE build fixes</desc>
            <filename>bug-173803-20170624002124.patch</filename>
            <type>text/plain</type>
            <size>175134</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
YWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhMzExZDk4YTY0OTdmMDM3ZWY3YTBjYTIwNzg0ZGY3Y2QzNWJjNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1
Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENh
bGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgQ2FsbGJhY2tJ
RCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQoY29uc3QgQ2FsbGJh
Y2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IG1faWQgJiYg
IUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IHJhd0lkICYm
ICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQgZnJvbUludGVnZXIodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJhY2tJRChy
YXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChyYXdJZCk7CisgICAgfQorCisgICAg
c3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJ
RCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVuaXF1ZUNhbGxiYWNrSUQrKyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FsbGJhY2tJRCYg
Y2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
TFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWludDY0X3QgbmV3SUQpCisgICAgICAg
IDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZXdJRCAhPSBIYXNoVHJhaXRz
PHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2Fs
bGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4gZnJpZW5kIGNs
YXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5kIGNsYXNzIE9wdGlvbmFsQ2FsbGJh
Y2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJhY2tJREhhc2g7CisgICAgZnJpZW5k
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD47CisKKyAgICB1aW50NjRfdCBt
X2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGNhbGxiYWNrSUQpIHsgcmV0dXJu
IGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBiKSB7IHJl
dHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6Q2Fs
bGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxiYWNrSUQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpD
YWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OkNhbGxiYWNr
SUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhhc2g7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTcyZTBj
ZTY1ZDYyZDZlMGFmYjYzYmYwZWMyNThkOTQzZGE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBPcHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
ZXhwbGljaXQgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisg
ICAgICAgIDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJ
RCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
SGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCB0b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6Omlz
VmFsaWRDYWxsYmFja0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNr
SUQobV9pZCk7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFj
a0lEKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVp
bnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lk
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsg
SGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDBhYTRmYjE1Njk5NjRiNTM5NDhkYTJiNTMyZDNkNmIzMjJiZmEyOGYuLjJhNDVmYTI2
MGE4ZTUwMzEyNmYxM2Q5MTkyOTA3ZjBlZTM1ZDRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb25faAogI2RlZmluZSBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0y
NjEsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQo
dWludDY0X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklE
OyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICB0
eXBlZGVmIENhbGxiYWNrSUQgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZlY3Rv
cjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tJRHM7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlv
bkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2Fs
bGJhY2tJRHMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBmNjEwODE3NzMyNDUwY2MyYTM4ZTQ2MTljOWE0OWRkZDNhNmYyZTVhLi4wYWI4ZjMy
NTA2ZjVkODc5ODdkODdlNzcxODcyNDQzYWM4NzE1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNh
bGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+CiAgICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAog
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkK
KyAgICAgICAgLCBtX2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAg
ICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7
Ci0gICAgfQotCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwor
ICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTcz
LDEzIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBj
YWxsYmFja01hcCwgQ2FsbGJhY2tCYXNlOjpFcnJvCiAKIGNsYXNzIENhbGxiYWNrTWFwIHsKIHB1
YmxpYzoKLSAgICB1aW50NjRfdCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKKyAg
ICBDYWxsYmFja0lEIHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlu
cyhjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAg
ICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybiBjYWxsYmFja0lEOwogICAgIH0KIApAQCAtMjAxLDE4ICsxOTQsMTggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90
IHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICBDYWxsYmFj
a0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwg
VC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7CiAg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+Ci0gICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBSZWZQdHI8VD4gdGFrZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFja0lEKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAg
IGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKICAgICAgICAgaWYgKCFi
YXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyOSw0ICsyMjIsNDUgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9t
YXA7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlPgorY2xhc3MgU3BlY2lm
aWNDYWxsYmFja01hcCB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNr
VHlwZT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7Cisg
ICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IENhbGxiYWNrVHlwZTo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgUmVmUHRyPENhbGxiYWNrVHlwZT4gdGFrZShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
YXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoYmFzZS5sZWFrUmVmKCktPnRlbXBsYXRlIGFzPENhbGxiYWNrVHlwZT4oKSk7CisgICAgfQor
CisgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX21hcCwgZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9tYXA7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTU3OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgx
MWY4NDJlMGYxYS4uNDA4MmViOWZlZTdlYzRhNmE5Y2Y4MzI3OWNiM2Y3MjRmOTgwMjhmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFn
ZXJDbGllbnRCYXNlKiBjbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQogewotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2Fy
cmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBv
YnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2llT2JzZXJ2ZXJz
LnZhbHVlcygpKSB7CkBAIC05MSwxOCArOTIsMTggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlD
YWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTExNywx
NCArMTE4LDExIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwot
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9hcnJheUNhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE0Nyw2OSArMTQ1LDUxIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAg
YXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25J
RCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBj
YWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENv
b2tpZUFjY2VwCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVk
IHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgog
ICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9u
ZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhl
bTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNp
c3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkp
OwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3Zv
aWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKGNh
bGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGlj
eSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKaW5kZXggODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIyZjU1
NC4uMGFlYTJjNWIwZDkzMzk5NjkzZWMyMjYzNjU4NDU0YTA4NmFjNWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtMTA3LDEz
ICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0g
ICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0
OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxs
YmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0Nh
bGxiYWNrTWFwPFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9s
ZWdhY3lDb29raWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxLi5hNWQ3N2I5NjI5
OTJmMWQzZjZkZWY4NDg3NTFiYTk2MWU1NTY5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDEzICsyMSwxMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewotICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAK
LSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIERpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAg
IERpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENv
b2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0YmZhZTBlNzRhYzkxMTk3MTNkMGY2MmY4Y2Y0NTlmNTcwZDkwMmZlLi43ODk1NjE4NzNl
OGQzN2Q1MTNhZTEwOWU1OWRhODA3ZWZmMjgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0x
NjI4LDcgKzE2MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXVEY6OkZ1bmN0aW9uPAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODU2LDcgKzI4NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg4MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0y
ODkyLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
QEAgLTI5MTgsNyArMjkxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKQEAgLTI5MzAsNyArMjkzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTUyLDcgKzI5NTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zMDA3LDcgKzMwMDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAg
ICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdp
bmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOyAKIH0KQEAgLTMyNDMsNyArMzI0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ewotICAgIEhhc2hTZXQ8dWludDY0X3Q+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOworICAgIEhhc2hTZXQ8
Q2FsbGJhY2tJRD4gbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzID0gV1RGTW92ZShtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFja0lE
IDogbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCkpCiAg
ICAgICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwpAQCAtNTAwMCw3ICs1MDAxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTUwMTEsNyArNTAxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRh
dGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUw
MjIsNyArNTAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW50NjRfCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJp
dG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDMzLDcgKzUwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCB1aQogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywg
dWludDY0X3QgY2FsbGJhY2tJCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNjEsNyArNTA2Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZh
bHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwODEs
NyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwOTIsNyArNTA5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVj
dHMsIGRvdWJsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShw
YWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQgc3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTEwMyw3ICs1
MTA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJl
c3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQo
KSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFu
Z2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjptYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC01MTkyLDcgKzUxOTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtNTk2MSw3ICs1OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwpA
QCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQo
KSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC01OTg3LDcgKzU5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5
OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02MzA3LDcgKzYzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzczLDcgKzYzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlT
dGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pCiAgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApAQCAtNjc0
Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRy
PFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGljb24sIHVpbnQ2NF8KICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAo
Ym9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRfdCBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpIDog
MDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSWRl
bnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NDQ1ZDUzMmRjNTA4
ZWFkMGYwOTNkMzk5ZGMzOWY5NDUyOTMxOWU1Li5jZTJlZjIwZmRlZmE5ODRkNTM2OTkzOGZjYjJi
NDgyZWNhODU3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRX
aW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzMgKzE0NDks
MzMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0
X3QpOwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0
X3QpOwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBi
b29sLCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRf
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1h
Y2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0
X3QpOworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAg
IHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0
LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9h
dCBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZv
aWQgc2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWlu
dDY0X3QpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2Fs
bGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94
eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxh
Z3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWlu
ZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhNzkxZGFiODBkM2NhNjUxN2FmODdhMDBkYjk4MzA0YTk0OGVhZDY4Li43
ZTAyZjRlZWMwOTMyNWZiNjI0NjQ5M2QyYjI0YmI3NTk5MzAyZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1NCwyNyAr
MTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKLSAg
ICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVuc2ln
bmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnRO
YW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgR2VzdHVyZUNh
bGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEF1dG9jb3Jy
ZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywg
U3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcg
YmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmlu
ZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNl
bGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRv
TGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgRHJhd1RvUERGQ2FsbGJh
Y2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
U2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2Vs
ZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERyYXdUb1BERkNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1
bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFBy
aW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9y
KQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBG
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDc4ZjZhOGZiODNlNjFmYjM2OGVkZDAzY2YxOGE0OWVlODEzMTdk
ZDkuLmMxYmE3NjRmMDE1NDI3MTFlMjlhZDVmOWEwNzM0Mjc3NjgyOGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNo
ZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWMKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBv
aW50LCB0b3VjaGVzLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgcmVjdHMs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50NjRfdCBmb250VHJh
aXRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFp
dHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlY3RzLCBm
b250TmFtZSwgZm9udFNpemUsIGZvbnRUcmFpdHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25z
dCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAgICAgCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2lu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0K
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNo
ZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRBc3Npc3RlZE5vZGUoaXNGb3J3YXJkLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHVpbnQzMl90IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBN
ZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5m
bywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fcGFnZUlEKTsKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBkYzhkYTVhYmJhMThjYTNhYjYyZDQy
OWZiMDQ3MTUyZDg0ZWU0YzEyLi4yYTU5MGJmNDg4Y2M3MzhmMmVkYjIwMmY3ZDI0NThiOGE3MzNm
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KQEAgLTI4MSwxMCArMjgxLDEwIEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIElQQ0NhCiAgICAgICAg
ICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgY29udGV4dC0+
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICBf
d2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludElu
Zm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVy
KGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7Ci0gICAgX2V4cGVj
dGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBf
ZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKQEAgLTUyMSwxMSArNTIx
LDExIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50
ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgICAgICAg
ICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ssIHNjYWxlZFByaW50aW5nUmVjdCk7
CiAKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKIAogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRv
SW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRlNzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYz
YzgwZjQyZGU1OTIuLmYxZmJiZGJjNWZmN2E0MjdjNTc4MjU0OWNiYzk4YmZiODAxMjY3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRl
ZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYg
c3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNl
bGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxl
Rm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM3ZWU1ODg1MDdiNjVkODhjOTA3ODQ2MDUzOWMxYTE0ODhi
OWVjNDUuLjZhYjEwMzE5NjRhOWMwYjk1ZWY0Y2FmOTI1NGZmZDE4MjI3MjkxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDkyOSw4IEBACiAJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQ0YxODYz
NzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgKi8sCiAJCQkJQkMzMDY1RjkxMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAv
KiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIg
LyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyog
Q2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIENoaWxk
UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3NTQzYTI5ZDhiZWI4Y2Vh
MzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1Li4xMjEzZDNhODczYmVmYzYzMzFiNWYwZDE1MjgzMDcy
YjA5MjJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGhvc3RuYW1lczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lv
bik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKQEAgLTg3LDE2ICs4NywxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9u
LCB0aW1lKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPENvb2tp
ZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMDUsNyArMTA0LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgdWludDY0X3QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsK
IAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAg
ICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFj
a0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDEyYWU1OTE3NGQ5Yjhi
YTRiNjkwY2JhYWE2NDA3YzdlNmQxYTllYjUuLjg0NGY3YTNiNDZkYTExZmY5NjJiZmZiMTRlOWRj
N2Q5ZWRmZGJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIz
NDUuLjVmZWVmYTcxMmM4MmRmZmMxZDQyNjEyNDlkMGRjYzI3NzdmNTE4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxOSArMjQsMTkgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFdlYkNvb2tpZU1hbmFnZXIgewotICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAotICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
U2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3Vt
ZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
R2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTA4N2E4YTMxMzQ3ZGVjZGQyZWFkMDljMTlh
Mjc4OTBjMWRmYzU4YS4uMWM1NWNhYmUzNjcwMGIxM2VmYmI4NWUzN2RmZWM1NWY0NzFjYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MTAsMTYgKzE4MTAsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5r
SWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9
KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYS5jcHAKaW5kZXggYmY1M2U2YzhhMjQ5MzM5ZmZlZWRkODQyZjIzMDBiNmI4ZWFm
ZDRiYS4uYWMyZTRmMzZiNTAxODY0ZWJlYTI0NjNmODQ5MjlhMzAyZTYzZGE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50KCkKICAgICB9CiB9CiAKLWJvb2wgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tEIGNhbGxiYWNr
SUQpCiB7CiAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPmZv
cmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpOwogfQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkK
IH0KICNlbmRpZgogCi12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYpCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JikKIHsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgKaW5kZXggMmYxOTEzZTAwNjhmNzMzYTc0Y2FlNGMxMTQ3NTBjY2ZmOTJkOTAyMS4uM2I2
NDk0NzJkNGFjNzBiNzI1ZDg4MTcxM2I0MmJiYzc1MzAzZmZiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5oCkBAIC00OCw3ICs0OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGxheWVyVHJlZVN0YXRl
SXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96
ZW47IH0KICAgICBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQo
KSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNldFBhaW50aW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKICAg
ICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVy
cmlkZTsKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVzdHJveU5hdGl2
ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyog
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4m
IC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5
R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDcyOTBhZmY2YjZiODZmNmVmNTE2ZGMxOTc0YjBiZjZhYmUzNmM3MWQu
LjU0Nzg3MTcxOTI0NjYwYzU3ZWZkYjFmOGQ4ZGNlYTZjNjU1Mjc2MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApA
QCAtMTI3LDE0ICsxMjcsMTQgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNl
UmVwYWludCgpCiAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsK
IH0KIAotYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCitib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VS
ZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHNjaGVkdWxlTGF5ZXJG
bHVzaCgpOwogCiAgICAgLy8gV2Ugd2FudCBhIGNsZWFuIHJlcGFpbnQsIG1lYW5pbmcgdGhhdCBp
ZiB3ZSdyZSBjdXJyZW50bHkgd2FpdGluZyBmb3IgdGhlIHJlbmRlcmVyCiAgICAgLy8gdG8gZmlu
aXNoIGFuIHVwZGF0ZSwgd2UnbGwgaGF2ZSB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoIHdoZW4g
aXQncyBkb25lLgogICAgIEFTU0VSVCghbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEKTsK
LSAgICBtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQgPSBjYWxsYmFja0lEOworICAgIG1f
Zm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCA9IE9wdGlvbmFsQ2FsbGJhY2tJRChjYWxsYmFj
a0lEKTsKICAgICBtX2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IG1fc2NoZWR1
bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXI7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjcs
OCArMTY3LDggQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFt
ZSgpCiAgICAgICAgIC8vIGFyZW4ndCBuZWVkZWQuIElmIHRoZXkgYXJlLCB0aGUgY2FsbGJhY2sg
d2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoaXMgZnVuY3Rpb24KICAgICAgICAgLy8gaXMgY2FsbGVk
IGFmdGVyIHRoZSBuZXh0IHVwZGF0ZS4KICAgICAgICAgaWYgKCFtX2ZvcmNlUmVwYWludEFzeW5j
Lm5lZWRzRnJlc2hGbHVzaCkgewotICAgICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJ
RCkpOwotICAgICAgICAgICAgbV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgfTsKKyAgICAgICAgICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhDYWxs
YmFja0lEOjpmcm9tSW50ZWdlcihtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQuY2FsbGJh
Y2tJRCgpKSkpOworICAgICAgICAgICAgbV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgT3B0aW9uYWxD
YWxsYmFja0lEKCkgLCBmYWxzZSB9OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZm9y
Y2VSZXBhaW50QXN5bmMubmVlZHNGcmVzaEZsdXNoID0gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRl
eCBlMmM5ZmEyYjg4YjBjODM3N2EzYWQ5OTg4NmRjZjBjMDg5N2I1ZmMwLi43NGJiNWQzNTliZjIz
ZmJjZTY5NjNkNGZiZGRjOWEwMmMzZGVhZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjaW5jbHVkZSAiQ29tcG9zaXRpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxheWVyVHJl
ZUhvc3QuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxiYWNrSUQuaCIKICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw3ICs1Miw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VS
ZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBj
YWxsYmFja0lEKSBvdmVycmlkZTsKKyAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNr
SUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBuZXdTaXplKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CkBAIC04NSw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVyIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zY2hlZHVsZWRX
aGlsZVdhaXRpbmdGb3JSZW5kZXJlciB7IGZhbHNlIH07CiAgICAgc3RydWN0IHsKLSAgICAgICAg
dWludDY0X3QgY2FsbGJhY2tJRCB7IDAgfTsKKyAgICAgICAgT3B0aW9uYWxDYWxsYmFja0lEIGNh
bGxiYWNrSUQ7CiAgICAgICAgIGJvb2wgbmVlZHNGcmVzaEZsdXNoIHsgZmFsc2UgfTsKICAgICB9
IG1fZm9yY2VSZXBhaW50QXN5bmM7CiAgICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0PiBtX2xheWVyRmx1c2hUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggOTA4NTc1NjVlNTM2NmU0YTA4MDEyZDY1
YzcyZDY5Zjg4NTUyNDY2Yi4uYTdkYTM4MjBjNDRkMWE5MjI2ZGNlNjc5MDYwODQ2NjBlYTQ5ODU5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDYWxsYmFj
a0lELmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVl
Q29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgpAQCAtNzgsNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZm9y
Y2VSZXBhaW50QXN5bmModWludDY0X3QgLypjYWxsYmFja0lEKi8pIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9v
bCkgeyB9CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9z
dCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTExNiw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9u
KFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50
c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qIGNh
bGxiYWNrSURzICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFj
dGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIHsgfQogCiAgICAg
dmlydHVhbCBib29sIG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTE3NCw3ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJh
Y2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRp
ZgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRG
T1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3Nh
Z2VzLmluCmluZGV4IGIwNzZmMzRjMWFjNjhjMzlkMGQ4MDBmM2VhYWM0MDY1ZjA1NzBlZWUuLjZm
NThmZThlMmExZjVhNDkxNzA3Nzk3NTRhNWIxN2JhZmIyZTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW4KQEAgLTM3LDcgKzM3LDcgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgewogICAgIEFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSwgZG91
YmxlIHN0YXJ0VGltZSkKICAgICBBY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCBs
YXllcklELCBTdHJpbmcga2V5KQogICAgIAotICAgIEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVE
X1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9MYXllclRyZWVIb3N0LmgKaW5kZXggMmY1NzExMTEwM2M3ZWVmOGNiYmRmZDBiOWY4NzI1
OGNlNmI4OGFkYy4uZTJjMDczMzM5NDIzOWIzODRjMDY1Yzg3OWRkMWE4NWJiNDhhYWQ2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVT
RShURVhUVVJFX01BUFBFUikKIAorI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJM
YXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CkBAIC03MSw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIHsgfTsKICAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgLypjYWxsYmFja0lEKi8pIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFj
a2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhYzMwZDliYTEwNjQzZDA4Y2UzMjI4
ZTY3ZjI3OThhY2UxZWQxNTBmLi4yY2JhM2ZjZDAwOWJhNWUzZGRjZmRmMmJkNjNmNDVjODZmYzRk
MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBXZWJQYWdlOjplbmFibGVFbnVtZXJhdGluZ0FsbE5l
dHdvcmtJbnRlcmZhY2VzKCkKIHZvaWQgV2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBpZiAobV9hY3Rpdml0
eVN0YXRlICE9IHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkKLSAgICAgICAgc2V0QWN0aXZpdHlT
dGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBWZWN0b3I8dWludDY0X3Q+KCkp
OworICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwgZmFs
c2UsIFZlY3RvcjxDYWxsYmFja0lEPigpKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9
IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgc2V0TGF5ZXJIb3N0aW5nTW9k
ZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpOwogfQpAQCAtMTkyMSw3ICsxOTIxLDcgQEAg
dm9pZCBXZWJQYWdlOjpzZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQp
CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi12b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hv
dChJbnRSZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRp
b25zLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50
UmVjdCBzbmFwc2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9w
dGlvbnMgPSBzdGF0aWNfY2FzdDxTbmFwc2hvdE9wdGlvbnM+KG9wdGlvbnMpOwogICAgIHNuYXBz
aG90T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGU7CkBAIC0yNDIyLDcgKzI0MjIs
NyBAQCB2b2lkIFdlYlBhZ2U6OmtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJv
YXJkRXZlbnQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZl
bnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWJvYXJkRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGJvb2wgaXNFbmFibGVkID0gZmFsc2U7CiAgICAgaW50MzJfdCBzdGF0ZSA9IDA7CkBAIC0y
NjI1LDcgKzI2MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiAg
ICAgICAgIHZpZXctPndpbGxFbmRMaXZlUmVzaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0
SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50
VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OTAsNyArMjY5
MCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQogCi12
b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZp
dHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGNhbGxiYWNrSURzKQordm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFj
dGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewogICAg
IEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0
eVN0YXRlOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0yODQxLDcg
KzI4NDEsNyBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5h
YmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90
YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8v
IE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRo
ZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2Ny
aXB0IGV4ZWN1dGlvbi4KQEAgLTI4NjIsMTQgKzI4NjIsMTQgQEAgdm9pZCBXZWJQYWdlOjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJh
Y2soZGF0YVJlZmVyZW5jZSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gbV9tYWluRnJhbWUtPmNvbnRlbnRzQXNT
dHJpbmcoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNr
KHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9p
ZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8gYnVmZmVyID0gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YSht
X3BhZ2UuZ2V0KCkpOwogCkBAIC0yODgwLDcgKzI4ODAsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldENv
bnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKIH0KICNlbmRpZgogCi12b2lk
IFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0g
cmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwpA
QCAtMjg5Niw3ICsyODk2LDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFn
ZSogcGFnZSkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0yOTEyLDcg
KzI5MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWlu
dDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFD
YWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZvY3VzZWRPck1haW5GcmFtZSA9IFdlYkZyYW1lOjpm
cm9tQ29yZUZyYW1lKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkpOwogICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPnNlbGVj
dGlvbkFzU3RyaW5nKCk7CkBAIC0yOTIxLDcgKzI5MjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxs
YmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFN0
cmluZyByZXN1bHRTdHJpbmc7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKQpAQCAtMjkzMCw3ICsyOTMwLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJh
Y2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTI5NjIsNyArMjk2Miw3IEBAIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgcmVzb3VyCiAgICAgcmV0dXJuICZzdWJyZXNvdXJjZS0+ZGF0YSgpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTI5ODEsNyAr
Mjk4MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMzAwNCw3ICszMDA0LDcg
QEAgdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKQogICAgIG1fZHJh
d2luZ0FyZWEtPmZvcmNlUmVwYWludCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWlu
dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQoQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnRB
c3luYyhjYWxsYmFja0lEKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM4Myw3ICs0MzgzLDcgQEAg
dm9pZCBXZWJQYWdlOjplbmRQcmludGluZygpCiAgICAgbV9wcmludENvbnRleHQgPSBudWxscHRy
OwogfQogCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IFZlY3RvcjxJbnRSZWN0PiByZXN1bHRQYWdlUmVjdHM7CiAgICAgZG91YmxlIHJlc3VsdFRvdGFs
U2NhbGVGYWN0b3JGb3JQcmludGluZyA9IDE7CkBAIC00NDEyLDcgKzQ0MTIsNyBAQCB2b2lkIFdl
YlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mIHByaQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6
OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VT
aXplLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZy
YW1lLT5jb3JlRnJhbWUoKSA6IDA7CkBAIC00NDYxLDcgKzQ0NjEsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgY29ucwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFj
ayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BE
Rih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAg
IGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRm
UGFnZURhdGEpOwpAQCAtNDUxOSw3ICs0NTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNU
b1BERkltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHUK
IH0KIAogI2VsaWYgUExBVEZPUk0oR1RLKQotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNGb3JQcmlu
dGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBiZWdpblByaW50aW5nKGZyYW1lSUQsIHByaW50SW5mbyk7CiAgICAgaWYg
KG1fcHJpbnRDb250ZXh0ICYmIG1fcHJpbnRPcGVyYXRpb24pIHsKQEAgLTQ1MzAsNyArNDUzMCw3
IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZp
bmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hQcmludE9wZXJhdGlv
bihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UHJpbnRGaW5pc2hlZENh
bGxiYWNrKGVycm9yLCBjYWxsYmFja0lEKSk7CiAgICAgbV9wcmludE9wZXJhdGlvbiA9IG51bGxw
dHI7CkBAIC00ODM3LDcgKzQ4MzcsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogICAgICAg
ICBmcmFtZS5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24odGV4dCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBG
cmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogCkBAIC00ODUyLDcgKzQ4NTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdl
QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkVkaXRpbmdSYW5nZUNhbGxiYWNrKEVkaXRpbmdSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyh1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMo
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTQ4NjcsNyArNDg2Nyw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhFZGl0aW5nUmFuZ2UobG9jYXRpb24sIGxlbmd0aCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpjaGFyYWN0
ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgdWludDY0X3QgaW5kZXggPSBub3RGb3VuZDsKIApA
QCAtNDg4NSw3ICs0ODg1LDcgQEAgdm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50
QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50NjQKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soaW5kZXgsIGNhbGxiYWNrSUQp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNv
bnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdS
YW5nZSYgZWRpdGluZ1JhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBJbnRSZWN0IHJlc3VsdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZSgwLCAwKSk7CkBAIC01
NjkyLDcgKzU2OTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVy
KFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgRnJhbQogICAgIH0KIH0KIAotdm9p
ZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBpZiAoIWNvbW1vblZNKCkubV9wZXJCeXRlY29kZVByb2ZpbGVyKSB7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soU3RyaW5nKCksIGNhbGxiYWNr
SUQpKTsKQEAgLTU3MDQsNyArNTcwNCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9m
aWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTdHJpbmdDYWxsYmFjayhyZXN1bHQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBz
YW1wbGluZ1Byb2ZpbGVyID0gY29tbW9uVk0oKS5zYW1wbGluZ1Byb2ZpbGVyKCk7CkBAIC01ODg3
LDEwICs1ODg3LDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKIH0KICNl
bmRpZgogCi12b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNp
c2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2Fs
bGJhY2tJRCBsb2FkSWRlbnRpZmllciwgT3B0aW9uYWxDYWxsYmFja0lEIG5ld0NhbGxiYWNrSUQp
CiB7CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxs
YmFja0lEKTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBuZXdDYWxsYmFja0lELnRv
SW50ZWdlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRVc2VJY29uTG9hZGluZ0NsaWVudChi
b29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggY2ExMjlmYTBkOGJkOWY2NTM0MjIyMTRkZmU1YzFlMDY5MTY3
ODYwZS4uYmY0YmNlYWUyZTgxY2E3ZWZlMDI2MTlhZTM4MzZmMDI5Y2Q5MWQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiRWRpdGluZ1Jhbmdl
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmgiCkBAIC0zOSw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJPcHRpb25h
bENhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC01NDIsNTAgKzU0NCw1MCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKIAogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgp
OwotICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1
cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hl
cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlz
U3RhcnQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91
Y2goY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFu
ZGxlUG9zaXRpb24pOwotICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3Qg
Z2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
ZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwg
dWludDMyX3QgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGV4dGVuZFNlbGVj
dGlvbih1aW50MzJfdCBncmFudWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQo
KTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2
b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFu
dWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2
b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90
IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKLQotICAgIHZvaWQgcmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBv
ZmZzZXQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBz
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBtb3ZlU2Vs
ZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQz
Ml90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24o
dWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Q2FsbGJhY2tJRCk7CisKKyAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNr
SUQpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQs
IGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNv
bnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKLSAgICB2b2lkIHJl
cXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rp
b24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29u
c3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENhbGxiYWNrSUQpOworICAgIHZvaWQg
YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYWxUZXh0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN5bmNBcHBseUF1dG9jb3Jy
ZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRl
eHQsIGJvb2wmIGNvcnJlY3Rpb25BcHBsaWVkKTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVj
dGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KFN0cmluZyYgYmVmb3JlVGV4dCwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNl
bGVjdGVkVGV4dCwgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0
X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24mKTsKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBzdG9w
SW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3Qg
YWN0aW9uKTsKLSAgICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwg
dWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9v
bCBpc0ZvcndhcmQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWUo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRv
dWJsZSk7CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGlu
ZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pOwogICAgIFdlYkNvcmU6OkludFJlY3Qg
cmVjdEZvckVsZW1lbnRBdEludGVyYWN0aW9uTG9jYXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZVNl
bGVjdGlvbkFwcGVhcmFuY2UoKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQodWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQp
OwogICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFy
aXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJf
dCwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZWN0
c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50
MzJfdCwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9F
VkVOVFMpCiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKGNvbnN0IFZl
Y3RvcjxXZWJUb3VjaEV2ZW50LCAxPiYgcXVldWUpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbnRl
bnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBleGVjdXRl
RWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tJRCk7CiAKICAgICBTZWNvbmRzIGV2ZW50VGhyb3R0bGluZ0RlbGF5KCkgY29u
c3Q7CiAKQEAgLTY3MywxNyArNjc1LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRDb21wbGV4
VGV4dElucHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdGV4dElucHV0KTsKIAogICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdl
LCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UsIHVpbnQzMl90IGVkaXRpbmdSYW5nZUlz
UmVsYXRpdmVUbyA9ICh1aW50MzJfdClFZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxl
Um9vdCwgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSA9IGZhbHNlKTsKLSAgICB2b2lkIGdl
dE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxl
Y3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBjaGFyYWN0ZXJJ
bmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3Qg
RWRpdGluZ1JhbmdlJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRNYXJrZWRS
YW5nZUFzeW5jKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENh
bGxiYWNrSUQpOworICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgc2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdS
YW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5n
ZSk7CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb25Bc3luYygpOwogCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25z
LCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwID0gZmFsc2UpOwotICAgIHZvaWQgYXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3lu
Yyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGZvbnRBdFNlbGVj
dGlvbihDYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQoY29uc3QgV1RGOjpTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZXN1bHQp
OwpAQCAtNzQ2LDE4ICs3NDgsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpblByaW50aW5n
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRp
bmcoKTsKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgY29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdl
UmVjdHMsIGRvdWJsZSYgdG90YWxTY2FsZUZhY3Rvcik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdQYWdlc1RvUERGKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJf
dCBjb3VudCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNv
dW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lELCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERG
OjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRE
cmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCwg
UmVmPE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BE
Rjo6RGVsYXllZFJlcGx5PiYmKTsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHZv
aWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRGaW5pc2hQcmludE9wZXJhdGlv
bihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAg
dm9pZCBhZGRSZXNvdXJjZVJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CkBAIC05MTUsOCArOTE3LDggQEAgcHVibGljOgogICAgIFJlZjxXZWJD
b3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1l
bnRMb2FkZXImLCBXZWJDb3JlOjpGcmFtZSYpOwogCi0gICAgdm9pZCBnZXRCeXRlY29kZVByb2Zp
bGUodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKENh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChDYWxsYmFja0lE
KTsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKQogICAgIHZvaWQgaGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2so
Y29uc3QgU3RyaW5nJiBudW1iZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC05Njks
NyArOTcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5k
aWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9h
ZElkZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRVc2VJY29uTG9h
ZGluZ0NsaWVudChib29sKTsKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpAQCAtMTA1
OSwxMSArMTA2MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZ29CYWNrKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90KTsKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpOwotICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tl
eWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tl
eWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgdXBkYXRlSXNJbldpbmRvdyhib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2UpOwog
ICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZSgpOwotICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0
ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKTsKLSAgICB2b2lk
IHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7CisgICAgdm9pZCBzZXRB
Y3Rpdml0eVN0YXRlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lE
cyk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBzZXRFZGl0YWJsZShib29sKTsKIApAQCAtMTEwNCwyMCArMTEwNiwyMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdmlld1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lk
IHZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpOwogCi0gICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5n
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhDYWxs
YmFja0lEKTsKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIHJlc291cmNlVVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKLSAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBm
b3JjZVJlcGFpbnQodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB0YWtlU25hcHNob3Qo
V2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6
ZSwgdWludDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRD
b250ZW50c0FzTUhUTUxEYXRhKENhbGxiYWNrSUQpOworI2VuZGlmCisgICAgdm9pZCBnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIHJlc291cmNlVVJMLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb3JjZVJlcGFp
bnQoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBz
bmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9u
cywgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFu
Z2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBmOGExOTc1ZDU0
NTQwMTI5YTRhOTJmYjdmZWE3YWQ4YjhlODE1Njg0Li5hYzkzZjJiMTMwOTUwZmE1Y2NkNDA3ZDli
MTQwNGM5ZDMwMzM1MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjEsOCArMjEsOCBAQAogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCiBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6
OldlYktleWJvYXJkRXZlbnQgZXZlbnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2V0QWN0
aXZpdHlTdGF0ZSh1bnNpZ25lZCBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSwgVmVjdG9yPHVpbnQ2NF90PiBjYWxsYmFja0lEcykKKyAgICBTZXRJbml0aWFs
Rm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6Oldl
YktleWJvYXJkRXZlbnQgZXZlbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IFNldEFjdGl2aXR5U3RhdGUodW5zaWduZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUsIFZlY3RvcjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURz
KQogICAgIFNldExheWVySG9zdGluZ01vZGUoZW51bSBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUg
bGF5ZXJIb3N0aW5nTW9kZSkKIAogICAgIFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFj
a2dyb3VuZCkKQEAgLTU0LDM0ICs1NCwzNCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBJbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKFdlYkNvcmU6
OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlv
bihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEJsdXJBc3Npc3RlZE5vZGUoKQotICAg
IFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFu
dWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAg
ICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0
aW9uKQotICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdl
YkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVzKFdl
YkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0
dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBFeHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkpCiAgICAgU2Vs
ZWN0V29yZEJhY2t3YXJkKCkKLSAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZz
ZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0
UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAg
IFNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgTW92
ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1
aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0UG9zaXRp
b25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEJlZ2luU2VsZWN0aW9uSW5E
aXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAg
ICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgUmVxdWVzdERpY3RhdGlvbkNv
bnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50
MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFRl
eHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJf
dCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24s
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFBvc2l0aW9uQXRQb2lu
dChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQmVnaW5TZWxlY3Rpb25J
bkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5k
Qm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBSZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBSZXBsYWNlRGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJp
bmcgbmV3VGV4dCkKICAgICBSZXBsYWNlU2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJp
bmcgbmV3VGV4dCkKLSAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9y
QXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQXBwbHlBdXRvY29ycmVj
dGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKKyAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9yQXV0
b2NvcnJlY3Rpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEFwcGx5QXV0
b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKFN0
cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0KSAtPiAoYm9vbCBhdXRvY29ycmVj
dGlvbkFwcGxpZWQpCi0gICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCh1aW50NjRfdCBj
YWxsYmFja0lEKQorICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkgLT4gKFN0
cmluZyBiZWZvcmVDb250ZXh0LCBTdHJpbmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVkVGV4
dCwgU3RyaW5nIGFmdGVyQ29udGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0
aCkgCiAgICAgR2V0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pCiAgICAgUmVxdWVzdFBvc2l0aW9u
SW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qg
cmVxdWVzdCkKICAgICBTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKFdlYkNv
cmU6OkludFBvaW50IHBvaW50KQogICAgIFN0b3BJbnRlcmFjdGlvbigpCiAgICAgUGVyZm9ybUFj
dGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCi0gICAgRm9jdXNOZXh0QXNzaXN0ZWROb2Rl
KGJvb2wgaXNGb3J3YXJkLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEZvY3VzTmV4dEFzc2lz
dGVkTm9kZShib29sIGlzRm9yd2FyZCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgU2V0QXNzaXN0ZWROb2RlVmFsdWUoU3RyaW5nIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9k
ZVZhbHVlQXNOdW1iZXIoZG91YmxlIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVNlbGVjdGVk
SW5kZXgodWludDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbikKQEAgLTkx
LDEzICs5MSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBB
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykK
ICAgICBBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgQ29udGVudFNpemVDYXRlZ29y
eURpZENoYW5nZShTdHJpbmcgY29udGVudFNpemVDYXRlZ29yeSkKLSAgICBFeGVjdXRlRWRpdENv
bW1hbmRXaXRoQ2FsbGJhY2soU3RyaW5nIG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
R2V0U2VsZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEV4ZWN1dGVFZGl0
Q29tbWFuZFdpdGhDYWxsYmFjayhTdHJpbmcgbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgR2V0U2VsZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCBhbGxv
d3MpCiAgICAgSGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgdWludDY0X3QgcmVxdWVzdElEKQogICAgIFNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJv
b2wgdXNlclNjYWxhYmxlKQotICAgIEdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgR2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qg
b2Zmc2V0LCBTdHJpbmcgdGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgR2V0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGlu
dDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CisgICAgR2V0UmVj
dHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJpbmcgdGV4dCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICBTZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKQEAgLTE1NiwxOSArMTU2LDE5IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlc3RvcmVTZWxlY3Rpb25J
bkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKQogCiAgICAgIyBDYWxsYmFja3MuCi0gICAgR2V0Q29u
dGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNTdHJp
bmcoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgRU5BQkxFKE1IVE1MKQotICAg
IEdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKLSNlbmRpZgotICAg
IEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IFN0cmluZyByZXNvdXJjZVVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTb3Vy
Y2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdl
dFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZyBzY3JpcHQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgRm9yY2VSZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgR2V0
Q29udGVudHNBc01IVE1MRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNlbmRp
ZgorICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgcmVzb3VyY2VVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0
cmluZyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNvdXJj
ZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcg
c2NyaXB0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnQo
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAjIERpY3Rpb25hcnkgc3VwcG9ydC4KQEAgLTE5Miw3ICsxOTIsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBUcnlDbG9zZSgpCiAKICAgICBTZXRFZGl0YWJs
ZShib29sIGVkaXRhYmxlKQotICAgIFZhbGlkYXRlQ29tbWFuZChTdHJpbmcgbmFtZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBWYWxpZGF0ZUNvbW1hbmQoU3RyaW5nIG5hbWUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEV4ZWN1dGVFZGl0Q29tbWFuZChTdHJpbmcgbmFt
ZSwgU3RyaW5nIGFyZ3VtZW50KQogCiAgICAgRGlkUmVtb3ZlRWRpdENvbW1hbmQodWludDY0X3Qg
Y29tbWFuZElEKQpAQCAtMzIyLDE2ICszMjIsMTYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgIyBQcmludGluZy4KICAgICBCZWdpblByaW50aW5nKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pCiAgICAgRW5kUHJp
bnRpbmcoKQotICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktp
dDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgRHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQs
IHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVj
dCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
RHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZv
IHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIERyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6
OkludFNpemUgaW1hZ2VTaXplLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBE
cmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKElPUykKLSAgICBDb21wdXRlUGFnZXNGb3JQ
cmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNv
dW50KSBEZWxheWVkCisgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291bnQpIERlbGF5ZWQK
ICNlbmRpZgogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIERyYXdQYWdlc0ZvclByaW50
aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKIAogICAgICMgTWVkaWEKQEAgLTM4MywxNyArMzgz
LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFjY2VwdHNG
aXJzdE1vdXNlKGludCBldmVudE51bWJlciwgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAt
PiAoYm9vbCByZXN1bHQpCiAKICAgICBJbnNlcnRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVj
dCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5k
b0dyb3VwLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8sIGJvb2wgc3VwcHJlc3NT
ZWxlY3Rpb25VcGRhdGUpCi0gICAgR2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAg
IENoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIEdldE1hcmtlZFJhbmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgR2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
ICAgIENoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIEZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAgICAgU2V0Q29tcG9zaXRpb25Bc3luYyhTdHJpbmcgdGV4
dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBzdHJ1
Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2Ugc2VsZWN0aW9uUmFuZ2UsIHN0cnVjdCBXZWJLaXQ6OkVk
aXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlKQogICAgIENvbmZpcm1Db21wb3NpdGlvbkFzeW5j
KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBJbnNlcnREaWN0YXRlZFRleHRBc3lu
YyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFu
Z2UsIFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJu
YXRpdmVzLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQotICAgIEF0dHJpYnV0ZWRTdWJzdHJpbmdG
b3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwg
dWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0
cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpOworICAgIEZvbnRBdFNlbGVjdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCk7CiAjZW5kaWYKIAogICAgIFNldE1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUg
bWluaW11bUxheW91dFNpemUpCkBAIC00MTIsMTEgKzQxMiwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMy
X3QgcGlubmluZykKICAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCiAKLSAgICBHZXRCeXRlY29kZVByb2ZpbGUodWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRCeXRlY29kZVByb2ZpbGUoV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAKLSAgICBHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICAKLSAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBz
bmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9u
cywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVj
dCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0
aW9ucywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50IGxvY2F0aW9uKQogICAgIEltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpCkBAIC00NjIs
NyArNDYyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBT
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAotICAg
IERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElk
ZW50aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQpCisgICAgRGlkR2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihib29sIGRlY2lzaW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIs
IFdlYktpdDo6T3B0aW9uYWxDYWxsYmFja0lEIG5ld0NhbGxiYWNrSUQpCiAgICAgU2V0VXNlSWNv
bkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkKIAogI2lmIEVOQUJMRShH
QU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCBjOGM5M2IyYjkwNTg3ZGMw
Njk2ZmM1ZGE2YmFjNDQwMjNhMzc1MWMxLi4yYmIzNmY2MzhmNzJiMmNmYWY3MjVjNGI1OGRmMTQ3
ODIyMjhlNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc3RhcnRQcmludChXZWJDb3JlOjpQ
cmludENvbnRleHQqIHByaW50Q29udGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGUK
KyAgICB2b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRDb250ZXh0KiBwcmludENvbnRleHQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fcHJpbnRD
b250ZXh0ID0gcHJpbnRDb250ZXh0OwogICAgICAgICBtX2NhbGxiYWNrSUQgPSBjYWxsYmFja0lE
OwpAQCAtMzk4LDcgKzM5OCw2IEBAIFdlYlByaW50T3BlcmF0aW9uR3RrOjpXZWJQcmludE9wZXJh
dGlvbkd0ayhXZWJQYWdlKiBwYWdlLCBjb25zdCBQcmludEluZm8mIHByaW50CiAgICAgLCBtX3Bh
Z2VTZXR1cChwcmludEluZm8ucGFnZVNldHVwLmdldCgpKQogICAgICwgbV9wcmludE1vZGUocHJp
bnRJbmZvLnByaW50TW9kZSkKICAgICAsIG1fcHJpbnRDb250ZXh0KDApCi0gICAgLCBtX2NhbGxi
YWNrSUQoMCkKICAgICAsIG1feERQSSgxKQogICAgICwgbV95RFBJKDEpCiAgICAgLCBtX3ByaW50
UGFnZXNJZGxlSWQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaAppbmRleCA3NDNjYzJjZTUyNTg5
N2QxOTA3YjgyZWJmYjI0MTIzZDgyMjMwNDllLi40MDk1OTVlMjllZDRhNTJhMmM5NTkyNzUzMGVj
MjI3OWU1ZmYwYmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRQcmludChXZWJDb3JlOjpQcmludENvbnRleHQqLCB1aW50NjRfdCBjYWxsYmFj
a0lEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRDb250
ZXh0KiwgQ2FsbGJhY2tJRCkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJpbnRPcGVyYXRp
b25HdGsoV2ViUGFnZSosIGNvbnN0IFByaW50SW5mbyYpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHBy
b3RlY3RlZDoKICAgICBHUmVmUHRyPEd0a1BhZ2VTZXR1cD4gbV9wYWdlU2V0dXA7CiAgICAgUHJp
bnRJbmZvOjpQcmludE1vZGUgbV9wcmludE1vZGU7CiAgICAgV2ViQ29yZTo6UHJpbnRDb250ZXh0
KiBtX3ByaW50Q29udGV4dDsKLSAgICB1aW50NjRfdCBtX2NhbGxiYWNrSUQ7CisgICAgQ2FsbGJh
Y2tJRCBtX2NhbGxiYWNrSUQ7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IG1fY2Fpcm9Db250ZXh0Owog
ICAgIGRvdWJsZSBtX3hEUEk7CiAgICAgZG91YmxlIG1feURQSTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3NzU5MDZl
ZWU5YThhZGU0ZjQ1OTBjNWIxYjZmYjBmZDVmMGM5MmI4Li5lNzZmOWI3MWZkYWU5YjJkNDBmM2Qy
MWZjYmY4ZjMwMWEwZTc5MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBXZWJQ
YWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlv
bkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9u
Q29udGV4dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkgewpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgUmVmUHRy
PFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckJsb2NrQXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9p
bnQpCiAgICAgcmV0dXJuIHJhbmdlOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0
dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1
c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUpOwpAQCAtMTcyMiw3ICsxNzIyLDcgQEAgYm9vbCBXZWJQYWdlOjpzaG91bGRTd2l0Y2hUb0Js
b2NrTW9kZUZvckhhbmRsZShjb25zdCBJbnRQb2ludCYgaGFuZGxlUG9pbnQsIFNlbGUKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50
UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhj
b25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEludFBvaW50IHBvaW50
SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKQEAg
LTE3ODMsNyArMTc4Myw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNo
ZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzCiAgICAgfQogfQogCi12
b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJf
dCBnZXN0dXJlU3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IFZpc2libGVQb3NpdGlvbiBmcm9tUG9zaXRpb24gPSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQ
b2ludChmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhmcm9tKSk7CkBAIC0xODI0LDcg
KzE4MjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgICAgIGZy
YW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9j
dW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0
eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0
aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCkBAIC0xODUwLDcgKzE4NTAsNyBAQCBzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChj
b25zdCBWaXNpYmxlUG9zaXRpbwogICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChz
dGFydEluZGV4ICsgb2Zmc2V0LCByb290LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRS
ZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0
eSwgaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFy
aXR5LCBpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1l
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKTsKQEAgLTE4ODMsNyArMTg4Myw3IEBAIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdl
TmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvCiAg
ICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KCpzZWxlY3Rpb25SYW5nZS5nZXQoKSwgbWF0
Y2hUZXh0LCAwLCB0YXJnZXRPZmZzZXQpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRT
ZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9u
T2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gdGV4
dC5sZW5ndGgoKTsKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFZpc2libGVQb3NpdGlvbiBXZWJQYWdl
Ojp2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoY29uc3QgRnJhbWUmIGZyYW1l
CiAgICAgcmV0dXJuIGZyYW1lLnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0cmFpbmVkUG9p
bnQpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBv
aW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTkz
OCw3ICsxOTM4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXIKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rp
b24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24o
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWlu
dDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQs
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTE5NTEsNyArMTk1MSw3IEBAIHZv
aWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpW
b2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3Qg
ZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCkBA
IC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2Vs
ZWN0aW9uKGNvbnN0IEludFJlY3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbQogICAgIHJldHVybiBi
bG9ja1JlY3QuaGVpZ2h0KCkgPiBmcmFtZS52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgp
LmhlaWdodCgpICogZmFjdG9yOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
Z3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHks
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHJhbmdlRm9yR3JhbnVs
YXJpdHlBdFBvaW50KGZyYW1lLCBwb2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlKTsKQEAgLTIwMjIsMTMgKzIwMjIsMTMgQEAgdm9pZCBXZWJQYWdlOjpzZWxl
Y3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQsIHUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxs
YmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1
aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmJl
Z2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgbV9zZWxlY3Rpb25BbmNob3IgPSAoc3RhdGljX2Nhc3Q8U2VsZWN0
aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pID09IERpcmVjdGlvbkxlZnQpID8gU3RhcnQgOiBFbmQ7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKG1fc2Vs
ZWN0aW9uQW5jaG9yID09IFN0YXJ0LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9y
UG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0y
MDU3LDcgKzIwNTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JgogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBtX2lu
aXRpYWxTZWxlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZv
clBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAt
MjEwOCw3ICsyMTA4LDcgQEAgdm9pZCBXZWJQYWdlOjpjb252ZXJ0U2VsZWN0aW9uUmVjdHNUb1Jv
b3RWaWV3KEZyYW1lVmlldyogdmlldywgVmVjdG9yPFNlbGVjdGlvblIKICAgICB9CiB9CiAKLXZv
aWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwpAQCAtMjE5MCw3ICsyMTkwLDcg
QEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4
dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNl
bGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29y
cmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29u
c3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKSB7CkBA
IC0yMjM4LDE0ICsyMjM4LDE0IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9u
RGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWluCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhyZWN0c0Zv
clRleHQsIGZvbnROYW1lLmdldCgpLCBmb250U2l6ZSwgZm9udFRyYWl0cywgY2FsbGJhY2tJRCkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBj
b3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJl
Y3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgYm9vbCBjb3JyZWN0aW9uQXBwbGllZDsKICAgICBzeW5jQXBwbHlBdXRvY29ycmVj
dGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNvcnJlY3Rpb25BcHBsaWVkKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKGNvcnJlY3Rpb25BcHBs
aWVkID8gY29ycmVjdGlvbiA6IFN0cmluZygpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmV4ZWN1dGVFZGl0Q29t
bWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBTdHJpbmco
KSk7CiAgICAgaWYgKGNvbW1hbmROYW1lID09ICJ0b2dnbGVCb2xkIiB8fCBjb21tYW5kTmFtZSA9
PSAidG9nZ2xlSXRhbGljIiB8fCBjb21tYW5kTmFtZSA9PSAidG9nZ2xlVW5kZXJsaW5lIikKQEAg
LTIzOTIsNyArMjM5Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRl
eHQoRnJhbWUmIGZyYW1lLCBTdHJpbmcmIGNvbnRleHRCZWZvcmUsIFN0CiAgICAgfQogfQogCi12
b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIGNvbnRleHRCZWZvcmU7CiAgICAgU3RyaW5n
IGNvbnRleHRBZnRlcjsKQEAgLTI2NzYsNyArMjY3Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBo
YXNBc3Npc3RhYmxlRWxlbWVudChOb2RlKiBzdGFydE5vZGUsIFBhZ2UmIHBhZ2UsIGJvb2wgaXNG
b3J3CiAgICAgcmV0dXJuIG5leHRBc3Npc3RhYmxlRWxlbWVudChzdGFydE5vZGUsIHBhZ2UsIGlz
Rm9yd2FyZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wg
aXNGb3J3YXJkLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBFbGVtZW50KiBuZXh0RWxlbWVudCA9IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVk
Tm9kZS5nZXQoKSwgKm1fcGFnZSwgaXNGb3J3YXJkKTsKICAgICBtX3VzZXJJc0ludGVyYWN0aW5n
ID0gdHJ1ZTsKQEAgLTMzMDAsNyArMzMwMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hBc3lu
Y2hyb25vdXNUb3VjaEV2ZW50cyhjb25zdCBWZWN0b3I8V2ViVG91Y2hFdmVudCwgMT4mIHF1CiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdU
b1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0
X3QgY2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCiB7CiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkg
ewogICAgICAgICByZXBseS0+c2VuZCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaAppbmRleCAwMjBlZWMyZjg3MDcwZmQ3Yjc5YTc5ZTljMDFkZWMxMmM3NDQ5YjdlLi40Mjc1
YWUzMTE1YTZkMjUxODRiYzJiZGRkODJkMDRhNTVhOTk5N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllckNBUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uaCIKQEAgLTY4LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxl
Q29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0
dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFj
a0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkVHJhbnNhY3Rp
b25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxEZXN0cm95RGlz
cGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvciopOwpAQCAt
ODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bihib29sKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0OyB9CkBAIC0xMDMsNyArMTA0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJy
aWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CiAKICAgICBib29s
IGFkanVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0
YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCmluZGV4IDJkOWM5YTc4NmJjNWZmZThlMDRhMTU0OTMyNTcyODM1M2JkYzZmYzUuLjljMmU3
M2EwNmFmOTIxMTRhYjQxM2ZjM2QzYzQwNzY5MDU3MTVmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZsdXNoKCkKICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKIH0KIAot
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShB
Y3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0Rp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpCiB7CiAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBzdXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2aXNpYmxlLCBs
aWtlIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIApAQCAtNDk3LDcg
KzQ5Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvCiAgICAgfQogfQogCi12b2lkIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0
aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV9wZW5kaW5nQ2Fs
bGJhY2tJRHMuYXBwZW5kKHN0YXRpY19jYXN0PFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpU
cmFuc2FjdGlvbkNhbGxiYWNrSUQ+KGNhbGxiYWNrSUQpKTsKICAgICBzY2hlZHVsZUNvbXBvc2l0
aW5nTGF5ZXJGbHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CmluZGV4IGNmODk1NzgxM2ZhNTM4NGQxNGQ2ODJiOTE0NTk3OGYxODViNTNhZDEuLmYwZTZjNTUw
NDFhNTFhMDJhNjdhMTE5MDE3NmZhMjZlMTg0MWFmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWlu
dCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJh
Y2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVz
ZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwg
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdh
bnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpOwogCiAg
ICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKIAog
ICAgIFJ1bkxvb3A6OlRpbWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3NlbmRE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXI7Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CisgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1f
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKICAgICBib29sIG1fd2FudHNEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV92aWV3
T3ZlcmxheVJvb3RMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCmluZGV4IDQ4MGQ2ODFmOGY2YjhjZDZmMWE0MzNhMzAyZjMyYzAzN2RmMjhjMmYuLjFiMzBi
NTMxN2U4Y2M4Y2IwZjQ3NGU1ZWI3M2ZkZWM5YzdhYmE1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgW0NBVHJhbnNhY3Rp
b24gc3luY2hyb25pemVdOwogfQogCi1ib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Ojpmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQorYm9vbCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgfQogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdz
IGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQordm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0
eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwg
Y29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNr
SURzKQogewogICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRW
ZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcyk7CiAgICAgbV93YW50c0Rp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUgfD0gd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwpAQCAt
NDgyLDcgKzQ4Miw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCkKICAgICBpZiAobV93YW50c0RpZFVwZGF0ZUFj
dGl2aXR5U3RhdGUpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoKSk7CiAKLSAgICBmb3IgKHVpbnQ2NF90IGNhbGxi
YWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisgICAgZm9yIChh
dXRvIGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCiAg
ICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFj
ayhjYWxsYmFja0lEKSk7CiAKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJ
RHMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCAxZWIwNDM3MjgxMjgwY2NkMjAxNjgyNjdiNWFmZTU0YTk2
NWZjZGE4Li4wMTkyZmYxYzE1NzMwZWE5NTdjZGRhN2E0NWI4MGIyOTgwZmM2MjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3lu
Yyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmUKICAgICBmcmFtZS5l
ZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2Nh
dGlvbnMsIG51bGxwdHIpOwogfQogCi12b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdG
b3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9y
Q2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0OwogCkBA
IC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXQKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxi
YWNrKHJlc3VsdCwgcmFuZ2VUb1NlbmQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdl
Ojpmb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9u
dEF0U2VsZWN0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgZm9udE5h
bWU7CiAgICAgZG91YmxlIGZvbnRTaXplID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313779</attachid>
            <date>2017-06-24 00:28:35 -0700</date>
            <delta_ts>2017-06-24 00:38:36 -0700</delta_ts>
            <desc>Another GTK+ and WPE build fixes</desc>
            <filename>bug-173803-20170624002834.patch</filename>
            <type>text/plain</type>
            <size>175109</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
YWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhMzExZDk4YTY0OTdmMDM3ZWY3YTBjYTIwNzg0ZGY3Y2QzNWJjNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1
Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENh
bGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgQ2FsbGJhY2tJ
RCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQoY29uc3QgQ2FsbGJh
Y2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IG1faWQgJiYg
IUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IHJhd0lkICYm
ICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQgZnJvbUludGVnZXIodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJhY2tJRChy
YXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChyYXdJZCk7CisgICAgfQorCisgICAg
c3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJ
RCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVuaXF1ZUNhbGxiYWNrSUQrKyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FsbGJhY2tJRCYg
Y2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
TFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWludDY0X3QgbmV3SUQpCisgICAgICAg
IDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZXdJRCAhPSBIYXNoVHJhaXRz
PHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2Fs
bGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4gZnJpZW5kIGNs
YXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5kIGNsYXNzIE9wdGlvbmFsQ2FsbGJh
Y2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJhY2tJREhhc2g7CisgICAgZnJpZW5k
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD47CisKKyAgICB1aW50NjRfdCBt
X2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGNhbGxiYWNrSUQpIHsgcmV0dXJu
IGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBiKSB7IHJl
dHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6Q2Fs
bGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxiYWNrSUQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpD
YWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OkNhbGxiYWNr
SUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhhc2g7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTcyZTBj
ZTY1ZDYyZDZlMGFmYjYzYmYwZWMyNThkOTQzZGE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBPcHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
ZXhwbGljaXQgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisg
ICAgICAgIDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJ
RCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
SGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCB0b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6Omlz
VmFsaWRDYWxsYmFja0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNr
SUQobV9pZCk7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFj
a0lEKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVp
bnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lk
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsg
SGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDBhYTRmYjE1Njk5NjRiNTM5NDhkYTJiNTMyZDNkNmIzMjJiZmEyOGYuLjJhNDVmYTI2
MGE4ZTUwMzEyNmYxM2Q5MTkyOTA3ZjBlZTM1ZDRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb25faAogI2RlZmluZSBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0y
NjEsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQo
dWludDY0X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklE
OyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICB0
eXBlZGVmIENhbGxiYWNrSUQgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZlY3Rv
cjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tJRHM7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlv
bkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2Fs
bGJhY2tJRHMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBmNjEwODE3NzMyNDUwY2MyYTM4ZTQ2MTljOWE0OWRkZDNhNmYyZTVhLi4wYWI4ZjMy
NTA2ZjVkODc5ODdkODdlNzcxODcyNDQzYWM4NzE1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNh
bGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+CiAgICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAog
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkK
KyAgICAgICAgLCBtX2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAg
ICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7
Ci0gICAgfQotCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwor
ICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTcz
LDEzIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBj
YWxsYmFja01hcCwgQ2FsbGJhY2tCYXNlOjpFcnJvCiAKIGNsYXNzIENhbGxiYWNrTWFwIHsKIHB1
YmxpYzoKLSAgICB1aW50NjRfdCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKKyAg
ICBDYWxsYmFja0lEIHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlu
cyhjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAg
ICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybiBjYWxsYmFja0lEOwogICAgIH0KIApAQCAtMjAxLDE4ICsxOTQsMTggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90
IHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICBDYWxsYmFj
a0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwg
VC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7CiAg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+Ci0gICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBSZWZQdHI8VD4gdGFrZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFja0lEKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAg
IGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKICAgICAgICAgaWYgKCFi
YXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyOSw0ICsyMjIsNDUgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9t
YXA7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlPgorY2xhc3MgU3BlY2lm
aWNDYWxsYmFja01hcCB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNr
VHlwZT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7Cisg
ICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IENhbGxiYWNrVHlwZTo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgUmVmUHRyPENhbGxiYWNrVHlwZT4gdGFrZShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
YXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoYmFzZS5sZWFrUmVmKCktPnRlbXBsYXRlIGFzPENhbGxiYWNrVHlwZT4oKSk7CisgICAgfQor
CisgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX21hcCwgZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9tYXA7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTU3OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgx
MWY4NDJlMGYxYS4uNDA4MmViOWZlZTdlYzRhNmE5Y2Y4MzI3OWNiM2Y3MjRmOTgwMjhmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFn
ZXJDbGllbnRCYXNlKiBjbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQogewotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2Fy
cmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBv
YnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2llT2JzZXJ2ZXJz
LnZhbHVlcygpKSB7CkBAIC05MSwxOCArOTIsMTggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlD
YWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTExNywx
NCArMTE4LDExIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwot
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9hcnJheUNhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE0Nyw2OSArMTQ1LDUxIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAg
YXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25J
RCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBj
YWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENv
b2tpZUFjY2VwCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVk
IHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgog
ICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9u
ZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhl
bTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNp
c3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkp
OwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3Zv
aWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKGNh
bGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGlj
eSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKaW5kZXggODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIyZjU1
NC4uMGFlYTJjNWIwZDkzMzk5NjkzZWMyMjYzNjU4NDU0YTA4NmFjNWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtMTA3LDEz
ICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0g
ICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0
OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxs
YmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0Nh
bGxiYWNrTWFwPFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9s
ZWdhY3lDb29raWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxLi5hNWQ3N2I5NjI5
OTJmMWQzZjZkZWY4NDg3NTFiYTk2MWU1NTY5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDEzICsyMSwxMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewotICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAK
LSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIERpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAg
IERpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENv
b2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0YmZhZTBlNzRhYzkxMTk3MTNkMGY2MmY4Y2Y0NTlmNTcwZDkwMmZlLi43ODk1NjE4NzNl
OGQzN2Q1MTNhZTEwOWU1OWRhODA3ZWZmMjgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0x
NjI4LDcgKzE2MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXVEY6OkZ1bmN0aW9uPAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODU2LDcgKzI4NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg4MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0y
ODkyLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
QEAgLTI5MTgsNyArMjkxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKQEAgLTI5MzAsNyArMjkzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTUyLDcgKzI5NTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zMDA3LDcgKzMwMDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAg
ICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdp
bmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOyAKIH0KQEAgLTMyNDMsNyArMzI0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ewotICAgIEhhc2hTZXQ8dWludDY0X3Q+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOworICAgIEhhc2hTZXQ8
Q2FsbGJhY2tJRD4gbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzID0gV1RGTW92ZShtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFja0lE
IDogbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCkpCiAg
ICAgICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwpAQCAtNTAwMCw3ICs1MDAxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTUwMTEsNyArNTAxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRh
dGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUw
MjIsNyArNTAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW50NjRfCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJp
dG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDMzLDcgKzUwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCB1aQogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywg
dWludDY0X3QgY2FsbGJhY2tJCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNjEsNyArNTA2Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZh
bHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwODEs
NyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwOTIsNyArNTA5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVj
dHMsIGRvdWJsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShw
YWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQgc3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTEwMyw3ICs1
MTA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJl
c3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQo
KSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFu
Z2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjptYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC01MTkyLDcgKzUxOTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtNTk2MSw3ICs1OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwpA
QCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQo
KSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC01OTg3LDcgKzU5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5
OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02MzA3LDcgKzYzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzczLDcgKzYzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlT
dGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pCiAgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApAQCAtNjc0
Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRy
PFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGljb24sIHVpbnQ2NF8KICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAo
Ym9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRfdCBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpIDog
MDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSWRl
bnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NDQ1ZDUzMmRjNTA4
ZWFkMGYwOTNkMzk5ZGMzOWY5NDUyOTMxOWU1Li5jZTJlZjIwZmRlZmE5ODRkNTM2OTkzOGZjYjJi
NDgyZWNhODU3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRX
aW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzMgKzE0NDks
MzMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0
X3QpOwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0
X3QpOwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBi
b29sLCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRf
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1h
Y2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0
X3QpOworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAg
IHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0
LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9h
dCBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZv
aWQgc2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWlu
dDY0X3QpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2Fs
bGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94
eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxh
Z3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWlu
ZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhNzkxZGFiODBkM2NhNjUxN2FmODdhMDBkYjk4MzA0YTk0OGVhZDY4Li43
ZTAyZjRlZWMwOTMyNWZiNjI0NjQ5M2QyYjI0YmI3NTk5MzAyZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1NCwyNyAr
MTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKLSAg
ICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVuc2ln
bmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnRO
YW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgR2VzdHVyZUNh
bGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEF1dG9jb3Jy
ZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywg
U3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcg
YmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmlu
ZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNl
bGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRv
TGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgRHJhd1RvUERGQ2FsbGJh
Y2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
U2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2Vs
ZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERyYXdUb1BERkNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1
bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFBy
aW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9y
KQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBG
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDc4ZjZhOGZiODNlNjFmYjM2OGVkZDAzY2YxOGE0OWVlODEzMTdk
ZDkuLmMxYmE3NjRmMDE1NDI3MTFlMjlhZDVmOWEwNzM0Mjc3NjgyOGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNo
ZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWMKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBv
aW50LCB0b3VjaGVzLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgcmVjdHMs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50NjRfdCBmb250VHJh
aXRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFp
dHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlY3RzLCBm
b250TmFtZSwgZm9udFNpemUsIGZvbnRUcmFpdHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25z
dCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAgICAgCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2lu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0K
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNo
ZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRBc3Npc3RlZE5vZGUoaXNGb3J3YXJkLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHVpbnQzMl90IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBN
ZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5m
bywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fcGFnZUlEKTsKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBkYzhkYTVhYmJhMThjYTNhYjYyZDQy
OWZiMDQ3MTUyZDg0ZWU0YzEyLi4yYTU5MGJmNDg4Y2M3MzhmMmVkYjIwMmY3ZDI0NThiOGE3MzNm
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KQEAgLTI4MSwxMCArMjgxLDEwIEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIElQQ0NhCiAgICAgICAg
ICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgY29udGV4dC0+
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICBf
d2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludElu
Zm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVy
KGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7Ci0gICAgX2V4cGVj
dGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBf
ZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKQEAgLTUyMSwxMSArNTIx
LDExIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50
ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgICAgICAg
ICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ssIHNjYWxlZFByaW50aW5nUmVjdCk7
CiAKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKIAogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRv
SW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRlNzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYz
YzgwZjQyZGU1OTIuLmYxZmJiZGJjNWZmN2E0MjdjNTc4MjU0OWNiYzk4YmZiODAxMjY3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRl
ZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYg
c3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNl
bGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxl
Rm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM3ZWU1ODg1MDdiNjVkODhjOTA3ODQ2MDUzOWMxYTE0ODhi
OWVjNDUuLjZhYjEwMzE5NjRhOWMwYjk1ZWY0Y2FmOTI1NGZmZDE4MjI3MjkxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDkyOSw4IEBACiAJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQ0YxODYz
NzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgKi8sCiAJCQkJQkMzMDY1RjkxMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAv
KiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIg
LyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyog
Q2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIENoaWxk
UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3NTQzYTI5ZDhiZWI4Y2Vh
MzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1Li4xMjEzZDNhODczYmVmYzYzMzFiNWYwZDE1MjgzMDcy
YjA5MjJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGhvc3RuYW1lczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lv
bik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKQEAgLTg3LDE2ICs4NywxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9u
LCB0aW1lKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPENvb2tp
ZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMDUsNyArMTA0LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgdWludDY0X3QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsK
IAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAg
ICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFj
a0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDEyYWU1OTE3NGQ5Yjhi
YTRiNjkwY2JhYWE2NDA3YzdlNmQxYTllYjUuLjg0NGY3YTNiNDZkYTExZmY5NjJiZmZiMTRlOWRj
N2Q5ZWRmZGJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIz
NDUuLjVmZWVmYTcxMmM4MmRmZmMxZDQyNjEyNDlkMGRjYzI3NzdmNTE4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxOSArMjQsMTkgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFdlYkNvb2tpZU1hbmFnZXIgewotICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAotICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
U2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3Vt
ZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
R2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTA4N2E4YTMxMzQ3ZGVjZGQyZWFkMDljMTlh
Mjc4OTBjMWRmYzU4YS4uMWM1NWNhYmUzNjcwMGIxM2VmYmI4NWUzN2RmZWM1NWY0NzFjYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MTAsMTYgKzE4MTAsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5r
SWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9
KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYS5jcHAKaW5kZXggYmY1M2U2YzhhMjQ5MzM5ZmZlZWRkODQyZjIzMDBiNmI4ZWFm
ZDRiYS4uYWMyZTRmMzZiNTAxODY0ZWJlYTI0NjNmODQ5MjlhMzAyZTYzZGE2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50KCkKICAgICB9CiB9CiAKLWJvb2wgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tEIGNhbGxiYWNr
SUQpCiB7CiAgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPmZv
cmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpOwogfQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQg
QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkK
IH0KICNlbmRpZgogCi12b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYpCit2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCwgY29uc3QgVmVjdG9y
PENhbGxiYWNrSUQ+JikKIHsKICAgICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkgewogICAgICAgICBpZiAobV93ZWJQYWdlLmlzVmlzaWJsZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmgKaW5kZXggMmYxOTEzZTAwNjhmNzMzYTc0Y2FlNGMxMTQ3NTBjY2ZmOTJkOTAyMS4uM2I2
NDk0NzJkNGFjNzBiNzI1ZDg4MTcxM2I0MmJiYzc1MzAzZmZiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YS5oCkBAIC00OCw3ICs0OCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGxheWVyVHJlZVN0YXRl
SXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNGcm96
ZW47IH0KICAgICBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQo
KSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNr
SUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHNldFBhaW50aW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKICAg
ICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVy
cmlkZTsKQEAgLTY4LDcgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVzdHJveU5hdGl2
ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhib29sJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyog
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4m
IC8qIGNhbGxiYWNrSURzICovKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5
R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgbGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDcyOTBhZmY2YjZiODZmNmVmNTE2ZGMxOTc0YjBiZjZhYmUzNmM3MWQu
LjcyOWVlYjQyZTdiN2M0Y2Y4MDNmNjhhMjAzMjA4NmM3OWY3YmY5YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApA
QCAtMTI3LDE0ICsxMjcsMTQgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNl
UmVwYWludCgpCiAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsK
IH0KIAotYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCitib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VS
ZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHNjaGVkdWxlTGF5ZXJG
bHVzaCgpOwogCiAgICAgLy8gV2Ugd2FudCBhIGNsZWFuIHJlcGFpbnQsIG1lYW5pbmcgdGhhdCBp
ZiB3ZSdyZSBjdXJyZW50bHkgd2FpdGluZyBmb3IgdGhlIHJlbmRlcmVyCiAgICAgLy8gdG8gZmlu
aXNoIGFuIHVwZGF0ZSwgd2UnbGwgaGF2ZSB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoIHdoZW4g
aXQncyBkb25lLgogICAgIEFTU0VSVCghbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEKTsK
LSAgICBtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQgPSBjYWxsYmFja0lEOworICAgIG1f
Zm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCA9IE9wdGlvbmFsQ2FsbGJhY2tJRChjYWxsYmFj
a0lEKTsKICAgICBtX2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IG1fc2NoZWR1
bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXI7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjcs
OCArMTY3LDggQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFt
ZSgpCiAgICAgICAgIC8vIGFyZW4ndCBuZWVkZWQuIElmIHRoZXkgYXJlLCB0aGUgY2FsbGJhY2sg
d2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoaXMgZnVuY3Rpb24KICAgICAgICAgLy8gaXMgY2FsbGVk
IGFmdGVyIHRoZSBuZXh0IHVwZGF0ZS4KICAgICAgICAgaWYgKCFtX2ZvcmNlUmVwYWludEFzeW5j
Lm5lZWRzRnJlc2hGbHVzaCkgewotICAgICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJ
RCkpOwotICAgICAgICAgICAgbV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgfTsKKyAgICAgICAgICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2Zv
cmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQuY2FsbGJhY2tJRCgpKSk7CisgICAgICAgICAgICBt
X2ZvcmNlUmVwYWludEFzeW5jID0geyBPcHRpb25hbENhbGxiYWNrSUQoKSAsIGZhbHNlIH07CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9mb3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNo
Rmx1c2ggPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGUyYzlmYTJiODhiMGM4Mzc3YTNhZDk5
ODg2ZGNmMGMwODk3YjVmYzAuLjc0YmI1ZDM1OWJmMjNmYmNlNjk2M2Q0ZmJkZGM5YTAyYzNkZWFk
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgIk9wdGlv
bmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUxLDcgKzUyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0
ZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICBi
b29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOworICAg
IGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
aXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVycmlkZTsKQEAg
LTg1LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNXYWl0aW5nRm9yUmVuZGVyZXIg
eyB0cnVlIH07CiAgICAgYm9vbCBtX3NjaGVkdWxlZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyIHsg
ZmFsc2UgfTsKICAgICBzdHJ1Y3QgewotICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEIHsgMCB9
OworICAgICAgICBPcHRpb25hbENhbGxiYWNrSUQgY2FsbGJhY2tJRDsKICAgICAgICAgYm9vbCBu
ZWVkc0ZyZXNoRmx1c2ggeyBmYWxzZSB9OwogICAgIH0gbV9mb3JjZVJlcGFpbnRBc3luYzsKICAg
ICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRlZExheWVyVHJlZUhvc3Q+IG1fbGF5ZXJGbHVzaFRp
bWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAppbmRleCA5MDg1NzU2NWU1MzY2ZTRhMDgwMTJkNjVjNzJkNjlmODg1NTI0NjZiLi5hN2RhMzgy
MGM0NGQxYTkyMjZkY2U2NzkwNjA4NDY2MGVhNDk4NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTog
VGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KICAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tn
cm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVw
YWludCgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCAv
KmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZm9yY2VS
ZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
bGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3QgeyByZXR1cm4gMDsgfQpA
QCAtMTE2LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFm
dGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAq
LywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVj
dG9yPENhbGxiYWNrSUQ+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01v
ZGUoTGF5ZXJIb3N0aW5nTW9kZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFya0xheWVyc1Zv
bGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTc0LDcg
KzE3NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFj
a0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCkg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggYjA3NmYzNGMxYWM2
OGMzOWQwZDgwMGYzZWFhYzQwNjVmMDU3MGVlZS4uNmY1OGZlOGUyYTFmNWE0OTE3MDc3OTc1NGE1
YjE3YmFmYjJlODczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgpAQCAtMzcsNyArMzcsNyBAQCBtZXNz
YWdlcyAtPiBEcmF3aW5nQXJlYSB7CiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1
aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5LCBkb3VibGUgc3RhcnRUaW1lKQogICAgIEFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXkpCiAgICAg
Ci0gICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
QWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYg
UExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRl
eCAyZjU3MTExMTAzYzdlZWY4Y2JiZGZkMGI5Zjg3MjU4Y2U2Yjg4YWRjLi5lMmMwNzMzMzk0MjM5
YjM4NGMwNjVjODc5ZGQxYTg1YmI0OGFhZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogCisjaW5j
bHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1TY3JlZW4uaD4KQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVk
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQg
Zm9yY2VSZXBhaW50KCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1
aW50NjRfdCAvKmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXpl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdl
ZCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGFjMzBkOWJhMTA2NDNkMDhjZTMyMjhlNjdmMjc5OGFjZTFlZDE1MGYuLjJjYmEz
ZmNkMDA5YmE1ZTNkZGNmZGYyYmQ2M2Y0NWM4NmZjNGQxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lk
IFdlYlBhZ2U6OmVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMoKQogdm9pZCBX
ZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewogICAgIGlmIChtX2FjdGl2aXR5U3RhdGUgIT0gcGFyYW1ldGVycy5hY3Rp
dml0eVN0YXRlKQotICAgICAgICBzZXRBY3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlT
dGF0ZSwgZmFsc2UsIFZlY3Rvcjx1aW50NjRfdD4oKSk7CisgICAgICAgIHNldEFjdGl2aXR5U3Rh
dGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBmYWxzZSwgVmVjdG9yPENhbGxiYWNrSUQ+KCkp
OwogICAgIGlmIChtX2xheWVySG9zdGluZ01vZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdN
b2RlKQogICAgICAgICBzZXRMYXllckhvc3RpbmdNb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5n
TW9kZSk7CiB9CkBAIC0xOTIxLDcgKzE5MjEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvb3RlckJh
bm5lckhlaWdodEZvclRlc3RpbmcoaW50IGhlaWdodCkKIAogI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCiAKLXZvaWQgV2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qgc25hcHNob3RSZWN0LCBJ
bnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRSZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6
ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBz
aG90T3B0aW9ucz4ob3B0aW9ucyk7CiAgICAgc25hcHNob3RPcHRpb25zIHw9IFNuYXBzaG90T3B0
aW9uc1NoYXJlYWJsZTsKQEAgLTI0MjIsNyArMjQyMiw3IEBAIHZvaWQgV2ViUGFnZTo6a2V5RXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVudCkKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
a2V5Ym9hcmRFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dmFs
aWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmRO
YW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYm9vbCBpc0VuYWJsZWQgPSBmYWxz
ZTsKICAgICBpbnQzMl90IHN0YXRlID0gMDsKQEAgLTI2MjUsNyArMjYyNSw3IEBAIHZvaWQgV2Vi
UGFnZTo6dmlld1dpbGxFbmRMaXZlUmVzaXplKCkKICAgICAgICAgdmlldy0+d2lsbEVuZExpdmVS
ZXNpemUoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJk
LCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVu
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJv
b2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYgZXZlbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjY5MCw3ICsyNjkwLDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNp
YmlsaXR5RGlkQ2hhbmdlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlT
dGF0ZShBY3Rpdml0eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpCit2
b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZp
dHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxD
YWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7CiAgICAgQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hh
bmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0
YXRlID0gYWN0aXZpdHlTdGF0ZTsKQEAgLTI4NDEsNyArMjg0MSw3IEBAIEtleWJvYXJkVUlNb2Rl
IFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9h
cmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxs
IDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vz
c1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJl
ZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRv
bid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9uLgpAQCAtMjg2Miwx
NCArMjg2MiwxNCBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRAogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBoYWRFeGNl
cHRpb24sIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRDb250
ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldENvbnRl
bnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFN0cmluZyByZXN1bHRT
dHJpbmcgPSBtX21haW5GcmFtZS0+Y29udGVudHNBc1N0cmluZygpOwogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lE
KSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCi12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNN
SFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNB
c01IVE1MRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBidWZmZXIgPSBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5nZXQoKSk7CiAKQEAgLTI4ODAs
NyArMjg4MCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRf
dCBjYWxsYmFja0lEKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSByZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbigpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJh
Y2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CkBAIC0yODk2LDcgKzI4OTYsNyBAQCBzdGF0
aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdlKQogICAgIHJldHVybiAwOwog
fQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTI5MTIsNyArMjkxMiw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNh
bGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNT
dHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSog
Zm9jdXNlZE9yTWFpbkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUobV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSk7CiAgICAgU3RyaW5nIHJlc3VsdFN0
cmluZyA9IGZvY3VzZWRPck1haW5GcmFtZS0+c2VsZWN0aW9uQXNTdHJpbmcoKTsKQEAgLTI5MjEs
NyArMjkyMSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
dHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsKICAgICBp
ZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJh
bWVJRCkpCkBAIC0yOTMwLDcgKzI5MzAsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNr
SUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFt
ZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewpA
QCAtMjk2Miw3ICsyOTYyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNl
RGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKICAgICByZXR1cm4g
JnN1YnJlc291cmNlLT5kYXRhKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJp
bmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZy
b21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5n
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAtMjk4MSw3ICsyOTgxLDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZVUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhk
YXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IGRhdGE7CkBAIC0zMDA0LDcgKzMwMDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmZvcmNlUmVw
YWludFdpdGhvdXRDYWxsYmFjaygpCiAgICAgbV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50KCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
aWYgKG1fZHJhd2luZ0FyZWEtPmZvcmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpKQogICAgICAg
ICByZXR1cm47CkBAIC00MzgzLDcgKzQzODMsNyBAQCB2b2lkIFdlYlBhZ2U6OmVuZFByaW50aW5n
KCkKICAgICBtX3ByaW50Q29udGV4dCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlc3VsdFBh
Z2VSZWN0czsKICAgICBkb3VibGUgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nID0g
MTsKQEAgLTQ0MTIsNyArNDQxMiw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdJbXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpCiB9CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgaW1hZ2VTaXplLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lID8gZnJhbWUtPmNvcmVGcmFtZSgpIDogMDsKQEAg
LTQ0NjEsNyArNDQ2MSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpJbWFnZUNhbGxiYWNrKGhhbmRsZSwgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWlu
dDMyX3QgY291bnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CiAgICAgZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1l
SUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQYWdlRGF0YSk7CkBAIC00NTE5LDcgKzQ1
MTksNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbCh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdQogfQogCiAjZWxpZiBQTEFURk9STShHVEsp
Ci12b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpkcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGJlZ2luUHJpbnRp
bmcoZnJhbWVJRCwgcHJpbnRJbmZvKTsKICAgICBpZiAobV9wcmludENvbnRleHQgJiYgbV9wcmlu
dE9wZXJhdGlvbikgewpAQCAtNDUzMCw3ICs0NTMwLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFn
ZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFj
a0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpQcmludEZpbmlzaGVkQ2FsbGJhY2soZXJyb3IsIGNhbGxiYWNrSUQp
KTsKICAgICBtX3ByaW50T3BlcmF0aW9uID0gbnVsbHB0cjsKQEAgLTQ4MzcsNyArNDgzNyw3IEBA
IHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiByZXBsYWNlbWVuCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbmZpcm1D
b21wb3NpdGlvbih0ZXh0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlQXN5bmMo
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKQEAgLTQ4NTIsNyArNDg1Miw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lE
KQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdGluZ1JhbmdlQ2FsbGJhY2so
RWRpdGluZ1JhbmdlKGxvY2F0aW9uLCBsZW5ndGgpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIApAQCAtNDg2Nyw3ICs0ODY3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxl
Y3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkVkaXRpbmdSYW5nZUNhbGxiYWNrKEVkaXRpbmdSYW5nZShsb2NhdGlvbiwg
bGVuZ3RoKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4
Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICB1aW50NjRfdCBpbmRleCA9IG5vdEZvdW5kOwogCkBAIC00ODg1LDcgKzQ4ODUsNyBAQCB2b2lk
IFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHVpbnQ2NAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5z
aWduZWRDYWxsYmFjayhpbmRleCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5n
UmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEludFJlY3QgcmVzdWx0KEludFBv
aW50KDAsIDApLCBJbnRTaXplKDAsIDApKTsKQEAgLTU2OTIsNyArNTY5Miw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2FkZXImIGRvY3Vt
ZW50TG9hZGVyLCBGcmFtCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJv
ZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2Zp
bGUoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmICghY29tbW9uVk0oKS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
dHJpbmdDYWxsYmFjayhTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwpAQCAtNTcwNCw3ICs1NzA0LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdCwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRw
dXQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2FtcGxpbmdQcm9maWxl
ck91dHB1dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BS
T0ZJTEVSKQogICAgIFNhbXBsaW5nUHJvZmlsZXIqIHNhbXBsaW5nUHJvZmlsZXIgPSBjb21tb25W
TSgpLnNhbXBsaW5nUHJvZmlsZXIoKTsKQEAgLTU4ODcsMTAgKzU4ODcsMTAgQEAgdm9pZCBXZWJQ
YWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgdWludDY0X3QgbmV3Q2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBP
cHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byogZG9jdW1l
bnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihk
ZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSUQpOworICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZp
ZXIudG9JbnRlZ2VyKCksIG5ld0NhbGxiYWNrSUQudG9JbnRlZ2VyKCkpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjYTEy
OWZhMGQ4YmQ5ZjY1MzQyMjIxNGRmZTVjMWUwNjkxNjc4NjBlLi5iZjRiY2VhZTJlODFjYTdlZmUw
MjYxOWFlMzgzNmYwMjljZDkxZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1
bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNhbGxi
YWNrSUQuaCIKICNpbmNsdWRlICJFZGl0aW5nUmFuZ2UuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFn
ZUZ1bGxTY3JlZW5DbGllbnQuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
IlBsdWdpbi5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKQEAgLTU0Miw1MCArNTQ0LDUwIEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3Bl
Y3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwogCiAgICAgdm9pZCBibHVyQXNzaXN0ZWROb2RlKCk7Ci0gICAgdm9pZCBzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQz
Ml90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0
YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCk7CiAgICAg
dm9pZCB1cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3NpdGlvbik7Ci0gICAgdm9pZCBz
ZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2Vz
dHVyZVN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhUd29U
b3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5
KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2FyZCgpOwotICAgIHZvaWQgbW92ZVNlbGVjdGlv
bkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51
bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0Qm91
bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rp
b24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBiZWdpblNlbGVjdGlvbkluRGly
ZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotCi0gICAgdm9p
ZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IG1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0
eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lE
KTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxi
YWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3Vu
ZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKworICAgIHZvaWQg
cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXBsYWNlRGlj
dGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsK
ICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25z
dCBTdHJpbmcmIG5ld1RleHQpOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShj
b25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29y
cmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0
IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgYm9vbCYgY29ycmVjdGlvbkFwcGxp
ZWQpOwotICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBnZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoU3RyaW5nJiBiZWZvcmVUZXh0
LCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGFmdGVy
VGV4dCwgdWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdl
dFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qm
LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpOwogICAgIHZvaWQgcmVxdWVzdFBv
c2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsK
ICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHN0b3BJbnRlcmFjdGlvbigpOwogICAgIHZvaWQg
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pOwotICAgIHZvaWQgZm9jdXNO
ZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91YmxlKTsKICAgICB2b2lkIHNldEFzc2lz
dGVkTm9kZVNlbGVjdGVkSW5kZXgodWludDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNl
bGVjdGlvbik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0Rm9yRWxlbWVudEF0SW50ZXJhY3Rp
b25Mb2NhdGlvbigpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uQXBwZWFyYW5jZSgpOwotICAg
IHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IGdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5n
ZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElE
KTsKLSAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVp
bnQzMl90LCBpbnQzMl90LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlY3Rz
QXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90LCBjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0
aW9uT2Zmc2V0KHVpbnQzMl90LCBpbnQzMl90LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90LCBjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0lEKTsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2b2lkIGRpc3BhdGNo
QXN5bmNocm9ub3VzVG91Y2hFdmVudHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBx
dWV1ZSk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhj
b25zdCBTdHJpbmcmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGV4ZWN1dGVFZGl0
Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKIAogICAgIFNl
Y29uZHMgZXZlbnRUaHJvdHRsaW5nRGVsYXkoKSBjb25zdDsKIApAQCAtNjczLDE3ICs2NzUsMTcg
QEAgcHVibGljOgogICAgIHZvaWQgc2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRf
dCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5w
dXQpOwogCiAgICAgdm9pZCBpbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAg
PSBmYWxzZSwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvID0gKHVpbnQzMl90KUVk
aXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290LCBib29sIHN1cHByZXNzU2VsZWN0
aW9uVXBkYXRlID0gZmFsc2UpOwotICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRf
dCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKKyAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBjaGFy
YWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRp
dGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbkFzeW5jKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJs
aW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1JhbmdlJiBzZWxlY3Rpb25SYW5nZSwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKTsKICAgICB2b2lkIGNvbmZpcm1Db21w
b3NpdGlvbkFzeW5jKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0
YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVw
bGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
PiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAg
PSBmYWxzZSk7Ci0gICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGF0dHJpYnV0
ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKENhbGxiYWNrSUQpOwogI2VuZGlm
CiAKICAgICB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBXVEY6OlN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGJvb2wmIHJlc3VsdCk7CkBAIC03NDYsMTggKzc0OCwxOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwotICAgIHZvaWQgY29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
LCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlJiB0b3RhbFNjYWxl
RmFjdG9yKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludElu
Zm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVE
YXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJik7CisgICAg
dm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYpOwogI2Vu
ZGlmCiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50
aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZFJlc291cmNlUmVxdWVzdCh1
bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTkxNSw4
ICs5MTcsOCBAQCBwdWJsaWM6CiAgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRh
dGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1l
Jik7CiAKLSAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQodWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRT
YW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQpOwogICAgIAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAg
dm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKQEAgLTk2OSw3ICs5NzEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1
aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgT3B0aW9uYWxDYWxs
YmFja0lEKTsKICAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wpOwogCiAjaWYg
RU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0xMDU5LDExICsxMDYxLDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBnb0JhY2sodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAg
dm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3Qp
OwogICAgIHZvaWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgdm9pZCBzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93
KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CiAgICAgdm9pZCB2aXNpYmlsaXR5RGlkQ2hh
bmdlKCk7Ci0gICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgY2FsbGJhY2tJRHMpOwotICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25z
dCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKTsKKyAgICB2b2lkIHZhbGlkYXRlQ29t
bWFuZChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxl
KGJvb2wpOwogCkBAIC0xMTA0LDIwICsxMTA2LDIwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aWV3
V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAgIHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7
CiAKLSAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShNSFRN
TCkKLSAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0jZW5kaWYKLSAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJv
bUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U291cmNl
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90
UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNNSFRNTERhdGEoQ2FsbGJh
Y2tJRCk7CisjZW5kaWYKKyAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgZ2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKKyAgICB2b2lk
IHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50
U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIAogICAgIHZv
aWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAg
IHZvaWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IGY4YTE5NzVkNTQ1NDAxMjlhNGE5MmZiN2ZlYTdhZDhiOGU4
MTU2ODQuLmFjOTNmMmIxMzA5NTBmYTVjY2Q0MDdkOWIxNDA0YzlkMzAzMzUzM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0yMSw4ICsyMSw4IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewotICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJv
b2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZXRBY3Rpdml0eVN0YXRlKHVuc2lnbmVkIGFjdGl2
aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBWZWN0b3I8dWludDY0
X3Q+IGNhbGxiYWNrSURzKQorICAgIFNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wg
aXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBldmVudCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNpZ25l
ZCBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgVmVjdG9y
PFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRHMpCiAgICAgU2V0TGF5ZXJIb3N0aW5nTW9k
ZShlbnVtIFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogCiAgICAg
U2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQpAQCAtNTQsMzQgKzU0LDM0
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluc3BlY3Rvck5v
ZGVTZWFyY2hNb3ZlZFRvUG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBJ
bnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9p
bnQpCiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCi0gICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJl
VHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhUb3Vj
aGVzKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlU2VsZWN0
aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMs
IGJvb2wgYmFzZUlzU3RhcnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVw
ZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50
MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pCi0gICAgU2VsZWN0V2l0aFR3b1Rv
dWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgU2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2Vi
Q29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEV4dGVuZFNlbGVjdGlv
bih1aW50MzJfdCBncmFudWxhcml0eSkKICAgICBTZWxlY3RXb3JkQmFja3dhcmQoKQotICAgIE1v
dmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rp
b24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICBSZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIE1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQo
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBv
aW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVj
dGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBV
cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJlcXVlc3REaWN0
YXRpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJlcGxhY2VE
aWN0YXRlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VT
ZWxlY3RlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQotICAgIFJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLSAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBT
dHJpbmcgb3JpZ2luYWxUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJlcXVlc3RBdXRv
Y29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVj
dGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgU3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBv
cmlnaW5hbFRleHQpIC0+IChib29sIGF1dG9jb3JyZWN0aW9uQXBwbGllZCkKLSAgICBSZXF1ZXN0
QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdEF1
dG9jb3JyZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBH
ZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSAtPiAoU3RyaW5nIGJlZm9yZUNvbnRleHQsIFN0cmlu
ZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJDb250ZXh0LCB1
aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKSAKICAgICBHZXRQb3NpdGlvbkluZm9y
bWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVl
c3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBp
bmZvcm1hdGlvbikKICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KQogICAgIFN0YXJ0SW50ZXJh
Y3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAg
U3RvcEludGVyYWN0aW9uKCkKICAgICBQZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFj
dGlvbikKLSAgICBGb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgRm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1ZShT
dHJpbmcgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUgdmFs
dWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9v
bCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKQpAQCAtOTEsMTMgKzkxLDEzIEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogICAgIEFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKICAgICBDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKFN0cmluZyBjb250ZW50
U2l6ZUNhdGVnb3J5KQotICAgIEV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhTdHJpbmcg
bmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2
NF90IGNhbGxiYWNrSUQpCisgICAgRXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmlu
ZyBuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25D
b250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEFsbG93c01lZGlh
RG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAgICBIYW5kbGVUd29GaW5nZXJU
YXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAg
ICAgU2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCi0gICAgR2V0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJp
dHksIGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBHZXRSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlv
bk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRl
eHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCk7CiAjZW5kaWYKIAogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250
cm9sbGVkKQpAQCAtMTU2LDE5ICsxNTYsMTkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgUmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgp
CiAKICAgICAjIENhbGxiYWNrcy4KLSAgICBHZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgR2V0Q29udGVudHNBc01IVE1MRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQotI2VuZGlmCi0gICAgR2V0TWFpblJlc291cmNlRGF0YU9mRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMLCB1aW50
NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoU3RyaW5nIHNjcmlwdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBGb3JjZVJlcGFp
bnQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRDb250ZW50c0FzTUhUTUxEYXRhKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2VuZGlmCisgICAgR2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgR2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBy
ZXNvdXJjZVVSTCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0V2ViQXJjaGl2ZU9mRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmluZyBzY3JpcHQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgRGljdGlvbmFyeSBzdXBwb3J0LgpA
QCAtMTkyLDcgKzE5Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFRyeUNsb3NlKCkKIAogICAgIFNldEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCi0gICAgVmFs
aWRhdGVDb21tYW5kKFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFZhbGlk
YXRlQ29tbWFuZChTdHJpbmcgbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgRXhlY3V0ZUVkaXRDb21tYW5kKFN0cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQpCiAKICAg
ICBEaWRSZW1vdmVFZGl0Q29tbWFuZCh1aW50NjRfdCBjb21tYW5kSUQpCkBAIC0zMjIsMTYgKzMy
MiwxNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIFByaW50
aW5nLgogICAgIEJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbykKICAgICBFbmRQcmludGluZygpCi0gICAgQ29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBDb21wdXRlUGFnZXNGb3JQcmludGlu
Zyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBE
cmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZv
IHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdl
U2l6ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEcmF3UGFnZXNUb1BERih1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRHJhd1JlY3RUb0lt
YWdlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8s
IFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIERyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2
NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90
IGNhbGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291bnQpIERlbGF5ZWQKKyAgICBDb21wdXRl
UGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkg
LT4gKHVpbnQzMl90IHBhZ2VDb3VudCkgRGVsYXllZAogI2VuZGlmCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCi0gICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBEcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQ
cmludEluZm8gcHJpbnRJbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRp
ZgogCiAgICAgIyBNZWRpYQpAQCAtMzgzLDE3ICszODMsMTcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVy
LCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIHJlc3VsdCkKIAogICAgIElu
c2VydFRleHRBc3luYyhTdHJpbmcgdGV4dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJl
cGxhY2VtZW50UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAsIHVpbnQzMl90IGVkaXRpbmdS
YW5nZUlzUmVsYXRpdmVUbywgYm9vbCBzdXBwcmVzc1NlbGVjdGlvblVwZGF0ZSkKLSAgICBHZXRN
YXJrZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0ZWRSYW5n
ZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQ2hhcmFjdGVySW5kZXhGb3JQb2ludEFz
eW5jKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBG
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5n
ZSByYW5nZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgR2V0TWFya2VkUmFuZ2VBc3luYyhX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmMo
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQ2hhcmFjdGVySW5kZXhGb3JQb2lu
dEFzeW5jKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCk7CisgICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0
OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICAg
ICBTZXRDb21wb3NpdGlvbkFzeW5jKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9z
aXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBz
ZWxlY3Rpb25SYW5nZSwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFu
Z2UpCiAgICAgQ29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIEluc2VydERpY3RhdGVkVGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgVmVjdG9yPFdlYkNvcmU6OkRpY3Rh
dGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJvb2wgcmVnaXN0ZXJVbmRv
R3JvdXApCi0gICAgQXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3Ry
dWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICBGb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgQXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jhbmdl
IHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CisgICAgRm9udEF0U2VsZWN0
aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgU2V0TWlu
aW11bUxheW91dFNpemUoV2ViQ29yZTo6SW50U2l6ZSBtaW5pbXVtTGF5b3V0U2l6ZSkKQEAgLTQx
MiwxMSArNDEyLDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQogICAgIFNldFNjcm9s
bGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkK
IAotICAgIEdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldEJ5
dGVjb2RlUHJvZmlsZShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAotICAgIEdldFNh
bXBsaW5nUHJvZmlsZXJPdXRwdXQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIAotICAg
IFRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50
U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
ICAgIFRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6
SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgUGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pCiAgICAgSW1t
ZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCkKQEAgLTQ2Miw3ICs0NjIsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24odWludDMyX3QgZGlyZWN0aW9uKQogCi0gICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgdWludDY0X3QgbmV3Q2Fs
bGJhY2tJRCkKKyAgICBEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdl
YktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgV2ViS2l0OjpPcHRpb25hbENhbGxiYWNr
SUQgbmV3Q2FsbGJhY2tJRCkKICAgICBTZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUlj
b25Mb2FkaW5nQ2xpZW50KQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRp
b25HdGsuY3BwCmluZGV4IGM4YzkzYjJiOTA1ODdkYzA2OTZmYzVkYTZiYWM0NDAyM2EzNzUxYzEu
LjJiYjM2ZjYzOGY3MmIyY2ZhZjcyNWM0YjU4ZGYxNDc4MjIyOGU2N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
Ci0gICAgdm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0
LCB1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZQorICAgIHZvaWQgc3RhcnRQcmludChXZWJD
b3JlOjpQcmludENvbnRleHQqIHByaW50Q29udGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgbV9wcmludENvbnRleHQgPSBwcmludENvbnRleHQ7CiAg
ICAgICAgIG1fY2FsbGJhY2tJRCA9IGNhbGxiYWNrSUQ7CkBAIC0zOTgsNyArMzk4LDYgQEAgV2Vi
UHJpbnRPcGVyYXRpb25HdGs6OldlYlByaW50T3BlcmF0aW9uR3RrKFdlYlBhZ2UqIHBhZ2UsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnQKICAgICAsIG1fcGFnZVNldHVwKHByaW50SW5mby5wYWdlU2V0
dXAuZ2V0KCkpCiAgICAgLCBtX3ByaW50TW9kZShwcmludEluZm8ucHJpbnRNb2RlKQogICAgICwg
bV9wcmludENvbnRleHQoMCkKLSAgICAsIG1fY2FsbGJhY2tJRCgwKQogICAgICwgbV94RFBJKDEp
CiAgICAgLCBtX3lEUEkoMSkKICAgICAsIG1fcHJpbnRQYWdlc0lkbGVJZCgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5oCmluZGV4IDc0M2NjMmNlNTI1ODk3ZDE5MDdiODJlYmZiMjQxMjNkODIyMzA0
OWUuLjQwOTU5NWUyOWVkNGE1MmEyYzk1OTI3NTMwZWMyMjc5ZTVmZjBiYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNj
b25uZWN0RnJvbVBhZ2UoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFByaW50KFdlYkNvcmU6
OlByaW50Q29udGV4dCosIHVpbnQ2NF90IGNhbGxiYWNrSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRQcmludChXZWJDb3JlOjpQcmludENvbnRleHQqLCBDYWxsYmFja0lEKSA9IDA7CiAK
IHByb3RlY3RlZDoKICAgICBXZWJQcmludE9wZXJhdGlvbkd0ayhXZWJQYWdlKiwgY29uc3QgUHJp
bnRJbmZvJik7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3Rr
UGFnZVNldHVwPiBtX3BhZ2VTZXR1cDsKICAgICBQcmludEluZm86OlByaW50TW9kZSBtX3ByaW50
TW9kZTsKICAgICBXZWJDb3JlOjpQcmludENvbnRleHQqIG1fcHJpbnRDb250ZXh0OwotICAgIHVp
bnQ2NF90IG1fY2FsbGJhY2tJRDsKKyAgICBDYWxsYmFja0lEIG1fY2FsbGJhY2tJRDsKICAgICBS
ZWZQdHI8Y2Fpcm9fdD4gbV9jYWlyb0NvbnRleHQ7CiAgICAgZG91YmxlIG1feERQSTsKICAgICBk
b3VibGUgbV95RFBJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDc3NTkwNmVlZTlhOGFkZTRmNDU5MGM1YjFiNmZiMGZk
NWYwYzkyYjguLmU3NmY5YjcxZmRhZTliMmQ0MGYzZDIxZmNiZjhmMzAxYTBlNzkwMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTM5Niw3ICszOTYsNyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZp
b3JGb3JLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JikKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgp
KSB7CkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OnJhbmdlRm9y
QmxvY2tBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICByZXR1cm4gcmFuZ2U7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50
LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdl
c3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9p
bnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBv
aW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0xNzIyLDcgKzE3MjIsNyBA
QCBib29sIFdlYlBhZ2U6OnNob3VsZFN3aXRjaFRvQmxvY2tNb2RlRm9ySGFuZGxlKGNvbnN0IElu
dFBvaW50JiBoYW5kbGVQb2ludCwgU2VsZQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRh
dGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgSW50UG9pbnQgcG9pbnRJbkRvY3VtZW50ID0gZnJhbWUudmlldygp
LT5yb290Vmlld1RvQ29udGVudHMocG9pbnQpOwpAQCAtMTc4Myw3ICsxNzgzLDcgQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQs
IHVpbnQzMl90IHRvdWNoZXMKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3
b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0
bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGZyb21Qb3Np
dGlvbiA9IGZyYW1lLnZpc2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1lLnZpZXcoKS0+cm9vdFZp
ZXdUb0NvbnRlbnRzKGZyb20pKTsKQEAgLTE4MjQsNyArMTgyNCw3IEBAIHZvaWQgV2ViUGFnZTo6
c2VsZWN0V29yZEJhY2t3YXJkKCkKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBzdGFydFBvc2l0aW9uLCBw
b3NpdGlvbikucHRyKCksIHBvc2l0aW9uLmFmZmluaXR5KCksIHRydWUsIFVzZXJUcmlnZ2VyZWQp
OwogfQogCi12b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNl
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zm
c2V0KGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICAKQEAgLTE4NTAsNyArMTg1MCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvCiAgICAg
cmV0dXJuIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHN0YXJ0SW5kZXggKyBvZmZzZXQsIHJvb3Qu
Z2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2Vs
ZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhT
ZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNl
bGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpAQCAtMTg4Myw3ICsxODgz
LDcgQEAgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VOZWFyUG9zaXRpb25NYXRjaGVzVGV4dChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW8KICAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFp
blRleHQoKnNlbGVjdGlvblJhbmdlLmdldCgpLCBtYXRjaFRleHQsIDAsIHRhcmdldE9mZnNldCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGlu
dDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9m
ZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
RnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKICAgICB1aW50MzJfdCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwpAQCAtMTkyOCw3ICsx
OTI4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFdlYlBhZ2U6OnZpc2libGVQb3NpdGlvbkluRm9jdXNl
ZE5vZGVGb3JQb2ludChjb25zdCBGcmFtZSYgZnJhbWUKICAgICByZXR1cm4gZnJhbWUudmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQoY29uc3RyYWluZWRQb2ludCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2
aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0xOTM4LDcgKzE5MzgsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IGJvb2wgaXNJbnRlcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxi
YWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91
bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0
UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5G
b2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUpOwpAQCAtMTk1MSw3ICsxOTUxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2kKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAKQEAgLTE5OTUsNyArMTk5NSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCByZWN0SXNUb29CaWdGb3JTZWxlY3Rpb24oY29uc3QgSW50UmVjdCYgYmxv
Y2tSZWN0LCBjb25zdCBGcmFtCiAgICAgcmV0dXJuIGJsb2NrUmVjdC5oZWlnaHQoKSA+IGZyYW1l
LnZpZXcoKS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkgKiBmYWN0b3I7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFz
c2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoZnJhbWUsIHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMjAyMiwx
MyArMjAyMiwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdQogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1
aW50MzJfdCBkaXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX3NlbGVj
dGlvbkFuY2hvciA9IChzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+KGRpcmVjdGlvbikg
PT0gRGlyZWN0aW9uTGVmdCkgPyBTdGFydCA6IEVuZDsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2sobV9zZWxlY3Rpb25BbmNob3IgPT0gU3RhcnQsIGNh
bGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50
UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90
IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9p
bnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdy
YW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9
IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIwNTcsNyArMjA1Nyw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25l
ZENhbGxiYWNrKHNlbGVjdGlvblN0YXJ0ID09IG1faW5pdGlhbFNlbGVjdGlvbi0+c3RhcnRQb3Np
dGlvbigpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9u
V2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0yMTA4LDcgKzIxMDgsNyBAQCB2b2lkIFdl
YlBhZ2U6OmNvbnZlcnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXcoRnJhbWVWaWV3KiB2aWV3LCBW
ZWN0b3I8U2VsZWN0aW9uUgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGljdGF0
aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnN0YXJ0KCk7CkBAIC0yMTkwLDcgKzIxOTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VE
aWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQp
CiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyhmYWxzZSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcm
IHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29y
cmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpIHsKQEAgLTIyMzgsMTQgKzIyMzgsMTQgQEAgdm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uLCB1aW4KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF1
dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKHJlY3RzRm9yVGV4dCwgZm9udE5hbWUuZ2V0KCksIGZv
bnRTaXplLCBmb250VHJhaXRzLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YXBw
bHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjphcHBseUF1
dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBib29sIGNvcnJlY3Rpb25B
cHBsaWVkOwogICAgIHN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFs
VGV4dCwgY29ycmVjdGlvbkFwcGxpZWQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U3RyaW5nQ2FsbGJhY2soY29ycmVjdGlvbkFwcGxpZWQgPyBjb3JyZWN0aW9uIDogU3RyaW5n
KCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRX
aXRoQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0
cmluZyYgY29tbWFuZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBleGVjdXRl
RWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIFN0cmluZygpKTsKICAgICBpZiAoY29tbWFuZE5hbWUg
PT0gInRvZ2dsZUJvbGQiIHx8IGNvbW1hbmROYW1lID09ICJ0b2dnbGVJdGFsaWMiIHx8IGNvbW1h
bmROYW1lID09ICJ0b2dnbGVVbmRlcmxpbmUiKQpAQCAtMjM5Miw3ICsyMzkyLDcgQEAgc3RhdGlj
IHZvaWQgY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dChGcmFtZSYgZnJhbWUsIFN0cmluZyYg
Y29udGV4dEJlZm9yZSwgU3QKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1
ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBT
dHJpbmcgY29udGV4dEJlZm9yZTsKICAgICBTdHJpbmcgY29udGV4dEFmdGVyOwpAQCAtMjY3Niw3
ICsyNjc2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc0Fzc2lzdGFibGVFbGVtZW50KE5vZGUq
IHN0YXJ0Tm9kZSwgUGFnZSYgcGFnZSwgYm9vbCBpc0ZvcncKICAgICByZXR1cm4gbmV4dEFzc2lz
dGFibGVFbGVtZW50KHN0YXJ0Tm9kZSwgcGFnZSwgaXNGb3J3YXJkKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2U6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2Fy
ZCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEVsZW1lbnQqIG5leHRFbGVtZW50ID0g
bmV4dEFzc2lzdGFibGVFbGVtZW50KG1fYXNzaXN0ZWROb2RlLmdldCgpLCAqbV9wYWdlLCBpc0Zv
cndhcmQpOwogICAgIG1fdXNlcklzSW50ZXJhY3RpbmcgPSB0cnVlOwpAQCAtMzMwMCw3ICszMzAw
LDcgQEAgdm9pZCBXZWJQYWdlOjpkaXNwYXRjaEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKGNvbnN0
IFZlY3RvcjxXZWJUb3VjaEV2ZW50LCAxPiYgcXUKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6
OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lELCBSZWY8TWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVk
UmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBp
ZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CiAgICAgICAgIHJlcGx5LT5zZW5kKDEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDAyMGVlYzJmODcwNzBm
ZDdiNzlhNzllOWMwMWRlYzEyYzc0NDliN2UuLjQyNzVhZTMxMTVhNmQyNTE4NGJjMmJkZGQ4MmQw
NGE1NWE5OTk3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0FSZW1vdGUu
aCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgpAQCAtNjgsNyArNjks
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1l
ZGlhdGVseSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xh
eWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCkg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBj
cmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIG92
ZXJyaWRlOwogICAgIHZvaWQgd2lsbERlc3Ryb3lEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yKik7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5j
KHVpbnQ2NF90KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgZm9yY2VSZXBh
aW50QXN5bmMoQ2FsbGJhY2tJRCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZv
aWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pikg
b3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBv
c2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJl
Y3Q7IH0KQEAgLTEwMyw3ICsxMDQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYWluRnJhbWVD
b250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wg
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNh
bGxiYWNrSURzKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxp
bmcoV2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggMmQ5YzlhNzg2YmM1ZmZl
OGUwNGExNTQ5MzI1NzI4MzUzYmRjNmZjNS4uOWMyZTczYTA2YWY5MjExNGFiNDEzZmMzZDNjNDA3
NjkwNTcxNWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC00
ODcsNyArNDg3LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0
b3JlRmx1c2hlcjo6Zmx1c2goKQogICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92
ZShtX2NvbW1pdEVuY29kZXIpLCB7IH0pOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29s
IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCit2
b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFj
dGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN1c3Bl
bmQgcGFpbnRpbmcgd2hpbGUgbm90IHZpc2libGUsIGxpa2UgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE/IFByb2JhYmx5LgogCkBAIC00OTcsNyArNDk3LDcgQEAgdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpG
bGFncywgYm8KICAgICB9CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFk
ZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBtX3BlbmRpbmdDYWxsYmFja0lEcy5hcHBlbmQoc3RhdGljX2Nh
c3Q8UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRyYW5zYWN0aW9uQ2FsbGJhY2tJRD4oY2Fs
bGJhY2tJRCkpOwogICAgIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKaW5kZXggY2Y4OTU3ODEzZmE1Mzg0ZDE0
ZDY4MmI5MTQ1OTc4ZjE4NWI1M2FkMS4uZjBlNmM1NTA0MWE1MWEwMmE2N2ExMTkwMTc2ZmEyNmUx
ODQxYWZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAt
NjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBm
b3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKyAgICBib29s
IGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKICAgICBib29sIGxheWVyVHJlZVN0
YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGlu
Z0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTgxLDcgKzgxLDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3
KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBhY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJv
b2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
LCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFVwZGF0
ZUFjdGl2aXR5U3RhdGVUaW1lckZpcmVkKCk7CiAKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5
R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBv
dmVycmlkZTsKQEAgLTE0OSw3ICsxNDksNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogCiAgICAgUnVuTG9vcDo6VGltZXI8VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+IG1fc2VuZERpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1l
cjsKLSAgICBWZWN0b3I8dWludDY0X3Q+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFj
a0lEczsKKyAgICBWZWN0b3I8Q2FsbGJhY2tJRD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNh
bGxiYWNrSURzOwogICAgIGJvb2wgbV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGU7CiAKICAg
ICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3ZpZXdPdmVybGF5Um9vdExheWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggNDgwZDY4MWY4ZjZiOGNk
NmYxYTQzM2EzMDJmMzJjMDM3ZGYyOGMyZi4uMWIzMGI1MzE3ZThjYzhjYjBmNDc0ZTVlYjczZmRl
YzljN2FiYTUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
Zm9yY2VSZXBhaW50KCkKICAgICBbQ0FUcmFuc2FjdGlvbiBzeW5jaHJvbml6ZV07CiB9CiAKLWJv
b2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2
NF90IGNhbGxiYWNrSUQpCitib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3Jj
ZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKG1fbGF5ZXJU
cmVlU3RhdGVJc0Zyb3plbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDU5LDcgKzQ1OSw3
IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAg
ICB9CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJv
b2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4m
IG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCiB7CiAgICAgbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmFwcGVuZFZlY3RvcihuZXh0QWN0aXZpdHlTdGF0ZUNo
YW5nZUNhbGxiYWNrSURzKTsKICAgICBtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSB8PSB3
YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGU7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmly
ZWQoKQogICAgIGlmIChtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKICAgICAgICAgbV93
ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZSgpKTsKIAotICAgIGZvciAodWludDY0X3QgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5U3Rh
dGVDaGFuZ2VDYWxsYmFja0lEcykKKyAgICBmb3IgKGF1dG8gY2FsbGJhY2tJRCA6IG1fbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIAogICAgIG1f
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDFl
YjA0MzcyODEyODBjY2QyMDE2ODI2N2I1YWZlNTRhOTY1ZmNkYTguLjAxOTJmZjFjMTU3MzBlYTk1
N2NkZGE3YTQ1YjgwYjI5ODBmYzYyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lk
IFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZQogICAgIGZyYW1lLmVkaXRvcigpLmluc2VydERpY3RhdGVkVGV4
dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbnVsbHB0cik7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29u
c3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0
IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgQXR0cmlidXRlZFN0cmluZyByZXN1bHQ7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIFdl
YlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVk
aXRpbmdSYW5nZSYgZWRpdAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0cmli
dXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2socmVzdWx0LCByYW5nZVRvU2VuZCwg
Y2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbih1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24oQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIFN0cmluZyBmb250TmFtZTsKICAgICBkb3VibGUgZm9udFNpemUg
PSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313780</attachid>
            <date>2017-06-24 00:38:38 -0700</date>
            <delta_ts>2017-06-24 00:47:45 -0700</delta_ts>
            <desc>Yet another GTK+ and WPE build fixes</desc>
            <filename>bug-173803-20170624003837.patch</filename>
            <type>text/plain</type>
            <size>175110</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
YWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJhMzExZDk4YTY0OTdmMDM3ZWY3YTBjYTIwNzg0ZGY3Y2QzNWJjNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0
cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1
Y3QgQ2FsbGJhY2tJREhhc2g7CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENh
bGxiYWNrSUQgeworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgQ2FsbGJhY2tJ
RCgpCisgICAgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQoY29uc3QgQ2FsbGJh
Y2tJRCYgb3RoZXJJRCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IG1faWQgJiYg
IUhhc2hUcmFpdHM8dWludDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lkID09IG90aGVyLm1faWQ7IH0KKworICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpICE9IHJhd0lkICYm
ICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKwor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIENhbGxiYWNrSUQgZnJvbUludGVnZXIodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJhY2tJRChy
YXdJZCkpOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRChyYXdJZCk7CisgICAgfQorCisgICAg
c3RhdGljIENhbGxiYWNrSUQgZ2VuZXJhdGVJRCgpCisgICAgeworICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJhY2tJ
RCA9IDE7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKHVuaXF1ZUNhbGxiYWNrSUQrKyk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgbV9pZDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ2FsbGJhY2tJRCYg
Y2FsbGJhY2tJRCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
TFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQodWludDY0X3QgbmV3SUQpCisgICAgICAg
IDogbV9pZChuZXdJRCkKKyAgICB7CisgICAgICAgIEFTU0VSVChuZXdJRCAhPSBIYXNoVHJhaXRz
PHVpbnQ2NF90Pjo6ZW1wdHlWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2Fs
bGJhY2tNYXA7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrVHlwZT4gZnJpZW5kIGNs
YXNzIFNwZWNpZmljQ2FsbGJhY2tNYXA7CisgICAgZnJpZW5kIGNsYXNzIE9wdGlvbmFsQ2FsbGJh
Y2tJRDsKKyAgICBmcmllbmQgc3RydWN0IFdURjo6Q2FsbGJhY2tJREhhc2g7CisgICAgZnJpZW5k
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD47CisKKyAgICB1aW50NjRfdCBt
X2lkIHsgSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoIHsKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGNhbGxiYWNrSUQpIHsgcmV0dXJu
IGludEhhc2goY2FsbGJhY2tJRC5tX2lkKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFdlYktpdDo6Q2FsbGJhY2tJRCYgYSwgY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBiKSB7IHJl
dHVybiBhLm1faWQgPT0gYi5tX2lkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29t
cGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViS2l0OjpDYWxsYmFja0lEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6Q2Fs
bGJhY2tJRD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkNhbGxiYWNrSUQgZW1wdHlWYWx1ZSgpIHsg
cmV0dXJuIFdlYktpdDo6Q2FsbGJhY2tJRCgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYktpdDo6Q2FsbGJhY2tJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpD
YWxsYmFja0lEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBz
dGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgcmV0dXJuIHNsb3QubV9pZCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OkNhbGxiYWNr
SUQ+IHsKKyAgICB0eXBlZGVmIENhbGxiYWNrSURIYXNoIEhhc2g7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxsYmFja0lELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk0ZTcyZTBj
ZTY1ZDYyZDZlMGFmYjYzYmYwZWMyNThkOTQzZGE5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgT3B0aW9uYWxDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBPcHRpb25hbENhbGxiYWNrSUQoKSB7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
ZXhwbGljaXQgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisg
ICAgICAgIDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgT3B0aW9uYWxDYWxsYmFja0lEKGNvbnN0IE9wdGlvbmFsQ2FsbGJhY2tJRCYgb3RoZXJJ
RCkKKyAgICAgICAgOiBtX2lkKG90aGVySUQubV9pZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
SGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVlKG1faWQpKTsKKyAgICB9CisKKyAg
ICB1aW50NjRfdCB0b0ludGVnZXIoKSB7IHJldHVybiBtX2lkOyB9CisgICAgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKENhbGxiYWNrSUQ6Omlz
VmFsaWRDYWxsYmFja0lEKG1faWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQobV9pZCk7
CisgICAgfQorCisgICAgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENhbGxiYWNr
SUQobV9pZCk7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWRDYWxsYmFj
a0lEKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFIYXNoVHJhaXRzPHVp
bnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUocmF3SWQpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCYgY2FsbGJhY2tJRCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVjb2Rlci5kZWNvZGUoY2FsbGJhY2tJRC5tX2lk
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2lkIHsg
SGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSB9OworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
CmluZGV4IDBhYTRmYjE1Njk5NjRiNTM5NDhkYTJiNTMyZDNkNmIzMjJiZmEyOGYuLjJhNDVmYTI2
MGE4ZTUwMzEyNmYxM2Q5MTkyOTA3ZjBlZTM1ZDRhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb25faAogI2RlZmluZSBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAKKyNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CkBAIC0y
NjEsNyArMjYyLDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQo
dWludDY0X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklE
OyB9CiAKLSAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICB0
eXBlZGVmIENhbGxiYWNrSUQgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZlY3Rv
cjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tJRHM7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlv
bkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2Fs
bGJhY2tJRHMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5l
cmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBmNjEwODE3NzMyNDUwY2MyYTM4ZTQ2MTljOWE0OWRkZDNhNmYyZTVhLi4wYWI4ZjMy
NTA2ZjVkODc5ODdkODdlNzcxODcyNDQzYWM4NzE1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJB
UElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNh
bGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+CiAgICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAog
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1f
dHlwZSh0eXBlKQotICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkK
KyAgICAgICAgLCBtX2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAg
ICAsIG1fYWN0aXZpdHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7
Ci0gICAgfQotCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOwor
ICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTcz
LDEzIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDY0X3QsIFQ+JiBj
YWxsYmFja01hcCwgQ2FsbGJhY2tCYXNlOjpFcnJvCiAKIGNsYXNzIENhbGxiYWNrTWFwIHsKIHB1
YmxpYzoKLSAgICB1aW50NjRfdCBwdXQoUmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKKyAg
ICBDYWxsYmFja0lEIHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY2FsbGJhY2tJRCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21hcC5jb250YWlu
cyhjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAg
ICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybiBjYWxsYmFja0lEOwogICAgIH0KIApAQCAtMjAxLDE4ICsxOTQsMTggQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90
IHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICBDYWxsYmFj
a0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhy
b3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwg
VC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7CiAg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+Ci0gICAgUmVmUHRyPFQ+IHRha2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICBSZWZQdHI8VD4gdGFrZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChjYWxsYmFja0lEKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRCk7CisgICAgICAg
IGF1dG8gYmFzZSA9IG1fbWFwLnRha2UoY2FsbGJhY2tJRC5tX2lkKTsKICAgICAgICAgaWYgKCFi
YXNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIyOSw0ICsyMjIsNDUgQEAg
cHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9t
YXA7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tUeXBlPgorY2xhc3MgU3BlY2lm
aWNDYWxsYmFja01hcCB7CitwdWJsaWM6CisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENhbGxiYWNr
VHlwZT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7Cisg
ICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0aW9u
KQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IENhbGxiYWNrVHlwZTo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgUmVmUHRyPENhbGxiYWNrVHlwZT4gdGFrZShDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAg
YXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoYmFzZS5sZWFrUmVmKCktPnRlbXBsYXRlIGFzPENhbGxiYWNrVHlwZT4oKSk7CisgICAgfQor
CisgICAgdm9pZCBpbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX21hcCwgZXJyb3IpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tCYXNlPj4gbV9tYXA7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTU3OTBlMjU1ZGMyMDRkMjFiODdhMDk5YWEzNDgx
MWY4NDJlMGYxYS4uNDA4MmViOWZlZTdlYzRhNmE5Y2Y4MzI3OWNiM2Y3MjRmOTgwMjhmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTcyLDEwICs3MywxMCBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0Nvb2tpZU1hbmFn
ZXJDbGllbnRCYXNlKiBjbAogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc1Bv
b2xEZXN0cm95ZWQoKQogewotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0lu
dmFsaWRhdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2FsbGJh
Y2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICBtX2Fy
cmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBv
YnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNldCA6IG1fY29va2llT2JzZXJ2ZXJz
LnZhbHVlcygpKSB7CkBAIC05MSwxOCArOTIsMTggQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2llQWNjZXB0UG9saWN5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9nZXRDb29raWVzQ2Fs
bGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2FycmF5
Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7
CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLmludmFs
aWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9nZXRDb29r
aWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoTmV0
d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlD
YWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFs
aWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fYXJyYXlDYWxsYmFja3MuaW52YWxp
ZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2h0dHBDb29r
aWVBY2NlcHRQb2xpY3lDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQ
cm9jZXNzRXhpdGVkKTsKKyAgICBtX3ZvaWRDYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKKyAgICBtX2dldENvb2tpZXNDYWxsYmFja3MuaW52
YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKQEAgLTExNywx
NCArMTE4LDExIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwot
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9hcnJheUNhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3RuYW1lcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV9hcnJheUNhbGxiYWNrcy50YWtl
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE0Nyw2OSArMTQ1LDUxIEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoU2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxs
YmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
dm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotCisgICAg
YXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tp
ZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBGdW5jdGlv
bjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpE
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZShTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2Fs
bGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikp
OwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25J
RCwgY29va2llLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBj
b29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIEZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2llPiYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBj
YWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxs
YmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9nZXRDb29raWVzQ2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9O
ZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwsIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KQEAgLTI4NCwzMSArMjY0LDI0IEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgSFRUUENv
b2tpZUFjY2VwCiAgICAgLy8gVGhlIHBvbGljeSBpcyBub3Qgc2VudCB0byBuZXdseSBjcmVhdGVk
IHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2aWEgc2V0SW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2VyaW91cyBwcm9ibGVtLCBiZWNhdXNlOgog
ICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhhdmUgb25lIFdlYlByb2Nlc3MgYW5kIG9u
ZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RSdW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhl
bTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENvY29hIGhhcyB0aGUgcG9saWN5IHBlcnNp
c3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2UgaXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBz
ZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgMCkp
OwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIE9w
dGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX3Zv
aWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKGNh
bGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29v
a2llQWNjZXB0UG9saWN5KFNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGlj
eSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNh
bGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmgKaW5kZXggODJhZjc3MDY1ZDJmMjFiMGY1YzkxYzY3ZDlkOTU0MGMyOGIyZjU1
NC4uMGFlYTJjNWIwZDkzMzk5NjkzZWMyMjYzNjU4NDU0YTA4NmFjNWNmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaApAQCAtMTA3LDEz
ICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQgZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0g
ICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0
OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFj
a0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CkBAIC0xMzEsMTAgKzEzMSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyc2lzdEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIAotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4gbV9hcnJheUNhbGxiYWNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxi
YWNrPj4gbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEdldENvb2tpZXNDYWxsYmFjaz4+IG1fZ2V0Q29va2llc0NhbGxi
YWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEFycmF5Q2FsbGJhY2s+IG1fYXJyYXlDYWxs
YmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2Fs
bGJhY2s+IG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKKyAgICBTcGVjaWZpY0Nh
bGxiYWNrTWFwPFZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8R2V0Q29va2llc0NhbGxiYWNrPiBtX2dldENvb2tpZXNDYWxsYmFja3M7CiAKICAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9s
ZWdhY3lDb29raWVPYnNlcnZlcnM7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIEhh
c2hTZXQ8T2JzZXJ2ZXIqPj4gbV9jb29raWVPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBkY2NiY2YyOWUwNzY2OTc0Yjc0MzU4NzIxMmIxMmMzYmY0Y2JjMWUxLi5hNWQ3N2I5NjI5
OTJmMWQzZjZkZWY4NDg3NTFiYTk2MWU1NTY5MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIxLDEzICsyMSwxMyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDb29raWVN
YW5hZ2VyUHJveHkgewotICAgIERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJp
bmc+IGhvc3RuYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lcywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAK
LSAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwot
ICAgIERpZERlbGV0ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkU2V0Q29v
a2llcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERpZFNldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAg
IERpZERlbGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERp
ZFNldENvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIERpZEdldENv
b2tpZXMoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogCiAgICAgQ29va2llc0RpZENoYW5nZShXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0YmZhZTBlNzRhYzkxMTk3MTNkMGY2MmY4Y2Y0NTlmNTcwZDkwMmZlLi43ODk1NjE4NzNl
OGQzN2Q1MTNhZTEwOWU1OWRhODA3ZWZmMjgyZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgor
I2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIK
ICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NN
YW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVu
dFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0x
NjI4LDcgKzE2MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC0yODM0LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXVEY6OkZ1bmN0aW9uPAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yODU2LDcgKzI4NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VG
b3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg2OCw3ICsyODY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAt
Mjg4MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0y
ODkyLDcgKzI4OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
QEAgLTI5MTgsNyArMjkxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKQEAgLTI5MzAsNyArMjkzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxl
Y3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGF0YSosIENhbGxiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTUyLDcgKzI5NTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zMDA3LDcgKzMwMDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiAg
ICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdp
bmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOyAKIH0KQEAgLTMyNDMsNyArMzI0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2Vj
dXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKQog
ewotICAgIEhhc2hTZXQ8dWludDY0X3Q+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOworICAgIEhhc2hTZXQ8
Q2FsbGJhY2tJRD4gbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzID0gV1RGTW92ZShtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyk7CiAgICAgZm9yIChhdXRvJiBjYWxsYmFja0lE
IDogbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKSB7CiAgICAgICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCkpCiAg
ICAgICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwpAQCAtNTAwMCw3ICs1MDAxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBi
b29sIGhhbmRsZWQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNr
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTUwMTEsNyArNTAxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRh
dGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUw
MjIsNyArNTAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCB1aW50NjRfCiAgICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkRhdGE6OmNyZWF0ZShkYXRhUmVmZXJl
bmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGJp
dG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbWFn
ZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxJbWFnZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDMzLDcgKzUwMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCB1aQogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5n
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNr
KGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxi
YWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywg
dWludDY0X3QgY2FsbGJhY2tJCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShyZXN1bHRTdHJpbmcuaW1wbCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNjEsNyArNTA2Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZl
cmVuY2UsIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4
Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZh
bHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwODEs
NyArNTA4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwKICAgICBjYWxsYmFjay0+cGVyZm9y
bUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgaGFkRXhjZXB0aW9uLCBkZXRhaWxzKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVj
dD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9y
Rm9yUHJpbnRpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwOTIsNyArNTA5Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVj
dHMsIGRvdWJsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShw
YWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBib29sIGlzRW5hYmxlZCwgaW50IHN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmFibGVkLCBpbnQgc3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTEwMyw3ICs1
MTA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0
ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJl
c3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKHJhbmdlLmlzVmFsaWQo
KSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFu
Z2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsCiB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjptYWNoU2VuZFJpZ2h0Q2Fs
bGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2Vu
ZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxNYWNoU2VuZFJpZ2h0Q2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwogICAgIGlmICghY2FsbGJhY2spCkBAIC01MTkyLDcgKzUxOTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9nU2Nyb2xsaW5nRXZlbnQodWludDMyX3QgZXZlbnRUeXBlLCBNb25vdG9uaWNU
aW1lIHRpbWVzdGFtcAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qg
RWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtNTk2MSw3ICs1OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQs
IHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwpA
QCAtNTk3NSw3ICs1OTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQo
KSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC01OTg3LDcgKzU5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5
OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwpAQCAtNjI5Niw3ICs2Mjk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJh
bmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02MzA3LDcgKzYzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzI5LDcgKzYzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBXVAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MzczLDcgKzYzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBi
aXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90
KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnN0YWxsQWN0aXZpdHlT
dGF0ZUNoYW5nZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6RnVuY3Rpb248dm9pCiAgICAgYXV0byB2
b2lkQ2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZSh2b2lkQ2FsbGJhY2spKTsKICAgICBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmFwcGVuZChjYWxsYmFja0lEKTsKIH0KIApAQCAtNjc0
Niw3ICs2NzQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpM
aW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRy
PFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGljb24sIHVpbnQ2NF8KICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgZGVjaXNpb24gPSAo
Ym9vbCljYWxsYmFja0Z1bmN0aW9uOwotICAgICAgICB1aW50NjRfdCBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpIDog
MDsKKyAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24oQ2FsbGJhY2tJRCBjYWxsYmFja0lELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSWRl
bnRpZmllcik7CisgICAgZGF0YUNhbGxiYWNrKGRhdGEsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NDQ1ZDUzMmRjNTA4
ZWFkMGYwOTNkMzk5ZGMzOWY5NDUyOTMxOWU1Li5jZTJlZjIwZmRlZmE5ODRkNTM2OTkzOGZjYjJi
NDgyZWNhODU3OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC05MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3Vu
dCwgUmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90
IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwot
ICAgIHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZE
YXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRX
aW5kb3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzMgKzE0NDks
MzMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1
ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0
X3QpOwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0
X3QpOwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWlu
dDY0X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZv
aWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBi
b29sLCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRf
dCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1h
Y2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0
X3QpOworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hT
ZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1Jhbmdl
JiwgdWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3Qg
RWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAg
IHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qs
IHVpbnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFj
ayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0
LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9h
dCBmb250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBh
dXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNv
bnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0
IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcm
IGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25z
dCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZv
aWQgc2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lk
IHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWlu
dDY0X3QpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2Fs
bGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxsYmFja0lEPiBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQcm94
eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBtX3BvdGVudGlhbGx5
Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Ok5vRmxh
Z3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBs
eSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0
ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWlu
ZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhNzkxZGFiODBkM2NhNjUxN2FmODdhMDBkYjk4MzA0YTk0OGVhZDY4Li43
ZTAyZjRlZWMwOTMyNWZiNjI0NjQ5M2QyYjI0YmI3NTk5MzAyZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1NCwyNyAr
MTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgV2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKLSAg
ICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBEYXRhQ2FsbGJhY2soSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgSW1h
Z2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVm
ZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENvbXB1dGVk
UGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUg
dG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBFZGl0aW5nUmFuZ2VDYWxsYmFj
ayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBzdHJ1Y3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBh
Z2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNv
bW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVuc2ln
bmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhXZWJDb3JlOjpJbnRSZWN0IHJl
Y3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIEF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnRO
YW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91Ymxl
IGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgR2VzdHVyZUNh
bGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEF1dG9jb3Jy
ZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywg
U3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcg
YmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmlu
ZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3Rl
ZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxi
YWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0
ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNl
bGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJL
aXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVk
KQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVy
YWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFNhdmVJbWFnZVRv
TGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBEaWRD
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgRHJhd1RvUERGQ2FsbGJh
Y2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
U2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2Vs
ZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIERyYXdUb1BERkNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNldERhdGFEZXRlY3Rpb25SZXN1
bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBkYXRhRGV0ZWN0aW9uUmVzdWx0
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFBy
aW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6
TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9y
KQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBE
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9hZERlY2lzaW9uRm9ySWNvbihz
dHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBG
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNv
cmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IDc4ZjZhOGZiODNlNjFmYjM2OGVkZDAzY2YxOGE0OWVlODEzMTdk
ZDkuLmMxYmE3NjRmMDE1NDI3MTFlMjlhZDVmOWEwNzM0Mjc3NjgyOGFiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQz
Ml90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNo
ZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsK
ICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWMKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBv
aW50LCB0b3VjaGVzLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgcmVjdHMs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXplLCB1aW50NjRfdCBmb250VHJh
aXRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0
aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiByZWN0cywg
Y29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFp
dHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiYKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlY3RzLCBm
b250TmFtZSwgZm9udFNpemUsIGZvbnRUcmFpdHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25z
dCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhj
b25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShzZWxlY3RlZFRleHQsIGJlZm9yZVRleHQsIGFmdGVyVGV4dCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF1
dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBtYXJrZWRUZXh0LCBjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3Qg
U3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYg
KCFjYWxsYmFjaykgewpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShiZWZvcmVUZXh0
LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24sIGxlbmd0aCk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3RzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdyYW51bGFyaXR5LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhwb2ludCwgdG91Y2hlcywgYmFzZUlzU3RhcnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAgICAgCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3Jy
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGx5QXV0b2NvcnJl
Y3Rpb24oY29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2lu
dCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGRpcmVjdGlvbiksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAgICAgCkBA
IC01MzUsNyArNTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KHBvaW50LCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0K
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50
LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REaWN0YXRpb25Db250ZXh0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkNvbnRleHQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250
ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQgZnJvbSwgY29uc3QgV2ViQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aFR3b1RvdWNo
ZXMoZnJvbSwgdG8sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9u
T2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNldCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KG9mZnNldCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGb2N1c05leHRBc3Npc3RlZE5vZGUoaXNGb3J3YXJkLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0xMDM3LDEzICsxMDM3LDEzIEBAIHVpbnQzMl90IFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uCiAgICAgfQogCiAgICAgdWludDMyX3QgcGFnZUNvdW50ID0gMDsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICB1c2luZyBN
ZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlKGZyYW1lSUQsIHByaW50SW5m
bywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBhZ2VDb3VudCksIG1fcGFnZUlEKTsKICAg
ICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdUb1BERkNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQppbmRleCBkYzhkYTVhYmJhMThjYTNhYjYyZDQy
OWZiMDQ3MTUyZDg0ZWU0YzEyLi4yYTU5MGJmNDg4Y2M3MzhmMmVkYjIwMmY3ZDI0NThiOGE3MzNm
NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0KQEAgLTI4MSwxMCArMjgxLDEwIEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIElQQ0NhCiAgICAgICAg
ICAgICB2aWV3LT5fcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAg
ICAgfQogICAgIH0pOwotICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIF9leHBlY3RlZFByaW50Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpLnRvSW50ZWdlcigpOwogCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAgY29u
dGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgY29udGV4dC0+
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICBf
d2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludElu
Zm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRl
UGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVy
KGNvbnRleHQpOwogICAgICAgICBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhwYWdlUmVjdHMsIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29udGV4dCk7CiAgICAgfSk7Ci0gICAgX2V4cGVj
dGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBf
ZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNhbGxi
YWNrSUQgPSBfZXhwZWN0ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2s7CiAKQEAgLTUyMSwxMSArNTIx
LDExIEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBsaW5rRGVzdGluYXRpb25OYW1lKFBERkRvY3VtZW50
ICpkb2N1bWVudCwgUERGRGVzdGluYXRpb24gKmRlCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5kbGUsIGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgICAgICAg
ICAgX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KS50b0ludGVnZXIoKTsKICAgICAgICAgICAgICAgICBfZXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2tz
LmFkZChfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2ssIHNjYWxlZFByaW50aW5nUmVjdCk7
CiAKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKIAogICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRv
SW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludElu
Zm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDFhNjRlNzliOGNjOGRhMmJjMWQ4NGIxYjI3YmYz
YzgwZjQyZGU1OTIuLmYxZmJiZGJjNWZmN2E0MjdjNTc4MjU0OWNiYzk4YmZiODAxMjY3YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRl
ZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYg
c3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIE1FU1NBR0Vf
Q0hFQ0soYWN0dWFsUmFuZ2UuaXNWYWxpZCgpKTsKIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNl
bGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91YmxlIGZv
bnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3Ry
aW5nJiBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxl
Rm9udHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9j
YWxsYmFja3MudGFrZTxGb250QXRTZWxlY3Rpb25DYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDM3ZWU1ODg1MDdiNjVkODhjOTA3ODQ2MDUzOWMxYTE0ODhi
OWVjNDUuLjZhYjEwMzE5NjRhOWMwYjk1ZWY0Y2FmOTI1NGZmZDE4MjI3MjkxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3
NDAsNiArMzc0MCw4IEBACiAJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b21h
dGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZEMUVGQ0RD
NkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5MjcsNiArNDkyOSw4IEBACiAJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQ0YxODYz
NzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAgKi8sCiAJCQkJQkMzMDY1RjkxMjU5
MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKKwkJCQk5QkM1OUQ2QzFFRkNDQ0I2MDAx
RThEMDkgLyogQ2FsbGJhY2tJRC5oICovLAorCQkJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAv
KiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIg
LyogQ2hpbGRQcm9jZXNzLmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyog
Q2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIENoaWxk
UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3NTQzYTI5ZDhiZWI4Y2Vh
MzkyNjYyMTZhNjAwOGM1ODYyMzRlZjM1Li4xMjEzZDNhODczYmVmYzYzMzFiNWYwZDE1MjgzMDcy
YjA5MjJlMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoQ2hpbGRQcm9jZXNzKiBwcm9jZXNzKQogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNz
aW9uSUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgSGFzaFNldDxT
dHJpbmc+IGhvc3RuYW1lczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKCpzdG9yYWdlU2Vzc2lv
bik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUoY29va2ll
KTsKQEAgLTg3LDE2ICs4NywxNSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tp
ZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdQogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoKnN0b3JhZ2VTZXNzaW9u
LCB0aW1lKTsKIAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFj
a0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OkRpZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhTZXNzaW9u
SUQgc2Vzc2lvbklELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9yPENvb2tp
ZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMDUsNyArMTA0LDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJhY2tJRCksIDAp
OwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmws
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwog
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKQEAgLTExNCwyMiArMTEzLDIwIEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgdWludDY0X3QKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgQ29va2llJiBjb29raWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWUoY29va2llKTsK
IAotICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNl
dENvb2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tp
ZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+c2V0Q29va2llcyhjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCk7CiAKLSAg
ICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29r
aWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpub3RpZnlD
b29raWVzRGlkQ2hhbmdlKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xNTMsMTUgKzE1MCwxNSBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFNlc3Np
b25JRCBzZXNzaW9uSUQpCiAgICAgICAgIFdlYkNvcmU6OnN0b3BPYnNlcnZpbmdDb29raWVDaGFu
Z2VzKCpzdG9yYWdlU2Vzc2lvbik7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgcGxhdGZvcm1TZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSk7CiAKICAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2FsbGJhY2tJRCksIDApOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFj
a0lELmNhbGxiYWNrSUQoKSksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OkRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KCksIGNhbGxiYWNrSUQpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDEyYWU1OTE3NGQ5Yjhi
YTRiNjkwY2JhYWE2NDA3YzdlNmQxYTllYjUuLjg0NGY3YTNiNDZkYTExZmY5NjJiZmZiMTRlOWRj
N2Q5ZWRmZGJjNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiSFRUUENvb2tpZUFjY2VwdFBv
bGljeS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxjaHJvbm8+CkBAIC01Niw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBzZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNj
ZXB0UG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9p
ZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1
aW50MzJfdCBzdG9yYWdlVHlwZSk7CkBAIC02OCwyMCArNzAsMjAgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIENh
bGxiYWNrSUQpOwogCi0gICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpDb29raWUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKFdlYkNv
cmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50LCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgc2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRBbGxDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcGxhdGZvcm1TZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIHZvaWQgZ2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koQ2FsbGJhY2tJRCk7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKTsKIAogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDBhNTg1NTVlYzZhOWNjNDhmOWQ4YTk0NzVjYTYyNDhjM2VkNWIz
NDUuLjVmZWVmYTcxMmM4MmRmZmMxZDQyNjEyNDlkMGRjYzI3NzdmNTE4OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNCwxOSArMjQsMTkgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFdlYkNvb2tpZU1hbmFnZXIgewotICAgIHZvaWQgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2
b2lkIEdldEhvc3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIHZvaWQgRGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBob3N0bmFtZSkK
ICAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAotICAgIHZvaWQgU2V0Q29va2llKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
U2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgbWFpbkRvY3Vt
ZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgR2V0QWxsQ29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQg
R2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQ29va2llKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2llLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgU2V0Q29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpDb29raWUgY29va2ll
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgR2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpV
UkwgdXJsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIERlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2ll
IGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgdm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQz
Ml90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lkIFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIHZvaWQgR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIHZvaWQgU3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTA4N2E4YTMxMzQ3ZGVjZGQyZWFkMDljMTlh
Mjc4OTBjMWRmYzU4YS4uMWM1NWNhYmUzNjcwMGIxM2VmYmI4NWUzN2RmZWM1NWY0NzFjYTgwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4MTAsMTYgKzE4MTAsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5r
SWNvbiYgaWNvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2Vi
UGFnZSB7IG1fZnJhbWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkp
OworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWRE
ZWNpc2lvbkZvckljb24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkp
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZp
ZXIpOwogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAg
ICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9
KSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVk
TG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAg
ICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRp
bmdJY29uKGNhbGxiYWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRE
cmF3aW5nQXJlYS5jcHAKaW5kZXggYmY1M2U2YzhhMjQ5MzM5ZmZlZWRkODQyZjIzMDBiNmI4ZWFm
ZDRiYS4uOGU4MzFjZWI4Nzg4M2RkMGYzMjI0N2Q4NTkyMDhjNmNhNjlhZWE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50KCkKICAgICB9CiB9CiAKLWJvb2wgQWNjZWxlcmF0ZWREcmF3
aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3QgJiYgbV9sYXllclRyZWVIb3N0LT5m
b3JjZVJlcGFpbnRBc3luYyhjYWxsYmFja0lEKTsKIH0KQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lk
IEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
CiB9CiAjZW5kaWYKIAotdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKQordm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wsIGNvbnN0IFZlY3Rv
cjxDYWxsYmFja0lEPiYpCiB7CiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpIHsKICAgICAgICAgaWYgKG1fd2ViUGFnZS5pc1Zpc2libGUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVh
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5oCmluZGV4IDJmMTkxM2UwMDY4ZjczM2E3NGNhZTRjMTE0NzUwY2NmZjkyZDkwMjEuLjNi
NjQ5NDcyZDRhYzcwYjcyNWQ4ODE3MTNiNDJiYmM3NTMwM2ZmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuaApAQCAtNDgsNyArNDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBsYXllclRyZWVTdGF0
ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclRyZWVTdGF0ZUlzRnJv
emVuOyB9CiAgICAgTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC5nZXQoKTsgfQogICAgIHZvaWQgZm9yY2VSZXBhaW50
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFj
a0lEKSBvdmVycmlkZTsKKyAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRQYWludGluZ0VuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgb3Zl
cnJpZGU7CkBAIC02OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRlc3Ryb3lOYXRp
dmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92ZXJyaWRlOwogI2VuZGlmCiAK
LSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBhY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8q
IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+
JiAvKiBjYWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAppbmRleCA3MjkwYWZmNmI2Yjg2ZjZlZjUxNmRjMTk3NGIwYmY2YWJlMzZjNzFk
Li43MjllZWI0MmU3YjdjNGNmODAzZjY4YTIwMzIwODZjNzlmN2JmOWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTEyNywxNCArMTI3LDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3Jj
ZVJlcGFpbnQoKQogICAgIG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7
CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyh1
aW50NjRfdCBjYWxsYmFja0lEKQorYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNl
UmVwYWludEFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBzY2hlZHVsZUxheWVy
Rmx1c2goKTsKIAogICAgIC8vIFdlIHdhbnQgYSBjbGVhbiByZXBhaW50LCBtZWFuaW5nIHRoYXQg
aWYgd2UncmUgY3VycmVudGx5IHdhaXRpbmcgZm9yIHRoZSByZW5kZXJlcgogICAgIC8vIHRvIGZp
bmlzaCBhbiB1cGRhdGUsIHdlJ2xsIGhhdmUgdG8gc2NoZWR1bGUgYW5vdGhlciBmbHVzaCB3aGVu
IGl0J3MgZG9uZS4KICAgICBBU1NFUlQoIW1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCk7
Ci0gICAgbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEID0gY2FsbGJhY2tJRDsKKyAgICBt
X2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQgPSBPcHRpb25hbENhbGxiYWNrSUQoY2FsbGJh
Y2tJRCk7CiAgICAgbV9mb3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2ggPSBtX3NjaGVk
dWxlZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTY3
LDggKzE2Nyw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJh
bWUoKQogICAgICAgICAvLyBhcmVuJ3QgbmVlZGVkLiBJZiB0aGV5IGFyZSwgdGhlIGNhbGxiYWNr
IHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uCiAgICAgICAgIC8vIGlzIGNhbGxl
ZCBhZnRlciB0aGUgbmV4dCB1cGRhdGUuCiAgICAgICAgIGlmICghbV9mb3JjZVJlcGFpbnRBc3lu
Yy5uZWVkc0ZyZXNoRmx1c2gpIHsKLSAgICAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNr
SUQpKTsKLSAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMgPSB7IH07CisgICAgICAgICAg
ICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2sobV9m
b3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lELmNhbGxiYWNrSUQoKSkpOworICAgICAgICAgICAg
bV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgT3B0aW9uYWxDYWxsYmFja0lEKCkgLCBmYWxzZSB9Owog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNGcmVz
aEZsdXNoID0gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBlMmM5ZmEyYjg4YjBjODM3N2EzYWQ5
OTg4NmRjZjBjMDg5N2I1ZmMwLi43NGJiNWQzNTliZjIzZmJjZTY5NjNkNGZiZGRjOWEwMmMzZGVh
ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJPcHRp
b25hbENhbGxiYWNrSUQuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC01MSw3ICs1Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGludmFsaWRh
dGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKyAg
ICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CkBA
IC04NSw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclJlbmRlcmVy
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zY2hlZHVsZWRXaGlsZVdhaXRpbmdGb3JSZW5kZXJlciB7
IGZhbHNlIH07CiAgICAgc3RydWN0IHsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCB7IDAg
fTsKKyAgICAgICAgT3B0aW9uYWxDYWxsYmFja0lEIGNhbGxiYWNrSUQ7CiAgICAgICAgIGJvb2wg
bmVlZHNGcmVzaEZsdXNoIHsgZmFsc2UgfTsKICAgICB9IG1fZm9yY2VSZXBhaW50QXN5bmM7CiAg
ICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBtX2xheWVyRmx1c2hU
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKaW5kZXggOTA4NTc1NjVlNTM2NmU0YTA4MDEyZDY1YzcyZDY5Zjg4NTUyNDY2Yi4uYTdkYTM4
MjBjNDRkMWE5MjI2ZGNlNjc5MDYwODQ2NjBlYTQ5ODU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgpAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6
IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNr
Z3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJl
cGFpbnQoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3Qg
LypjYWxsYmFja0lEKi8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGZvcmNl
UmVwYWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29s
IGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
QEAgLTExNiw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hB
ZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoKT4m
Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUg
Ki8sIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qIGNhbGxiYWNrSURzICovKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZl
Y3RvcjxDYWxsYmFja0lEPiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdN
b2RlKExheWVySG9zdGluZ01vZGUpIHsgfQogCiAgICAgdmlydHVhbCBib29sIG1hcmtMYXllcnNW
b2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE3NCw3
ICsxNzUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29t
KGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJh
Y2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAg
dmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVD
VEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4IGIwNzZmMzRjMWFj
NjhjMzlkMGQ4MDBmM2VhYWM0MDY1ZjA1NzBlZWUuLjZmNThmZThlMmExZjVhNDkxNzA3Nzk3NTRh
NWIxN2JhZmIyZTg3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDcgQEAgbWVz
c2FnZXMgLT4gRHJhd2luZ0FyZWEgewogICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQo
dWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSwgZG91YmxlIHN0YXJ0VGltZSkKICAgICBBY2Nl
bGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5KQogICAg
IAotICAgIEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICNlbmRpZgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYm
IFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKaW5k
ZXggMmY1NzExMTEwM2M3ZWVmOGNiYmRmZDBiOWY4NzI1OGNlNmI4OGFkYy4uZTJjMDczMzM5NDIz
OWIzODRjMDY1Yzg3OWRkMWE4NWJiNDhhYWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKIAorI2lu
Y2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRl
ZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH07CiAgICAgdmlydHVhbCB2b2lk
IGZvcmNlUmVwYWludCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMo
dWludDY0X3QgLypjYWxsYmFja0lEKi8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5n
ZWQoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBhYzMwZDliYTEwNjQzZDA4Y2UzMjI4ZTY3ZjI3OThhY2UxZWQxNTBmLi4yY2Jh
M2ZjZDAwOWJhNWUzZGRjZmRmMmJkNjNmNDVjODZmYzRkMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02MDAsNyArNjAwLDcgQEAgdm9p
ZCBXZWJQYWdlOjplbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKCkKIHZvaWQg
V2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKICAgICBpZiAobV9hY3Rpdml0eVN0YXRlICE9IHBhcmFtZXRlcnMuYWN0
aXZpdHlTdGF0ZSkKLSAgICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5
U3RhdGUsIGZhbHNlLCBWZWN0b3I8dWludDY0X3Q+KCkpOworICAgICAgICBzZXRBY3Rpdml0eVN0
YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwgZmFsc2UsIFZlY3RvcjxDYWxsYmFja0lEPigp
KTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5n
TW9kZSkKICAgICAgICAgc2V0TGF5ZXJIb3N0aW5nTW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGlu
Z01vZGUpOwogfQpAQCAtMTkyMSw3ICsxOTIxLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRGb290ZXJC
YW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiAKICNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQogCi12b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJbnRSZWN0IHNuYXBzaG90UmVjdCwg
SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVjdCBzbmFwc2hvdFJlY3QsIEludFNp
emUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlvbnMgPSBzdGF0aWNfY2FzdDxTbmFw
c2hvdE9wdGlvbnM+KG9wdGlvbnMpOwogICAgIHNuYXBzaG90T3B0aW9ucyB8PSBTbmFwc2hvdE9w
dGlvbnNTaGFyZWFibGU7CkBAIC0yNDIyLDcgKzI0MjIsNyBAQCB2b2lkIFdlYlBhZ2U6OmtleUV2
ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGtleWJvYXJkRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnZh
bGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGJvb2wgaXNFbmFibGVkID0gZmFs
c2U7CiAgICAgaW50MzJfdCBzdGF0ZSA9IDA7CkBAIC0yNjI1LDcgKzI2MjUsNyBAQCB2b2lkIFdl
YlBhZ2U6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiAgICAgICAgIHZpZXctPndpbGxFbmRMaXZl
UmVzaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhi
b29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGV2ZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKQEAgLTI2OTAsNyArMjY5MCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlz
aWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5
U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKQor
dm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2
aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8
Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewogICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNo
YW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwogICAgIG1fYWN0aXZpdHlT
dGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0yODQxLDcgKzI4NDEsNyBAQCBLZXlib2FyZFVJTW9k
ZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJv
YXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVs
bCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nl
c3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBk
b24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KQEAgLTI4NjIs
MTQgKzI4NjIsMTQgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgaGFkRXhj
ZXB0aW9uLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Q29u
dGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRDb250
ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgcmVzdWx0
U3RyaW5nID0gbV9tYWluRnJhbWUtPmNvbnRlbnRzQXNTdHJpbmcoKTsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJ
RCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQotdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0Fz
TUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRz
QXNNSFRNTERhdGEoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gYnVmZmVyID0g
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShtX3BhZ2UuZ2V0KCkpOwogCkBAIC0yODgw
LDcgKzI4ODAsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0
X3QgY2FsbGJhY2tJRCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVF
eHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24oKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxi
YWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwpAQCAtMjg5Niw3ICsyODk2LDcgQEAgc3Rh
dGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGRhdGE7CkBAIC0yOTEyLDcgKzI5MTIsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0Fz
U3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9y
Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUq
IGZvY3VzZWRPck1haW5GcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkpOwogICAgIFN0cmluZyByZXN1bHRT
dHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUtPnNlbGVjdGlvbkFzU3RyaW5nKCk7CkBAIC0yOTIx
LDcgKzI5MjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFN0cmluZyByZXN1bHRTdHJpbmc7CiAgICAg
aWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpKQpAQCAtMjkzMCw3ICsyOTMwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0U3RyaW5nLCBjYWxsYmFj
a0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsK
QEAgLTI5NjIsNyArMjk2Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyCiAgICAgcmV0dXJu
ICZzdWJyZXNvdXJjZS0+ZGF0YSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0
YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3Ry
aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmlu
ZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCkpIHsKQEAgLTI5ODEsNyArMjk4MSw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VVCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2so
ZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFdlYkFy
Y2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBkYXRhOwpAQCAtMzAwNCw3ICszMDA0LDcgQEAgdm9pZCBXZWJQYWdlOjpmb3JjZVJl
cGFpbnRXaXRob3V0Q2FsbGJhY2soKQogICAgIG1fZHJhd2luZ0FyZWEtPmZvcmNlUmVwYWludCgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IGlmIChtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnRBc3luYyhjYWxsYmFja0lEKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDM4Myw3ICs0MzgzLDcgQEAgdm9pZCBXZWJQYWdlOjplbmRQcmludGlu
ZygpCiAgICAgbV9wcmludENvbnRleHQgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlBhZ2U6OmNv
bXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpjb21wdXRlUGFn
ZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFZlY3RvcjxJbnRSZWN0PiByZXN1bHRQ
YWdlUmVjdHM7CiAgICAgZG91YmxlIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyA9
IDE7CkBAIC00NDEyLDcgKzQ0MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaQogfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi12b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGltYWdlU2l6ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZy
YW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5jb3JlRnJhbWUoKSA6IDA7CkBA
IC00NDYxLDcgKzQ0NjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SW1hZ2VDYWxsYmFjayhoYW5kbGUsIGNhbGxiYWNrSUQpKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVp
bnQzMl90IGNvdW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwogICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFt
ZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFnZURhdGEpOwpAQCAtNDUxOSw3ICs0
NTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHUKIH0KIAogI2VsaWYgUExBVEZPUk0oR1RL
KQotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBiZWdpblByaW50
aW5nKGZyYW1lSUQsIHByaW50SW5mbyk7CiAgICAgaWYgKG1fcHJpbnRDb250ZXh0ICYmIG1fcHJp
bnRPcGVyYXRpb24pIHsKQEAgLTQ1MzAsNyArNDUzMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1Bh
Z2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJh
Y2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UHJpbnRGaW5pc2hlZENhbGxiYWNrKGVycm9yLCBjYWxsYmFja0lE
KSk7CiAgICAgbV9wcmludE9wZXJhdGlvbiA9IG51bGxwdHI7CkBAIC00ODM3LDcgKzQ4MzcsNyBA
QCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbgogICAgICAgICBmcmFtZS5lZGl0b3IoKS5jb25maXJt
Q29tcG9zaXRpb24odGV4dCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2VBc3lu
Yyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5j
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC00ODUyLDcgKzQ4NTIs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJ
RCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRpbmdSYW5nZUNhbGxiYWNr
KEVkaXRpbmdSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAKQEAgLTQ4NjcsNyArNDg2Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2Vs
ZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFZGl0aW5nUmFuZ2VDYWxsYmFjayhFZGl0aW5nUmFuZ2UobG9jYXRpb24s
IGxlbmd0aCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRl
eEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgdWludDY0X3QgaW5kZXggPSBub3RGb3VuZDsKIApAQCAtNDg4NSw3ICs0ODg1LDcgQEAgdm9p
ZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW50NjQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVu
c2lnbmVkQ2FsbGJhY2soaW5kZXgsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGlu
Z1JhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBJbnRSZWN0IHJlc3VsdChJbnRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgwLCAwKSk7CkBAIC01NjkyLDcgKzU2OTIsNyBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1
bWVudExvYWRlciwgRnJhbQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9m
aWxlKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoIWNvbW1vblZNKCkubV9wZXJC
eXRlY29kZVByb2ZpbGVyKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U3RyaW5nQ2FsbGJhY2soU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKQEAgLTU3MDQsNyArNTcwNCw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHQs
IGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNhbXBsaW5nUHJvZmls
ZXJPdXRwdXQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lmIEVOQUJMRShTQU1QTElOR19Q
Uk9GSUxFUikKICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gY29tbW9u
Vk0oKS5zYW1wbGluZ1Byb2ZpbGVyKCk7CkBAIC01ODg3LDEwICs1ODg3LDEwIEBAIHZvaWQgV2Vi
UGFnZTo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwg
T3B0aW9uYWxDYWxsYmFja0lEIG5ld0NhbGxiYWNrSUQpCiB7CiAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50TG9hZGVyID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSkKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
ZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lEKTsKKyAgICAgICAgZG9jdW1l
bnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlm
aWVyLnRvSW50ZWdlcigpLCBuZXdDYWxsYmFja0lELnRvSW50ZWdlcigpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggY2Ex
MjlmYTBkOGJkOWY2NTM0MjIyMTRkZmU1YzFlMDY5MTY3ODYwZS4uYmY0YmNlYWUyZTgxY2E3ZWZl
MDI2MTlhZTM4MzZmMDI5Y2Q5MWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJDYWxs
YmFja0lELmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBh
Z2VGdWxsU2NyZWVuQ2xpZW50LmgiCkBAIC0zOSw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJU
cmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxiYWNrSUQuaCIKICNpbmNsdWRl
ICJQbHVnaW4uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCkBAIC01NDIsNTAgKzU0NCw1MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNw
ZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KTsKIAogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwotICAgIHZvaWQgc2VsZWN0V2l0aEdl
c3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1cGRh
dGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVp
bnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVT
dGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgdXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pOwotICAgIHZvaWQg
c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdl
c3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RXaXRoVHdv
VG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFudWxhcml0
eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rp
b25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFu
dWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0
aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRp
cmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLQotICAgIHZv
aWQgcmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91
bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisKKyAgICB2b2lk
IHJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgcmVwbGFjZURp
Y3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7
CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29u
c3QgU3RyaW5nJiBuZXdUZXh0KTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEo
Y29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24s
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2Nv
cnJlY3Rpb24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgYXBwbHlBdXRvY29ycmVjdGlvbihjb25z
dCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29y
cmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIGJvb2wmIGNvcnJlY3Rpb25BcHBs
aWVkKTsKLSAgICB2b2lkIHJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2Fs
bGJhY2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KENhbGxiYWNr
SUQpOwogICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYgYmVmb3JlVGV4
dCwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBhZnRl
clRleHQsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBn
ZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
JiwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKTsKICAgICB2b2lkIHJlcXVlc3RQ
b3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Jik7
CiAgICAgdm9pZCBzdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBzdG9wSW50ZXJhY3Rpb24oKTsKICAgICB2b2lk
IHBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKTsKLSAgICB2b2lkIGZvY3Vz
TmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRBc3Np
c3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVT
ZWxlY3Rpb24pOwogICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdEZvckVsZW1lbnRBdEludGVyYWN0
aW9uTG9jYXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFwcGVhcmFuY2UoKTsKLSAg
ICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgaGFuZGxlVHdvRmlu
Z2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQ2NF90IHJlcXVlc3RJ
RCk7Ci0gICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1
aW50MzJfdCwgaW50MzJfdCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRSZWN0
c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5nJiwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVj
dGlvbk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRS
ZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tJRCk7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRj
aEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKGNvbnN0IFZlY3RvcjxXZWJUb3VjaEV2ZW50LCAxPiYg
cXVldWUpOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2Uo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2so
Y29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBleGVjdXRlRWRp
dENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAKICAgICBT
ZWNvbmRzIGV2ZW50VGhyb3R0bGluZ0RlbGF5KCkgY29uc3Q7CiAKQEAgLTY3MywxNyArNjc1LDE3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4odWludDY0
X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dElu
cHV0KTsKIAogICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3Vw
ID0gZmFsc2UsIHVpbnQzMl90IGVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbyA9ICh1aW50MzJfdClF
ZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCwgYm9vbCBzdXBwcmVzc1NlbGVj
dGlvblVwZGF0ZSA9IGZhbHNlKTsKLSAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3Qg
Y2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKENhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENhbGxiYWNrSUQpOworICAgIHZvaWQgY2hh
cmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVk
aXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb25Bc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVy
bGluZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSk7CiAgICAgdm9pZCBjb25maXJtQ29t
cG9zaXRpb25Bc3luYygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgaW5zZXJ0RGlj
dGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJl
cGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sIHJlZ2lzdGVyVW5kb0dyb3Vw
ID0gZmFsc2UpOwotICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBmb250QXRTZWxlY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBhdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihDYWxsYmFja0lEKTsKICNlbmRp
ZgogCiAgICAgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgV1RGOjpTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZXN1bHQpOwpAQCAtNzQ2LDE4ICs3NDgsMTggQEAg
cHVibGljOgogCiAgICAgdm9pZCBiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKLSAgICB2b2lkIGNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjb21w
dXRlUGFnZXNGb3JQcmludGluZ0ltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSYgdG90YWxTY2Fs
ZUZhY3Rvcik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2
b2lkIGRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVp
bnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAg
dm9pZCBkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBjb21w
dXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYpOworICAg
IHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiwgQ2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlOjpD
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5PiYmKTsKICNl
bmRpZgogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmco
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmlu
dGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBDYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRSZXNvdXJjZVJlcXVlc3Qo
dW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC05MTUs
OCArOTE3LDggQEAgcHVibGljOgogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3Jl
YXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgdXBk
YXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2FkZXImLCBXZWJDb3JlOjpGcmFt
ZSYpOwogCi0gICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dChDYWxsYmFja0lEKTsKICAgICAKICNpZiBFTkFCTEUoU0VS
VklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQogICAg
IHZvaWQgaGFuZGxlVGVsZXBob25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1iZXIsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC05NjksNyArOTcxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
dWludDY0X3QgbmV3Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIE9wdGlvbmFsQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sKTsKIAogI2lm
IEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQpAQCAtMTA1OSwxMSArMTA2MSwxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ29CYWNrKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAg
IHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90
KTsKICAgICB2b2lkIHRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwotICAgIHZvaWQgc2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0SW5p
dGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdXBkYXRlSXNJbldpbmRv
dyhib29sIGlzSW5pdGlhbFN0YXRlID0gZmFsc2UpOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENo
YW5nZSgpOwotICAgIHZvaWQgc2V0QWN0aXZpdHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGNhbGxiYWNrSURzKTsKLSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBT
dHJpbmcmLCB1aW50NjRfdCk7CisgICAgdm9pZCBzZXRBY3Rpdml0eVN0YXRlKFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcyk7CisgICAgdm9pZCB2YWxpZGF0ZUNv
bW1hbmQoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleGVjdXRlRWRpdENv
bW1hbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRFZGl0YWJs
ZShib29sKTsKIApAQCAtMTEwNCwyMCArMTEwNiwyMCBAQCBwcml2YXRlOgogICAgIHZvaWQgdmll
d1dpbGxTdGFydExpdmVSZXNpemUoKTsKICAgICB2b2lkIHZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgp
OwogCi0gICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEKTsKICNpZiBFTkFCTEUoTUhU
TUwpCi0gICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlc291cmNlRGF0YUZy
b21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9u
QXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNvdXJj
ZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwg
dWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmb3JjZVJlcGFpbnQodWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hv
dFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKENhbGxi
YWNrSUQpOworI2VuZGlmCisgICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlc291cmNlRGF0YUZyb21G
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxi
YWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKENhbGxiYWNr
SUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsK
KyAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCk7CisgICAgdm9p
ZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6Oklu
dFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7CiAKICAgICB2
b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAg
ICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCBmOGExOTc1ZDU0NTQwMTI5YTRhOTJmYjdmZWE3YWQ4Yjhl
ODE1Njg0Li5hYzkzZjJiMTMwOTUwZmE1Y2NkNDA3ZDliMTQwNGM5ZDMwMzM1MzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMjEsOCArMjEsOCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2V0QWN0aXZpdHlTdGF0ZSh1bnNpZ25lZCBhY3Rp
dml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgVmVjdG9yPHVpbnQ2
NF90PiBjYWxsYmFja0lEcykKKyAgICBTZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29s
IGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNldEFjdGl2aXR5U3RhdGUodW5zaWdu
ZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIFZlY3Rv
cjxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNhbGxiYWNrSURzKQogICAgIFNldExheWVySG9zdGluZ01v
ZGUoZW51bSBXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSkKIAogICAg
IFNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKQEAgLTU0LDM0ICs1NCwz
NCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbnNwZWN0b3JO
b2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAg
SW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBv
aW50KQogICAgIEJsdXJBc3Npc3RlZE5vZGUoKQotICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNl
SXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVj
dGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaGVz
LCBib29sIGJhc2VJc1N0YXJ0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBV
cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBvc2l0aW9uKQotICAgIFNlbGVjdFdpdGhUd29U
b3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdl
YkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBFeHRlbmRTZWxlY3Rp
b24odWludDMyX3QgZ3JhbnVsYXJpdHkpCiAgICAgU2VsZWN0V29yZEJhY2t3YXJkKCkKLSAgICBN
b3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Ci0gICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFBvc2l0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6OkludFBv
aW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0
aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0
ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJ
RCkKKyAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50
KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCisgICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90
IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIFNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCisgICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJl
Y3Rpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZXBsYWNl
RGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3VGV4dCkKICAgICBSZXBsYWNl
U2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3VGV4dCkKLSAgICBSZXF1ZXN0
QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwg
U3RyaW5nIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXF1ZXN0QXV0
b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNvcnJl
Y3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcg
b3JpZ2luYWxUZXh0KSAtPiAoYm9vbCBhdXRvY29ycmVjdGlvbkFwcGxpZWQpCi0gICAgUmVxdWVz
dEF1dG9jb3JyZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
R2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KCkgLT4gKFN0cmluZyBiZWZvcmVDb250ZXh0LCBTdHJp
bmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGFmdGVyQ29udGV4dCwg
dWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkgCiAgICAgR2V0UG9zaXRpb25JbmZv
cm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1
ZXN0KSAtPiAoc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24g
aW5mb3JtYXRpb24pCiAgICAgUmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdCkKICAgICBTdGFydEludGVy
YWN0aW9uV2l0aEVsZW1lbnRBdFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAg
IFN0b3BJbnRlcmFjdGlvbigpCiAgICAgUGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBh
Y3Rpb24pCi0gICAgRm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCB1aW50NjRf
dCBjYWxsYmFja0lEKQorICAgIEZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QXNzaXN0ZWROb2RlVmFsdWUo
U3RyaW5nIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91YmxlIHZh
bHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWludDMyX3QgaW5kZXgsIGJv
b2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbikKQEAgLTkxLDEzICs5MSwxMyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKICAgICBBcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpCiAgICAgQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShTdHJpbmcgY29udGVu
dFNpemVDYXRlZ29yeSkKLSAgICBFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soU3RyaW5n
IG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U2VsZWN0aW9uQ29udGV4dCh1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhTdHJp
bmcgbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0aW9u
Q29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRBbGxvd3NNZWRp
YURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCBhbGxvd3MpCiAgICAgSGFuZGxlVHdvRmluZ2Vy
VGFwQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgcmVxdWVzdElEKQog
ICAgIFNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxlKQotICAgIEdl
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFy
aXR5LCBpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgR2V0UmVjdHNB
dFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJpbmcgdGV4dCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgR2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rp
b25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCk7CisgICAgR2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhU
ZXh0KGludDMyX3Qgb2Zmc2V0LCBTdHJpbmcgdGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpOwogI2VuZGlmCiAKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29u
dHJvbGxlZCkKQEAgLTE1NiwxOSArMTU2LDE5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQo
KQogCiAgICAgIyBDYWxsYmFja3MuCi0gICAgR2V0Q29udGVudHNBc1N0cmluZyh1aW50NjRfdCBj
YWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNTdHJpbmcoV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCkKLSNlbmRpZgotICAgIEdldE1haW5SZXNvdXJjZURhdGFPZkZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0UmVzb3Vy
Y2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyByZXNvdXJjZVVSTCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bih1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKFN0cmluZyBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRm9yY2VSZXBh
aW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc01IVE1MRGF0YShXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNlbmRpZgorICAgIEdldE1haW5SZXNvdXJjZURh
dGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
cmVzb3VyY2VVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFdlYkFyY2hpdmVPZkZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAjIERpY3Rpb25hcnkgc3VwcG9ydC4K
QEAgLTE5Miw3ICsxOTIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBUcnlDbG9zZSgpCiAKICAgICBTZXRFZGl0YWJsZShib29sIGVkaXRhYmxlKQotICAgIFZh
bGlkYXRlQ29tbWFuZChTdHJpbmcgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBWYWxp
ZGF0ZUNvbW1hbmQoU3RyaW5nIG5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIEV4ZWN1dGVFZGl0Q29tbWFuZChTdHJpbmcgbmFtZSwgU3RyaW5nIGFyZ3VtZW50KQogCiAg
ICAgRGlkUmVtb3ZlRWRpdENvbW1hbmQodWludDY0X3QgY29tbWFuZElEKQpAQCAtMzIyLDE2ICsz
MjIsMTYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBQcmlu
dGluZy4KICAgICBCZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OlByaW50SW5mbyBwcmludEluZm8pCiAgICAgRW5kUHJpbnRpbmcoKQotICAgIENvbXB1dGVQYWdl
c0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBw
cmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
RHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5m
byBwcmludEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFn
ZVNpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERyYXdSZWN0VG9J
bWFnZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEcmF3UGFnZXNUb1BERih1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50NjRf
dCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50KSBEZWxheWVkCisgICAgQ29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdl
YktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
IC0+ICh1aW50MzJfdCBwYWdlQ291bnQpIERlbGF5ZWQKICNlbmRpZgogI2VuZGlmCiAjaWYgUExB
VEZPUk0oR1RLKQotICAgIERyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5k
aWYKIAogICAgICMgTWVkaWEKQEAgLTM4MywxNyArMzgzLDE3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJl
ciwgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCiAKICAgICBJ
bnNlcnRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBy
ZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCB1aW50MzJfdCBlZGl0aW5n
UmFuZ2VJc1JlbGF0aXZlVG8sIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpCi0gICAgR2V0
TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNlbGVjdGVkUmFu
Z2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENoYXJhY3RlckluZGV4Rm9yUG9pbnRB
c3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFu
Z2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEdldE1hcmtlZFJhbmdlQXN5bmMo
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0ZWRSYW5nZUFzeW5j
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIENoYXJhY3RlckluZGV4Rm9yUG9p
bnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpOworICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0IFdlYktp
dDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAg
ICAgU2V0Q29tcG9zaXRpb25Bc3luYyhTdHJpbmcgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBv
c2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2Ug
c2VsZWN0aW9uUmFuZ2UsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJh
bmdlKQogICAgIENvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICNlbmRpZgogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBJbnNlcnREaWN0YXRlZFRleHRBc3luYyhTdHJpbmcgdGV4dCwgc3RydWN0IFdl
YktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIFZlY3RvcjxXZWJDb3JlOjpEaWN0
YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJlZ2lzdGVyVW5k
b0dyb3VwKQotICAgIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0
cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0g
ICAgRm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5n
ZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIEZvbnRBdFNlbGVj
dGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIFNldE1p
bmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUgbWluaW11bUxheW91dFNpemUpCkBAIC00
MTIsMTEgKzQxMiwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlubmluZykKICAgICBTZXRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUp
CiAKLSAgICBHZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRC
eXRlY29kZVByb2ZpbGUoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKLSAgICBHZXRT
YW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgR2V0U2FtcGxp
bmdQcm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKLSAg
ICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6Oklu
dFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCkK
KyAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6
OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFBlcmZvcm1JbW1lZGlhdGVBY3Rp
b25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uKQogICAgIElt
bWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpCkBAIC00NjIsNyArNDYyLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAotICAgIERpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0Nh
bGxiYWNrSUQpCisgICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEIG5ld0NhbGxiYWNrSUQpCiAgICAgU2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJ
Y29uTG9hZGluZ0NsaWVudCkKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmNwcAppbmRleCBjOGM5M2IyYjkwNTg3ZGMwNjk2ZmM1ZGE2YmFjNDQwMjNhMzc1MWMx
Li4yYmIzNmY2MzhmNzJiMmNmYWY3MjVjNGI1OGRmMTQ3ODIyMjhlNjdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZvaWQgc3RhcnRQcmludChXZWJDb3JlOjpQcmludENvbnRleHQqIHByaW50Q29udGV4
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0UHJpbnQoV2Vi
Q29yZTo6UHJpbnRDb250ZXh0KiBwcmludENvbnRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gcHJpbnRDb250ZXh0Owog
ICAgICAgICBtX2NhbGxiYWNrSUQgPSBjYWxsYmFja0lEOwpAQCAtMzk4LDcgKzM5OCw2IEBAIFdl
YlByaW50T3BlcmF0aW9uR3RrOjpXZWJQcmludE9wZXJhdGlvbkd0ayhXZWJQYWdlKiBwYWdlLCBj
b25zdCBQcmludEluZm8mIHByaW50CiAgICAgLCBtX3BhZ2VTZXR1cChwcmludEluZm8ucGFnZVNl
dHVwLmdldCgpKQogICAgICwgbV9wcmludE1vZGUocHJpbnRJbmZvLnByaW50TW9kZSkKICAgICAs
IG1fcHJpbnRDb250ZXh0KDApCi0gICAgLCBtX2NhbGxiYWNrSUQoMCkKICAgICAsIG1feERQSSgx
KQogICAgICwgbV95RFBJKDEpCiAgICAgLCBtX3ByaW50UGFnZXNJZGxlSWQoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRp
b25HdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuaAppbmRleCA3NDNjYzJjZTUyNTg5N2QxOTA3YjgyZWJmYjI0MTIzZDgyMjMw
NDllLi40MDk1OTVlMjllZDRhNTJhMmM5NTkyNzUzMGVjMjI3OWU1ZmYwYmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9u
R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlz
Y29ubmVjdEZyb21QYWdlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQcmludChXZWJDb3Jl
OjpQcmludENvbnRleHQqLCB1aW50NjRfdCBjYWxsYmFja0lEKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRDb250ZXh0KiwgQ2FsbGJhY2tJRCkgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJpbnRPcGVyYXRpb25HdGsoV2ViUGFnZSosIGNvbnN0IFBy
aW50SW5mbyYpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICBHUmVmUHRyPEd0
a1BhZ2VTZXR1cD4gbV9wYWdlU2V0dXA7CiAgICAgUHJpbnRJbmZvOjpQcmludE1vZGUgbV9wcmlu
dE1vZGU7CiAgICAgV2ViQ29yZTo6UHJpbnRDb250ZXh0KiBtX3ByaW50Q29udGV4dDsKLSAgICB1
aW50NjRfdCBtX2NhbGxiYWNrSUQ7CisgICAgQ2FsbGJhY2tJRCBtX2NhbGxiYWNrSUQ7CiAgICAg
UmVmUHRyPGNhaXJvX3Q+IG1fY2Fpcm9Db250ZXh0OwogICAgIGRvdWJsZSBtX3hEUEk7CiAgICAg
ZG91YmxlIG1feURQSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3NzU5MDZlZWU5YThhZGU0ZjQ1OTBjNWIxYjZmYjBm
ZDVmMGM5MmI4Li5lNzZmOWI3MWZkYWU5YjJkNDBmM2QyMWZjYmY4ZjMwMWEwZTc5MDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2
aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2Uo
KSkgewpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZv
ckJsb2NrQXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIHJhbmdlOwog
fQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBw
b2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTcyMiw3ICsxNzIyLDcg
QEAgYm9vbCBXZWJQYWdlOjpzaG91bGRTd2l0Y2hUb0Jsb2NrTW9kZUZvckhhbmRsZShjb25zdCBJ
bnRQb2ludCYgaGFuZGxlUG9pbnQsIFNlbGUKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0
b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVp
bnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIEludFBvaW50IHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXco
KS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKQEAgLTE3ODMsNyArMTc4Myw3IEBAIHZvaWQg
V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50
LCB1aW50MzJfdCB0b3VjaGVzCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhU
d29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVz
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
dG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBmcm9tUG9z
aXRpb24gPSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZS52aWV3KCktPnJvb3RW
aWV3VG9Db250ZW50cyhmcm9tKSk7CkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIFdlYlBhZ2U6
OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwg
cG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVk
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZz
ZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25CeU9m
ZnNldChpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1l
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAgICAgCkBAIC0xODUwLDcgKzE4NTAsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpbwogICAg
IHJldHVybiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChzdGFydEluZGV4ICsgb2Zmc2V0LCByb290
LmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRo
U2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKQEAgLTE4ODMsNyArMTg4
Myw3IEBAIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvCiAgICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxh
aW5UZXh0KCpzZWxlY3Rpb25SYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCAwLCB0YXJnZXRPZmZzZXQp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChp
bnQzMl90IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBv
ZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAgICAgdWludDMyX3QgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKQEAgLTE5MjgsNyAr
MTkyOCw3IEBAIFZpc2libGVQb3NpdGlvbiBXZWJQYWdlOjp2aXNpYmxlUG9zaXRpb25JbkZvY3Vz
ZWROb2RlRm9yUG9pbnQoY29uc3QgRnJhbWUmIGZyYW1lCiAgICAgcmV0dXJuIGZyYW1lLnZpc2li
bGVQb3NpdGlvbkZvclBvaW50KGNvbnN0cmFpbmVkUG9pbnQpOwogfQogCi12b2lkIFdlYlBhZ2U6
OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0g
dmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTkzOCw3ICsxOTM4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
LCBib29sIGlzSW50ZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxs
YmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVj
dFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbklu
Rm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlKTsKQEAgLTE5NTEsNyArMTk1MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkp
OwogfQogCi12b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGNvbnN0IEludFJlY3QmIGJs
b2NrUmVjdCwgY29uc3QgRnJhbQogICAgIHJldHVybiBibG9ja1JlY3QuaGVpZ2h0KCkgPiBmcmFt
ZS52aWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpICogZmFjdG9yOwogfQog
Ci12b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KGZyYW1lLCBwb2lu
dCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIwMjIs
MTMgKzIwMjIsMTMgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHUKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24o
dWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV9zZWxl
Y3Rpb25BbmNob3IgPSAoc3RhdGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24p
ID09IERpcmVjdGlvbkxlZnQpID8gU3RhcnQgOiBFbmQ7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0LCBj
YWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVu
dFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJf
dCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBn
cmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWdu
ZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBtX2luaXRpYWxTZWxlY3Rpb24tPnN0YXJ0UG9z
aXRpb24oKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
ID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMjEwOCw3ICsyMTA4LDcgQEAgdm9pZCBX
ZWJQYWdlOjpjb252ZXJ0U2VsZWN0aW9uUmVjdHNUb1Jvb3RWaWV3KEZyYW1lVmlldyogdmlldywg
VmVjdG9yPFNlbGVjdGlvblIKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3Rh
dGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdERp
Y3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5zdGFydCgpOwpAQCAtMjE5MCw3ICsyMTkwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNl
RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0
KQogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5n
JiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2Nv
cnJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKSB7CkBAIC0yMjM4LDE0ICsyMjM4LDE0IEBAIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRG
b3JBdXRvY29ycmVjdGlvbiwgdWluCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpB
dXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhyZWN0c0ZvclRleHQsIGZvbnROYW1lLmdldCgpLCBm
b250U2l6ZSwgZm9udFRyYWl0cywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmFw
cGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYm9vbCBjb3JyZWN0aW9u
QXBwbGllZDsKICAgICBzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5h
bFRleHQsIGNvcnJlY3Rpb25BcHBsaWVkKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlN0cmluZ0NhbGxiYWNrKGNvcnJlY3Rpb25BcHBsaWVkID8gY29ycmVjdGlvbiA6IFN0cmlu
ZygpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5k
V2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgZXhlY3V0
ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBTdHJpbmcoKSk7CiAgICAgaWYgKGNvbW1hbmROYW1l
ID09ICJ0b2dnbGVCb2xkIiB8fCBjb21tYW5kTmFtZSA9PSAidG9nZ2xlSXRhbGljIiB8fCBjb21t
YW5kTmFtZSA9PSAidG9nZ2xlVW5kZXJsaW5lIikKQEAgLTIzOTIsNyArMjM5Miw3IEBAIHN0YXRp
YyB2b2lkIGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQoRnJhbWUmIGZyYW1lLCBTdHJpbmcm
IGNvbnRleHRCZWZvcmUsIFN0CiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRv
Y29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVx
dWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
U3RyaW5nIGNvbnRleHRCZWZvcmU7CiAgICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKQEAgLTI2NzYs
NyArMjY3Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNBc3Npc3RhYmxlRWxlbWVudChOb2Rl
KiBzdGFydE5vZGUsIFBhZ2UmIHBhZ2UsIGJvb2wgaXNGb3J3CiAgICAgcmV0dXJuIG5leHRBc3Np
c3RhYmxlRWxlbWVudChzdGFydE5vZGUsIHBhZ2UsIGlzRm9yd2FyZCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0Zvcndh
cmQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9
IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgaXNG
b3J3YXJkKTsKICAgICBtX3VzZXJJc0ludGVyYWN0aW5nID0gdHJ1ZTsKQEAgLTMzMDAsNyArMzMw
MCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhjb25z
dCBWZWN0b3I8V2ViVG91Y2hFdmVudCwgMT4mIHF1CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdl
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXll
ZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0Fu
ZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kRHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7CiAgICAg
aWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewogICAgICAgICByZXBseS0+c2VuZCgx
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCAwMjBlZWMyZjg3MDcw
ZmQ3Yjc5YTc5ZTljMDFkZWMxMmM3NDQ5YjdlLi40Mjc1YWUzMTE1YTZkMjUxODRiYzJiZGRkODJk
MDRhNTVhOTk5N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgog
I2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBUmVtb3Rl
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKQEAgLTY4LDcgKzY5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1t
ZWRpYXRlbHkoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NM
YXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQp
IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBv
dmVycmlkZTsKICAgICB2b2lkIHdpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvciopOwpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3lu
Yyh1aW50NjRfdCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGZvcmNlUmVw
YWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4p
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGVkVmlld0V4cG9zZWRS
ZWN0OyB9CkBAIC0xMDMsNyArMTA0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1l
Q29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29s
IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBj
YWxsYmFja0lEcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJvdHRs
aW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDJkOWM5YTc4NmJjNWZm
ZThlMDRhMTU0OTMyNTcyODM1M2JkYzZmYzUuLjljMmU3M2EwNmFmOTIxMTRhYjQxM2ZjM2QzYzQw
NzY5MDU3MTVmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAt
NDg3LDcgKzQ4Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdT
dG9yZUZsdXNoZXI6OmZsdXNoKCkKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1v
dmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9v
bCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQor
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShB
Y3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNv
bnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdXNw
ZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2aXNpYmxlLCBsaWtlIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhPyBQcm9iYWJseS4KIApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6
RmxhZ3MsIGJvCiAgICAgfQogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjph
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgbV9wZW5kaW5nQ2FsbGJhY2tJRHMuYXBwZW5kKHN0YXRpY19j
YXN0PFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+KGNh
bGxiYWNrSUQpKTsKICAgICBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGNmODk1NzgxM2ZhNTM4NGQx
NGQ2ODJiOTE0NTk3OGYxODViNTNhZDEuLmYwZTZjNTUwNDFhNTFhMDJhNjdhMTE5MDE3NmZhMjZl
MTg0MWFmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAg
LTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJvb2wg
Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBvdmVycmlkZTsKICAgICB2b2lkIHNldExh
eWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBsYXllclRyZWVT
dGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRp
bmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CkBAIC04MSw3ICs4MSw3
IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmll
dyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgYWN0aXZp
dHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBi
b29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYp
IG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRh
dGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpOwogCiAgICAgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
b3ZlcnJpZGU7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3NlbmREaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGlt
ZXI7Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tJRHM7CisgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VD
YWxsYmFja0lEczsKICAgICBib29sIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwogCiAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV92aWV3T3ZlcmxheVJvb3RMYXllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDQ4MGQ2ODFmOGY2Yjhj
ZDZmMWE0MzNhMzAyZjMyYzAzN2RmMjhjMmYuLjFiMzBiNTMxN2U4Y2M4Y2IwZjQ3NGU1ZWI3M2Zk
ZWM5YzdhYmE1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OmZvcmNlUmVwYWludCgpCiAgICAgW0NBVHJhbnNhY3Rpb24gc3luY2hyb25pemVdOwogfQogCi1i
b29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyh1aW50
NjRfdCBjYWxsYmFja0lEKQorYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9y
Y2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChtX2xheWVy
VHJlZVN0YXRlSXNGcm96ZW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1OSw3ICs0NTks
NyBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAg
ICAgfQogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBuZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrSURzKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBi
b29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+
JiBuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogewogICAgIG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5hcHBlbmRWZWN0b3IobmV4dEFjdGl2aXR5U3RhdGVD
aGFuZ2VDYWxsYmFja0lEcyk7CiAgICAgbV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgfD0g
d2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZUFjdGl2aXR5U3RhdGVUaW1lckZp
cmVkKCkKICAgICBpZiAobV93YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUpCiAgICAgICAgIG1f
d2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGUoKSk7CiAKLSAgICBmb3IgKHVpbnQ2NF90IGNhbGxiYWNrSUQgOiBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCisgICAgZm9yIChhdXRvIGNhbGxiYWNrSUQgOiBtX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCiAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiAKICAgICBt
X25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuY2xlYXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAx
ZWIwNDM3MjgxMjgwY2NkMjAxNjgyNjdiNWFmZTU0YTk2NWZjZGE4Li4wMTkyZmYxYzE1NzMwZWE5
NTdjZGRhN2E0NWI4MGIyOTgwZmM2MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9p
ZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmUKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRl
eHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIG51bGxwdHIpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNv
bnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25z
dCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIEF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0OwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBX
ZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBF
ZGl0aW5nUmFuZ2UmIGVkaXQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dHJp
YnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHJlc3VsdCwgcmFuZ2VUb1NlbmQs
IGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24odWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9uKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcgZm9udE5hbWU7CiAgICAgZG91YmxlIGZvbnRTaXpl
ID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313781</attachid>
            <date>2017-06-24 00:47:47 -0700</date>
            <delta_ts>2017-06-24 00:53:30 -0700</delta_ts>
            <desc>Even more GTK+ and WPE build fixes</desc>
            <filename>bug-173803-20170624004746.patch</filename>
            <type>text/plain</type>
            <size>176611</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCAzZDJkZTkxOTViOWIx
OTMzNWZlYmQ3N2EwZWVmNzU2MzlhMTNhN2Y2Li41YTlhMDNiODIyZWVjNWE3NjlkMDU3ZDczY2Jm
YzllZmIzMGJjODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0
b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5z
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCAw
KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJ
RCgpKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAg
ICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NhbGxiYWNrSUQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTMxMWQ5OGE2NDk3ZjAzN2Vm
N2EwY2EyMDc4NGRmN2NkMzViYzczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NhbGxiYWNrSUQuaApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoOworCit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBBTFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQoKQorICAgIHsgfQorCisgICAgQUxX
QVlTX0lOTElORSBDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisgICAgICAg
IDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgICAgICBBU1NFUlQoSGFzaFRyYWl0czx1
aW50NjRfdD46OmVtcHR5VmFsdWUoKSAhPSBtX2lkICYmICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6
aXNEZWxldGVkVmFsdWUobV9pZCkpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDYWxsYmFja0lEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pZCA9PSBvdGhlci5tX2lkOyB9
CisKKyAgICB1aW50NjRfdCB0b0ludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAg
QUxXQVlTX0lOTElORSBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkQ2FsbGJh
Y2tJRChtX2lkKTsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZENhbGxi
YWNrSUQodWludDY0X3QgcmF3SWQpCisgICAgeworICAgICAgICByZXR1cm4gSGFzaFRyYWl0czx1
aW50NjRfdD46OmVtcHR5VmFsdWUoKSAhPSByYXdJZCAmJiAhSGFzaFRyYWl0czx1aW50NjRfdD46
OmlzRGVsZXRlZFZhbHVlKHJhd0lkKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBDYWxsYmFja0lEIGZyb21JbnRlZ2VyKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNWYWxpZENhbGxiYWNrSUQocmF3SWQpKTsKKyAgICAgICAgcmV0dXJu
IENhbGxiYWNrSUQocmF3SWQpOworICAgIH0KKworICAgIHN0YXRpYyBDYWxsYmFja0lEIGdlbmVy
YXRlSUQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAg
ICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUNhbGxiYWNrSUQgPSAxOworICAgICAgICByZXR1cm4g
Q2FsbGJhY2tJRCh1bmlxdWVDYWxsYmFja0lEKyspOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIENhbGxiYWNrSUQmIGNhbGxiYWNrSUQpCisgICAgeworICAg
ICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZXIuZGVjb2RlKGNhbGxiYWNrSUQubV9pZCk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQUxXQVlTX0lOTElORSBleHBsaWNpdCBD
YWxsYmFja0lEKHVpbnQ2NF90IG5ld0lEKQorICAgICAgICA6IG1faWQobmV3SUQpCisgICAgewor
ICAgICAgICBBU1NFUlQobmV3SUQgIT0gSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUo
KSk7CisgICAgfQorCisgICAgZnJpZW5kIGNsYXNzIENhbGxiYWNrTWFwOworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDYWxsYmFja1R5cGU+IGZyaWVuZCBjbGFzcyBTcGVjaWZpY0NhbGxiYWNrTWFw
OworICAgIGZyaWVuZCBjbGFzcyBPcHRpb25hbENhbGxiYWNrSUQ7CisgICAgZnJpZW5kIHN0cnVj
dCBXVEY6OkNhbGxiYWNrSURIYXNoOworICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+OworCisgICAgdWludDY0X3QgbV9pZCB7IEhhc2hUcmFpdHM8dWludDY0
X3Q+OjplbXB0eVZhbHVlKCkgfTsKK307CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVj
dCBDYWxsYmFja0lESGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0
OjpDYWxsYmFja0lEJiBjYWxsYmFja0lEKSB7IHJldHVybiBpbnRIYXNoKGNhbGxiYWNrSUQubV9p
ZCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGEs
IGNvbnN0IFdlYktpdDo6Q2FsbGJhY2tJRCYgYikgeyByZXR1cm4gYS5tX2lkID09IGIubV9pZDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJ
RD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJLaXQ6OkNhbGxiYWNrSUQ+IHsKKyAgICBzdGF0aWMg
V2ViS2l0OjpDYWxsYmFja0lEIGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJLaXQ6OkNhbGxiYWNr
SUQoKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OkNh
bGxiYWNrSUQmIHNsb3QpIHsgc2xvdCA9IFdlYktpdDo6Q2FsbGJhY2tJRChzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBzbG90KSB7IHJldHVybiBzbG90Lm1faWQgPT0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Cit9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpDYWxsYmFja0lEPiB7CisgICAgdHlwZWRlZiBDYWxs
YmFja0lESGFzaCBIYXNoOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL09wdGlvbmFsQ2FsbGJhY2tJRC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL09wdGlvbmFs
Q2FsbGJhY2tJRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NGU3MmUwY2U2NWQ2MmQ2ZTBhZmI2M2JmMGVjMjU4
ZDk0M2RhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9u
YWxDYWxsYmFja0lELmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IE9wdGlvbmFsQ2FsbGJhY2tJRCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgT3B0aW9uYWxDYWxs
YmFja0lEKCkgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGV4cGxpY2l0IE9wdGlvbmFsQ2FsbGJh
Y2tJRChjb25zdCBDYWxsYmFja0lEJiBvdGhlcklEKQorICAgICAgICA6IG1faWQob3RoZXJJRC5t
X2lkKQorICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsQ2FsbGJhY2tJ
RChjb25zdCBPcHRpb25hbENhbGxiYWNrSUQmIG90aGVySUQpCisgICAgICAgIDogbV9pZChvdGhl
cklELm1faWQpCisgICAgeworICAgICAgICBBU1NFUlQoIUhhc2hUcmFpdHM8dWludDY0X3Q+Ojpp
c0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisgICAgdWludDY0X3QgdG9JbnRlZ2VyKCkg
eyByZXR1cm4gbV9pZDsgfQorICAgIENhbGxiYWNrSUQgY2FsbGJhY2tJRCgpCisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChDYWxsYmFja0lEOjppc1ZhbGlkQ2FsbGJhY2tJRChtX2lkKSk7
CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKG1faWQpOworICAgIH0KKworICAgIG9wZXJhdG9y
IGJvb2woKSB7IHJldHVybiBtX2lkOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAhSGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVl
KHJhd0lkKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNWYWxpZCgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2lkOworICAgIH0KKworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBP
cHRpb25hbENhbGxiYWNrSUQmIGNhbGxiYWNrSUQpCisgICAgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlY29kZXIuZGVjb2RlKGNhbGxiYWNrSUQubV9pZCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgdWludDY0X3QgbV9pZCB7IEhhc2hUcmFpdHM8dWludDY0X3Q+Ojpl
bXB0eVZhbHVlKCkgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCAwYWE0ZmIxNTY5OTY0YjUz
OTQ4ZGEyYjUzMmQzZDZiMzIyYmZhMjhmLi4yYTQ1ZmEyNjBhOGU1MDMxMjZmMTNkOTE5MjkwN2Yw
ZWUzNWQ0YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uX2gKICNkZWZpbmUgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b25faAogCisjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgpAQCAtMjYxLDcgKzI2Miw3IEBAIHB1YmxpYzoK
ICAgICB1aW50NjRfdCB0cmFuc2FjdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlv
bklEOyB9CiAgICAgdm9pZCBzZXRUcmFuc2FjdGlvbklEKHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQp
IHsgbV90cmFuc2FjdGlvbklEID0gdHJhbnNhY3Rpb25JRDsgfQogCi0gICAgdHlwZWRlZiB1aW50
NjRfdCBUcmFuc2FjdGlvbkNhbGxiYWNrSUQ7CisgICAgdHlwZWRlZiBDYWxsYmFja0lEIFRyYW5z
YWN0aW9uQ2FsbGJhY2tJRDsKICAgICBjb25zdCBWZWN0b3I8VHJhbnNhY3Rpb25DYWxsYmFja0lE
PiYgY2FsbGJhY2tJRHMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSURzOyB9CiAgICAgdm9p
ZCBzZXRDYWxsYmFja0lEcyhWZWN0b3I8VHJhbnNhY3Rpb25DYWxsYmFja0lEPiYmIGNhbGxiYWNr
SURzKSB7IG1fY2FsbGJhY2tJRHMgPSBXVEZNb3ZlKGNhbGxiYWNrSURzKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggZjYxMDgxNzczMjQ1MGNj
MmEzOGU0NjE5YzlhNDlkZGQzYTZmMmU1YS4uMGFiOGYzMjUwNmY1ZDg3OTg3ZDg3ZTc3MTg3MjQ0
M2FjODcxNTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJRXJyb3IuaCIKICNpbmNsdWRlICJB
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5j
bHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtMzQsNyArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja0lEOyB9CisgICAgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsYmFja0lEOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFQqIGFzKCkK
QEAgLTcxLDIxICs3MSwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBleHBsaWNpdCBDYWxsYmFja0Jh
c2UoVHlwZSB0eXBlLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBt
X2NhbGxiYWNrSUQoZ2VuZXJhdGVDYWxsYmFja0lEKCkpCisgICAgICAgICwgbV9jYWxsYmFja0lE
KENhbGxiYWNrSUQ6OmdlbmVyYXRlSUQoKSkKICAgICAgICAgLCBtX2FjdGl2aXR5VG9rZW4oYWN0
aXZpdHlUb2tlbikKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyB1aW50NjRf
dCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUNhbGxiYWNrSUQgPSAxOwot
ICAgICAgICByZXR1cm4gdW5pcXVlQ2FsbGJhY2tJRCsrOwotICAgIH0KLQogICAgIFR5cGUgbV90
eXBlOwotICAgIHVpbnQ2NF90IG1fY2FsbGJhY2tJRDsKKyAgICBDYWxsYmFja0lEIG1fY2FsbGJh
Y2tJRDsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2Fj
dGl2aXR5VG9rZW47CiB9OwogCkBAIC0xODAsMTMgKzE3MywxMyBAQCB2b2lkIGludmFsaWRhdGVD
YWxsYmFja01hcChIYXNoTWFwPHVpbnQ2NF90LCBUPiYgY2FsbGJhY2tNYXAsIENhbGxiYWNrQmFz
ZTo6RXJybwogCiBjbGFzcyBDYWxsYmFja01hcCB7CiBwdWJsaWM6Ci0gICAgdWludDY0X3QgcHV0
KFJlZjxDYWxsYmFja0Jhc2U+JiYgY2FsbGJhY2spCisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENh
bGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRCkpOwotICAgICAg
ICBtX21hcC5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChjYWxsYmFja0lELmlzVmFsaWQoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21h
cC5jb250YWlucyhjYWxsYmFja0lELm1faWQpKTsKKyAgICAgICAgbV9tYXAuc2V0KGNhbGxiYWNr
SUQubV9pZCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICByZXR1cm4gY2FsbGJhY2tJRDsK
ICAgICB9CiAKQEAgLTIwMSwxOCArMTk0LDE4IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICB1aW50NjRfdCBwdXQoRnVuY3Rpb248dm9pZChULi4u
KT4mJiBmdW5jdGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4mIGFjdGl2aXR5VG9rZW4pCisgICAgQ2FsbGJhY2tJRCBwdXQoRnVuY3Rpb248dm9pZChU
Li4uKT4mJiBmdW5jdGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4pCiAgICAgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0g
R2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RG
TW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOwogICAgICAgICByZXR1cm4gcHV0KFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIFJlZlB0
cjxUPiB0YWtlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVmUHRyPFQ+IHRha2UoQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJ
RCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBhdXRvIGJhc2Ug
PSBtX21hcC50YWtlKGNhbGxiYWNrSUQpOworICAgICAgICBhdXRvIGJhc2UgPSBtX21hcC50YWtl
KGNhbGxiYWNrSUQubV9pZCk7CiAgICAgICAgIGlmICghYmFzZSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yMjksNCArMjIyLDQ1IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPENhbGxiYWNrQmFzZT4+IG1fbWFwOwogfTsKIAordGVtcGxhdGUgPHR5
cGVuYW1lIENhbGxiYWNrVHlwZT4KK2NsYXNzIFNwZWNpZmljQ2FsbGJhY2tNYXAgeworcHVibGlj
OgorICAgIENhbGxiYWNrSUQgcHV0KFJlZjxDYWxsYmFja1R5cGU+JiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
bWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAgICAgICBtX21hcC5zZXQoY2FsbGJh
Y2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBjYWxsYmFja0lE
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+CisgICAgQ2FsbGJhY2tJRCBw
dXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBDYWxsYmFja1R5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAg
ICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0KKworICAgIFJlZlB0cjxD
YWxsYmFja1R5cGU+IHRha2UoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2Uo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGJhc2UubGVha1JlZigpLT50ZW1w
bGF0ZSBhczxDYWxsYmFja1R5cGU+KCkpOworICAgIH0KKworICAgIHZvaWQgaW52YWxpZGF0ZShD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9tYXAs
IGVycm9yKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PENhbGxiYWNrQmFzZT4+IG1fbWFwOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDU1NzkwZTI1NWRjMjA0ZDIxYjg3YTA5OWFhMzQ4MTFmODQyZTBmMWEuLjQwODJlYjlmZWU3
ZWM0YTZhOWNmODMyNzljYjNmNzI0Zjk4MDI4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxi
YWNrSUQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCkBAIC03MiwxMCArNzMsMTAgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6Omlu
aXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50QmFzZSogY2wKIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIHsKLSAgICBp
bnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1faHR0
cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJX
YXNJbnZhbGlkYXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fdm9pZENhbGxiYWNr
cywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgaW52YWxp
ZGF0ZUNhbGxiYWNrTWFwKG1fZ2V0Q29va2llc0NhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV9hcnJheUNhbGxiYWNrcy5pbnZhbGlkYXRl
KENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgIG1faHR0cENv
b2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6
Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgIG1fdm9pZENhbGxiYWNrcy5pbnZhbGlkYXRlKENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgIG1fZ2V0Q29va2ll
c0NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxp
ZGF0ZWQpOwogCiAgICAgVmVjdG9yPE9ic2VydmVyKj4gb2JzZXJ2ZXJzOwogICAgIGZvciAoYXV0
byYgb2JzZXJ2ZXJTZXQgOiBtX2Nvb2tpZU9ic2VydmVycy52YWx1ZXMoKSkgewpAQCAtOTEsMTgg
KzkyLDE4IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3ll
ZCgpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJv
Y2Vzc1Byb3h5KikKIHsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNr
cywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNh
bGxiYWNrTWFwKG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fdm9p
ZENhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52
YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZ2V0Q29va2llc0NhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9hcnJheUNhbGxiYWNrcy5pbnZhbGlkYXRlKENh
bGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1faHR0cENvb2tpZUFjY2Vw
dFBvbGljeUNhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NF
eGl0ZWQpOworICAgIG1fdm9pZENhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJy
b3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5pbnZhbGlkYXRl
KENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwogfQogCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKQogewot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRw
Q29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNz
RXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tN
YXAobV9nZXRDb29raWVzQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKKyAgICBtX2FycmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tz
LmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92
b2lkQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6UHJvY2Vzc0V4aXRlZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC0xMTcsMTQgKzExOCwxMSBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiAKIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gQXJyYXlDYWxsYmFj
azo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0
KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fYXJyYXlDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2Fy
eShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoc2Vz
c2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxBcnJheUNhbGxiYWNr
PiBjYWxsYmFjayA9IG1fYXJyYXlDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAgICBpZiAo
IWNhbGxiYWNrKSB7CkBAIC0xNDcsNjkgKzE0NSw1MSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9p
ZENhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENh
bGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2Uoc2Vzc2lvbklELCB0aW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2ll
JiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lk
Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAg
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwg
Y29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29raWVz
Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2dldENvb2tpZXND
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fZ2V0Q29va2llc0NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29r
aWVzKHNlc3Npb25JRCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29raWVzQ2Fs
bGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2dldENvb2tpZXNDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fZ2V0Q29va2llc0NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNl
c3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGlkU2V0Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNr
KCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKGNvbnN0
IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fZ2V0Q29va2ll
c0NhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFs
dWUoY29va2llcyk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVD
b29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBt
X3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CkBA
IC0yODQsMzEgKzI2NCwyNCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcAogICAgIC8vIFRoZSBw
b2xpY3kgaXMgbm90IHNlbnQgdG8gbmV3bHkgY3JlYXRlZCBwcm9jZXNzZXMgKG9ubHkgU291cCBk
b2VzIHRoYXQgdmlhIHNldEluaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5KCkpLiBUaGlzIGlz
IG5vdCBhIHNlcmlvdXMgcHJvYmxlbSwgYmVjYXVzZToKICAgICAvLyAtIFdoZW4gdGVzdGluZywg
d2Ugb25seSBoYXZlIG9uZSBXZWJQcm9jZXNzIGFuZCBvbmUgTmV0d29ya1Byb2Nlc3MsIGFuZCBX
ZWJLaXRUZXN0UnVubmVyIG5ldmVyIHJlc3RhcnRzIHRoZW07CiAgICAgLy8gLSBXaGVuIG5vdCB0
ZXN0aW5nLCBDb2NvYSBoYXMgdGhlIHBvbGljeSBwZXJzaXN0ZWQsIGFuZCB0aHVzIG5ldyBwcm9j
ZXNzZXMgdXNlIGl0IChldmVuIGZvciBlcGhlbWVyYWwgc2Vzc2lvbnMpLgotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIDApKTsKLQotICAgIGF1dG8gY2FsbGJhY2sg
PSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQoKSkpOwog
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBjYWxsYmFj
a0lEKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShwb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJRChjYWxsYmFja0lEKSkpOwogfQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShTZXNzaW9u
SUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IEhUVFBD
b29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOwotCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
Ci0gICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBX
VEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2h0dHBDb29raWVB
Y2NlcHRQb2xpY3lDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHVpbnQzMl90IHBvbGljeSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOwogfQogCi12b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV92b2lkQ2Fs
bGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IDgyYWY3
NzA2NWQyZjIxYjBmNWM5MWM2N2Q5ZDk1NDBjMjhiMmY1NTQuLjBhZWEyYzViMGQ5MzM5OTY5M2Vj
MjI2MzY1ODQ1NGEwODZhYzVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTEwNywxMyArMTA3LDEzIEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKLSAg
ICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
dWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYktpdDo6Q2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90
IHBvbGljeSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgZGlkU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZFNldENvb2tp
ZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBk
aWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkU2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkU2V0
Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0Q29va2llcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIGNvb2tp
ZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIApAQCAtMTMxLDEwICsxMzEsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBlcnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
QXJyYXlDYWxsYmFjaz4+IG1fYXJyYXlDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4+IG1faHR0cENvb2tpZUFjY2Vw
dFBvbGljeUNhbGxiYWNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxi
YWNrPj4gbV92b2lkQ2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxHZXRD
b29raWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZXNDYWxsYmFja3M7CisgICAgU3BlY2lmaWNDYWxs
YmFja01hcDxBcnJheUNhbGxiYWNrPiBtX2FycmF5Q2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiBtX2h0dHBDb29raWVBY2Nl
cHRQb2xpY3lDYWxsYmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxWb2lkQ2FsbGJhY2s+
IG1fdm9pZENhbGxiYWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEdldENvb2tpZXNDYWxs
YmFjaz4gbV9nZXRDb29raWVzQ2FsbGJhY2tzOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNz
aW9uSUQsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOwog
ICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoU2V0PE9ic2VydmVyKj4+IG1fY29v
a2llT2JzZXJ2ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGNjYmNmMjllMDc2Njk3NGI3
NDM1ODcyMTJiMTJjM2JmNGNiYzFlMS4uYTVkNzdiOTYyOTkyZjFkM2Y2ZGVmODQ4NzUxYmE5NjFl
NTU2OTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwxMyArMjEsMTMgQEAKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKLSAgICBEaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3Qg
cG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKTsKKyAgICBEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogCi0gICAgRGlkU2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWREZWxldGVDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIERpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgRGlkR2V0Q29va2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWREZWxldGVDb29raWVzKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKIAogICAgIENv
b2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNGJmYWUwZTc0YWM5MTE5NzEz
ZDBmNjJmOGNmNDU5ZjU3MGQ5MDJmZS4uZDQzNzI4ZTgwODNlYTQzMGFkNGJlZWI2OGZmMTNiN2Ji
MGFmNWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxi
YWNrSUQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTYwMyw3ICsx
NjA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQs
IGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElu
aXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTYyOCw3ICsxNjI5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21t
YW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMjgzNCw3ICsyODM1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmIHNjcmlwdCwgV1RGOjpGdW5jdGlvbjwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShzY3JpcHQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI4
NDUsNyArMjg0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKIH0KIApAQCAtMjg1Niw3ICsyODU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KQEAgLTI4NjgsNyArMjg2OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgQ2FsbGJhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJp
bmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KQEAgLTI4ODAsNyArMjg4MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmls
ZShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAtMjg5Miw3ICsyODkzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVy
T3V0cHV0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0yOTE4LDcgKzI5MTksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0JhcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc01I
VE1MRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogI2VuZGlmCkBAIC0yOTMwLDcgKzI5
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQog
CkBAIC0yOTQxLDcgKzI5NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKIH0KIApAQCAtMjk1Miw3ICsyOTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2
b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTYzLDcgKzI5
NjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBBUEk6OlVSTCogcmVzbwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3Ry
aW5nKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NzQsNyArMjk3NSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJj
aGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMzAwNyw3ICszMDA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChS
ZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogICAgICAgICB9KTsKICAgICB9OwogCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNl
UmVwYWludENhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdT
dG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsgCiB9CkBAIC0zMjQz
LDcgKzMyNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCkKIHsKLSAgICBIYXNoU2V0PHVpbnQ2NF90
PiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3ZlKG1fbG9hZERlcGVuZGVu
dFN0cmluZ0NhbGxiYWNrSURzKTsKKyAgICBIYXNoU2V0PENhbGxiYWNrSUQ+IGxvYWREZXBlbmRl
bnRTdHJpbmdDYWxsYmFja0lEcyA9IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMpOwogICAgIGZvciAoYXV0byYgY2FsbGJhY2tJRCA6IGxvYWREZXBlbmRlbnRTdHJpbmdD
YWxsYmFja0lEcykgewogICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxiYWNrSUQpKQogICAgICAgICAgICAgY2FsbGJhY2stPmlu
dmFsaWRhdGUoKTsKQEAgLTUwMDAsNyArNTAwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgIH0KIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Vm9pZENhbGxiYWNrPihjYWxs
YmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC01MDExLDcgKzUwMTIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNh
bGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8RGF0YUNhbGxiYWNrPihjYWxsYmFj
a0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC01MDIyLDcgKzUwMjMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSwgdWludDY0XwogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbWFnZUNhbGxiYWNr
KGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8SW1hZ2VDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTAzMyw3ICs1MDM0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGJpdG1hcEhhbmRsZSwgdWkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKGJpdG1hcEhhbmRsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdD
YWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0
cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxi
YWNrKSB7CkBAIC01MDQ3LDcgKzUwNDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RyaW5nQ2Fs
bGJhY2soY29uc3QgU3RyaW5nJiByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSQogICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmlt
cGwoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2so
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5n
Q2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBt
X2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNh
bGxiYWNrKSB7CkBAIC01MDYxLDcgKzUwNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxp
ZGF0ZVN0cmluZ0NhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPmlu
dmFsaWRhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2so
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4Y2VwdGlv
biwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlv
bkRldGFpbHMmIGRldGFpbHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC01MDgxLDcgKzUwODIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCks
IGhhZEV4Y2VwdGlvbiwgZGV0YWlscyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRl
ZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0
b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
cGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Q29t
cHV0ZWRQYWdlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDkyLDcgKzUwOTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxi
YWNrKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFj
dG9yRm9yUHJpbnRpbmcpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCBpc0VuYWJsZWQsIGludCBz
dGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNv
bW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIGlzRW5hYmxlZCwg
aW50IHN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9
IG1fY2FsbGJhY2tzLnRha2U8VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMDMsNyArNTEwNCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBi
b29sIGlzRW5hCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShj
b21tYW5kTmFtZS5pbXBsKCksIGlzRW5hYmxlZCwgc3RhdGUpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6dW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFj
a3MudGFrZTxVbnNpZ25lZENhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNr
KSB7CkBAIC01MTE1LDcgKzUxMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShyZXN1bHQpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxs
YmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgTUVTU0FHRV9DSEVDSyhyYW5nZS5pc1ZhbGlkKCkpOwogCkBAIC01MTMwLDcgKzUxMzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGlu
Z1JhbmdlJiByYW5nZSwgdWludDY0X3QgY2FsbAogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12
b2lkIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IE1hY2hTZW5kUmln
aHQmIHNlbmRSaWdodCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpt
YWNoU2VuZFJpZ2h0Q2FsbGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8TWFjaFNlbmRSaWdodENhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNr
KQpAQCAtNTE5Miw3ICs1MTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ1Njcm9sbGluZ0V2
ZW50KHVpbnQzMl90IGV2ZW50VHlwZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAKICAgICB9CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFu
Z2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKGFjdHVhbFJh
bmdlLmlzVmFsaWQoKSk7CiAKQEAgLTUyMDcsNyArNTIwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBFZGl0CiB9CiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2VQcm94eTo6cHJpbnRG
aW5pc2hlZENhbGxiYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIHByaW50RXJyb3IsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6cHJpbnRGaW5pc2hlZENhbGxiYWNrKGNv
bnN0IFJlc291cmNlRXJyb3ImIHByaW50RXJyb3IsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTU5NjEsNyArNTk2Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBw
cmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKQEAg
LTU5NzUsNyArNTk3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2UoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7CisgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
ICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50
aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAt
NTk4Nyw3ICs1OTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxi
YWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwog
ICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBw
cmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1Nl
bmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KQEAgLTU5OTks
NyArNjAwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0g
dHJ1ZTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0Zv
clByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFn
ZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24p
KTsKQEAgLTYyOTYsNyArNjI5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5n
ZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFjCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNjMwNyw3ICs2MzA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFu
Z2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAKQEAgLTYzMTgsNyArNjMxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRl
eEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtNjMyOSw3ICs2MzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiByYW5n
ZSwgV1QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhy
YW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNjM3Myw3ICs2Mzc0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0
bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChy
ZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBA
IC02NTk2LDcgKzY1OTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3Rh
dGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaQogICAgIGF1dG8gdm9p
ZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CiAgICAgbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9CiAKQEAgLTY3NDYs
NyArNjc0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KQogICAgIG1fcGFnZUNsaWVudC5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlu
a0ljb24mIGljb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyKQordm9pZCBXZWJQYWdlUHJveHk6
OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENh
bGxiYWNrSUQgbG9hZElkZW50aWZpZXIpCiB7CiAgICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0
TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxX
ZWJQYWdlUHJveHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oV1RGOjpGdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKSB7CiAg
ICAgICAgIGlmICghaXNWYWxpZCgpKSB7CkBAIC02NzU2LDE1ICs2NzU3LDE1IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29u
JiBpY29uLCB1aW50NjRfCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGRlY2lzaW9uID0gKGJv
b2wpY2FsbGJhY2tGdW5jdGlvbjsKLSAgICAgICAgdWludDY0X3QgbmV3Q2FsbGJhY2tJZGVudGlm
aWVyID0gZGVjaXNpb24gPyBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSA6IDA7
CisgICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25h
bENhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9u
YWxDYWxsYmFja0lEKCk7CiAKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwg
bmV3Q2FsbGJhY2tJZGVudGlmaWVyKSwgbV9wYWdlSUQpOwogICAgIH0pOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpm
aW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQogewotICAgIGRhdGFDYWxsYmFjayhkYXRhLCBjYWxsYmFja0lkZW50
aWZpZXIpOworICAgIGRhdGFDYWxsYmFjayhkYXRhLCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDQ0NWQ1MzJkYzUwOGVh
ZDBmMDkzZDM5OWRjMzlmOTQ1MjkzMTllNS4uZmFjM2VlOTk1MzFlYjBlNTdhMGE4NTVkNDZkNzZm
YWI4MGEzOWUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
OTM2LDcgKzkzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkZyYW1l
UHJveHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQs
IFJlZjxEYXRhQ2FsbGJhY2s+JiYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB1aW50MzJfdCBj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKLSAg
ICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5k
aWYKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNr
PiYmKTsKQEAgLTExNTksOCArMTE1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCk7CiAKLSAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3Qg
V2ViQ29yZTo6TGlua0ljb24mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOworICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOwogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQgc2V0V2lu
ZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CkBAIC0xNDQ5LDM2ICsxNDQ5LDM2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVU
eXBlLCBib29sIGhhbmRsZWQpOwogCi0gICAgdm9pZCB2b2lkQ2FsbGJhY2sodWludDY0X3QpOwot
ICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCB1aW50
NjRfdCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QpOwotICAg
IHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIGNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4mLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCk7
Ci0gICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBp
bnQsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIHVpbnQ2
NF90KTsKLSAgICB2b2lkIGVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYs
IHVpbnQ2NF90KTsKKyAgICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKKyAgICB2b2lk
IGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOworICAg
IHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9v
bCwgaW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3Qs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGlu
Z1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBtYWNo
U2VuZFJpZ2h0Q2FsbGJhY2soY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYsIHVpbnQ2NF90
KTsKKyAgICB2b2lkIG1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2Vu
ZFJpZ2h0JiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKLSAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJS
YW5nZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2Um
LCB1aW50NjRfdCk7CisgICAgdm9pZCByZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgYXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYs
IHVpbnQ2NF90KTsKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSwgYm9vbCwgdWludDY0X3QpOworICAgIHZvaWQgYXR0cmlidXRlZFN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVk
aXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJh
Y2soY29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQ2NF90KTsKLSAgICB2
b2lkIHRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1
aW50MzJfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBmbG9hdCwg
dWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxi
YWNrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgc2VsZWN0aW9u
Q29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVp
bnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHRvdWNoZXNDYWxsYmFjayhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQg
Zm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFpdHMsIENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0
b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIG1hcmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBT
dHJpbmcmIGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBh
ZnRlclRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3Qg
RWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2ZW50LCBib29sJiBoYW5kbGVkKTsKICAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBlbGVtZW50UmVjdCk7Ci0gICAgdm9pZCBzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIHVpbnQ2NF90KTsKKyAgICB2b2lk
IHNlbGVjdGlvblJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJl
Y3Q+JiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBw
cmludEZpbmlzaGVkQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2
NF90KTsKKyAgICB2b2lkIHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZm9jdXNlZEZyYW1l
Q2hhbmdlZCh1aW50NjRfdCBmcmFtZUlEKTsKQEAgLTE2OTksNyArMTY5OSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIENhbGxiYWNrTWFwIG1fY2FsbGJhY2tzOwotICAgIEhhc2hTZXQ8dWlu
dDY0X3Q+IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzOworICAgIEhhc2hTZXQ8Q2Fs
bGJhY2tJRD4gbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHM7CiAKICAgICBIYXNoU2V0
PFdlYkVkaXRDb21tYW5kUHJveHkqPiBtX2VkaXRDb21tYW5kU2V0OwogCkBAIC0xOTU5LDcgKzE5
NTksNyBAQCBwcml2YXRlOgogICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIG1fY29u
ZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXM7CiAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgeyBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpOb0ZsYWdzIH07CiAgICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VX
YW50c1N5bmNocm9ub3VzUmVwbHkgeyBmYWxzZSB9OwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKKyAgICBWZWN0b3I8Q2FsbGJhY2tJRD4g
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKIAogICAgIFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX21lZGlhU3RhdGUgeyBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpJc05vdFBsYXlpbmcgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTc5MWRhYjgwZDNjYTY1MTdhZjg3YTAw
ZGI5ODMwNGE5NDhlYWQ2OC4uN2UwMmY0ZWVjMDkzMjVmYjYyNDY0OTNkMmIyNGJiNzU5OTMwMmU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0xNTQsMjcgKzE1NCwyNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIFdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1l
SUQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKICAgICAjIENh
bGxiYWNrIG1lc3NhZ2VzCi0gICAgVm9pZENhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0g
ICAgRGF0YUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIEltYWdlQ2FsbGJhY2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBiaXRtYXBIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU3RyaW5nQ2FsbGJh
Y2soU3RyaW5nIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBJbnZhbGlk
YXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTY3JpcHRWYWx1ZUNh
bGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGhhZEV4Y2VwdGlvbiwg
c3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0YWlscywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKLSAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLSAgICBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhTdHJpbmcgY29tbWFuZCwg
Ym9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
RWRpdGluZ1JhbmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNr
KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVh
bFJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFZvaWRDYWxsYmFjayhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEYXRhQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VsdERhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEltYWdlQ2Fs
bGJhY2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1
bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTY3JpcHRW
YWx1ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGhhZEV4Y2Vw
dGlvbiwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0YWlscywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJp
bnRpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFZhbGlkYXRlQ29tbWFu
ZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRWRpdGluZ1JhbmdlQ2FsbGJhY2so
c3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2so
V2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFs
UmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2Vi
S2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jhbmdl
IGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEZvbnRBdFNlbGVjdGlvbkNh
bGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFz
TXVsdGlwbGVGb250cywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBBdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5n
IHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb250QXRTZWxlY3Rpb25DYWxsYmFjayhTdHJp
bmcgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb0hhc011bHRpcGxlRm9u
dHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAjaWYgUExBVEZPUk0o
SU9TKQotICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6Rmxv
YXRSZWN0PiB0ZXh0UmVjdHMsIFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCB1aW50
NjRfdCB0cmFpdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQXV0b2NvcnJlY3Rpb25Db250
ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcg
c2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0
X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdGlvbkNvbnRleHRDYWxs
YmFjayhTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVy
VGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXN0dXJlQ2FsbGJhY2soV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3Rh
dGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBU
b3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMs
IHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBdXRv
Y29ycmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiB0ZXh0UmVj
dHMsIFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCB1aW50NjRfdCB0cmFpdHMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uQ29udGV4dENh
bGxiYWNrKFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVj
dGVkVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxl
bmd0aCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0aW9uQ29udGV4
dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcg
YWZ0ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnRlcnByZXRL
ZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0ZSwgYm9vbCBpc0NoYXJFdmVu
dCkgLT4gKGJvb2wgaGFuZGxlZCkKICAgICBEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihz
dHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlv
bikKICAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGUsIHVpbnQ2NF90IHNpemUpCkBAIC0xODQsMTcgKzE4NCwxNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQpCiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpCiAgICAgRGlzYWJsZURv
dWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQot
ICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIFNlbGVjdGlvblJlY3RzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6
OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBT
ZXREYXRhRGV0ZWN0aW9uUmVzdWx0KHN0cnVjdCBXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQg
ZGF0YURldGVjdGlvblJlc3VsdCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBQcmlu
dEZpbmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICBQcmludEZpbmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6TWFjaFNl
bmRSaWdodCBzZW5kUmlnaHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgTWFjaFNlbmRSaWdo
dENhbGxiYWNrKFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdl
KGRvdWJsZSBzY2FsZUZhY3RvcikKQEAgLTQ4Miw4ICs0ODIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogCiAgICAgRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAotICAgIEdldExv
YWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgRmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKTsKKyAgICBHZXRMb2FkRGVjaXNpb25G
b3JJY29uKHN0cnVjdCBXZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lELCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA3OGY2YThmYjgzZTYxZmIzNjhl
ZGQwM2NmMThhNDllZTgxMzE3ZGQ5Li5jMWJhNzY0ZjAxNTQyNzExZTI5YWQ1ZjlhMDczNDI3NzY4
MjhhYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxs
YmFjayA9IG1fY2FsbGJhY2tzLnRha2U8R2VzdHVyZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAg
ICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Omdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90
IGdlc3QKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvaW50
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50
MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFRvdWNoZXNDYWxs
YmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTUzLDcgKzE1Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZShwb2ludCwgdG91Y2hlcywgZmxhZ3MpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6YXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkZsb2F0UmVjdD4mIHJlY3RzLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9hdCBmb250U2l6
ZSwgdWludDY0X3QgZm9udFRyYWl0cywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjphdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXpl
LCB1aW50NjRfdCBmb250VHJhaXRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0
byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2s+
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkZsb2F0UmVjdD4mCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShyZWN0cywgZm9udE5hbWUsIGZvbnRTaXplLCBmb250VHJhaXRzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIGFm
dGVyVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTZWxlY3Rpb25D
b250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE3
NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uQ29udGV4dENhbGxiYWNr
KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdAogICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoc2VsZWN0ZWRUZXh0LCBiZWZvcmVUZXh0LCBhZnRl
clRleHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIG1hcmtlZFRleHQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgdWlu
dDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwg
dWludDY0X3QgbGVuZ3RoLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxs
YmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5n
JiBiZWZvcmVUZXh0LCBjb25zdAogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUoYmVmb3JlVGV4dCwgbWFya2VkVGV4dCwgc2VsZWN0ZWRUZXh0LCBhZnRlclRleHQs
IGxvY2F0aW9uLCBsZW5ndGgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVj
dHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlv
blJlY3RzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlv
blJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxl
Y3Rpb25SZWN0cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvblJlY3RzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNv
cmU6OlRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50
MzJfdClncmFudWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQ0MSw3
ICs0NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMocG9pbnQsIHRvdWNoZXMsIGJhc2VJc1N0YXJ0LCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogICAgIApAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25E
YXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApA
QCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9u
KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpG
dW5jdGlvbjx2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENh
bGxiYWNrKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01MDIs
NyArNTAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlB
dFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW4KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGdyYW51bGFyaXR5KSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSks
IHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNTI0LDcgKzUyNCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24o
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVj
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxh
cml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOwogfQogICAgIApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wg
aXNJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
IHBvaW50LAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6
OkludFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9p
bnRBbmRCb3VuZGFyeShwb2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogICAgIAogfQpAQCAtNTgxLDcgKzU4MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01OTIsNyArNTky
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNjA4
LDcgKzYwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02
MjQsNyArNjI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbGVjdFdpdGhUd29Ub3VjaGVzKGZyb20sIHRvLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRl
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC03MjAsNyArNzIwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNl
dChXZWJDb3JlOjpUZXh0R3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51
bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJp
dHkpLCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTczMSw3ICs3MzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRo
VGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChvZmZzZXQsIHRleHQsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiB9CiAKQEAgLTc0Miw3ICs3NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92
ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENh
bAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25CeU9mZnNldChvZmZzZXQsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKENhbAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNOZXh0QXNzaXN0ZWROb2Rl
KGlzRm9yd2FyZCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTAzNywxMyArMTAz
NywxMyBAQCB1aW50MzJfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbgogICAgIH0KIAogICAgIHVpbnQzMl90IHBh
Z2VDb3VudCA9IDA7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgdXNpbmcgTWVzc2FnZSA9IE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjsKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2Fn
ZShmcmFtZUlELCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBNZXNzYWdlOjpSZXBseShwYWdlQ291
bnQpLCBtX3BhZ2VJRCk7CiAgICAgcmV0dXJuIHBhZ2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEcmF3VG9QREZD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2spOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggZGM4
ZGE1YWJiYTE4Y2EzYWI2MmQ0MjlmYjA0NzE1MmQ4NGVlNGMxMi4uMmE1OTBiZjQ4OGNjNzM4ZjJl
ZGIyMDJmN2QyNDU4YjhhNzMzZjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0yODEsMTAgKzI4MSwxMCBAQCBzdGF0aWMgdm9pZCBw
YWdlRGlkRHJhd1RvSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFu
ZGxlLCBJUENDYQogICAgICAgICAgICAgdmlldy0+X3ByaW50aW5nQ2FsbGJhY2tDb25kaXRpb24u
bm90aWZ5T25lKCk7CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBfZXhwZWN0ZWRQcmludENhbGxi
YWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBfZXhwZWN0ZWRQcmludENhbGxiYWNr
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0ludGVnZXIoKTsKIAogICAgIGNvbnRleHQtPnZp
ZXcgPSBzZWxmOwotICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOworICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogCiAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdQYWdlc1RvUERGKF93ZWJG
cmFtZS5nZXQoKSwgcHJpbnRJbmZvLCBmaXJzdFBhZ2UgLSAxLCBsYXN0UGFnZSAtIGZpcnN0UGFn
ZSArIDEsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMg
dm9pZCBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mIHBhZ2VSZWN0cywgZAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250
ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgcGFnZURpZENvbXB1dGVQYWdl
UmVjdHMocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnRleHQpOwog
ICAgIH0pOwotICAgIF9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCk7CisgICAgX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJh
Y2stPmNhbGxiYWNrSUQoKS50b0ludGVnZXIoKTsKICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsK
ICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNr
OwogCkBAIC01MjEsMTEgKzUyMSwxMSBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgbGlua0Rlc3RpbmF0
aW9uTmFtZShQREZEb2N1bWVudCAqZG9jdW1lbnQsIFBERkRlc3RpbmF0aW9uICpkZQogICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0
RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgcGFnZURpZERyYXdUb0ltYWdl
KGltYWdlSGFuZGxlLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICBfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOworICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxsYmFjayA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAgICAgICAgICAgICAgICAgX2V4cGVj
dGVkUHJldmlld0NhbGxiYWNrcy5hZGQoX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrLCBz
Y2FsZWRQcmludGluZ1JlY3QpOwogCiAgICAgICAgICAgICAgICAgY29udGV4dC0+dmlldyA9IHNl
bGY7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICAgICAgICAgICAgICBfd2ViRnJhbWUt
PnBhZ2UoKS0+ZHJhd1JlY3RUb0ltYWdlKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJp
bnRPcGVyYXRpb24gcHJpbnRJbmZvXSksIHNjYWxlZFByaW50aW5nUmVjdCwgaW1hZ2VTaXplLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAxYTY0ZTc5Yjhj
YzhkYTJiYzFkODRiMWIyN2JmM2M4MGY0MmRlNTkyLi5mMWZiYmRiYzVmZjdhNDI3YzU3ODI1NDlj
YmM5OGJmYjgwMTI2N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMTgxLDEyICsxODEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdS
YW5nZSYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKIAogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0
IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5n
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKGFjdHVhbFJhbmdlLmlzVmFsaWQoKSk7CiAKQEAgLTIw
NywxMiArMjA3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIAogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGb250QXRTZWxlY3Rpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYg
Zm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlv
bkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBz
ZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
YXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Rm9udEF0U2VsZWN0aW9uQ2FsbGJhY2s+
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzN2VlNTg4NTA3YjY1ZDg4
YzkwNzg0NjA1MzljMWExNDg4YjllYzQ1Li42YWIxMDMxOTY0YTljMGI5NWVmNGNhZjkyNTRmZmQx
ODIyNzI5MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNzQwLDYgKzM3NDAsOCBAQAogCQk5OUM4MUQ1NjFDMjBERkJFMDA1
QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEF1dG9tYXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8q
IF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QkM1OUQ2RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0aW9uYWxDYWxsYmFja0lELmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbmFsQ2FsbGJhY2tJRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hp
bGRQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Q2hpbGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg5
NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJG
IC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLm1tOyBwYXRoID0gbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTI3LDYgKzQ5Mjks
OCBAQAogCQkJCTRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFw
LmggKi8sCiAJCQkJQkNGMTg2MzcxNjdEMDcxRTAwQTFBODVBIC8qIENhY2hlTW9kZWwuY3BwICov
LAogCQkJCUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8sCisJCQkJ
OUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNrSUQuaCAqLywKKwkJCQk5QkM1OUQ2
RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0aW9uYWxDYWxsYmFja0lELmggKi8sCiAJCQkJMUEyRDk1
NkUxMjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMUEyRDk1NkQx
Mjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5oICovLAogCQkJCTUxNjRDMDk0MUIwNUI3
NTcwMDRGMTAyQSAvKiBDaGlsZFByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKaW5k
ZXggNzU0M2EyOWQ4YmViOGNlYTM5MjY2MjE2YTYwMDhjNTg2MjM0ZWYzNS4uMTIxM2QzYTg3M2Jl
ZmM2MzMxYjVmMGQxNTI4MzA3MmIwOTIyZTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcApAQCAtNTQsNyArNTQs
NyBAQCBXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKENoaWxkUHJvY2VzcyogcHJv
Y2VzcykKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0bmFtZXM7CiAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQpAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENv
b2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29v
a2llcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
ZGVsZXRlQ29va2llKGNvb2tpZSk7CkBAIC04NywxNiArODcsMTUgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBj
b29raWUsIHUKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHRpbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKCpzdG9yYWdlU2Vzc2lvbiwgdGltZSk7CiAKLSAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERl
bGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAw
KTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Omdl
dEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpA
QCAtMTA1LDcgKzEwNCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRHZXRDb29raWVzKGNvb2tp
ZXMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29r
aWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9y
PENvb2tpZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMTQsMjIgKzEx
MywyMCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJh
Y2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZShXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
c2V0Q29va2llKGNvb2tpZSk7CiAKLSAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMo
Y2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1
bWVudFVSTCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdl
U2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywgdXJsLCBtYWlu
RG9jdW1lbnRVUkwpOwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxi
YWNrSUQpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6bm90aWZ5Q29va2llc0RpZENoYW5nZShTZXNzaW9uSUQgc2Vzc2lvbklEKQpA
QCAtMTUzLDE1ICsxNTAsMTUgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ks
IE9wdGlvbmFsQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHBsYXRmb3JtU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShwb2xpY3kpOwogCiAgICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koY2FsbGJhY2tJRC5jYWxsYmFja0lEKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBsYXRmb3Jt
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBjYWxsYmFja0lEKSwgMCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApp
bmRleCAxMmFlNTkxNzRkOWI4YmE0YjY5MGNiYWFhNjQwN2M3ZTZkMWE5ZWI1Li44NDRmN2EzYjQ2
ZGExMWZmOTYyYmZmYjE0ZTlkYzdkOWVkZmRiYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTI1LDkgKzI1LDEx
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
IkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlICJPcHRpb25h
bENhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8Y2hyb25vPgpAQCAtNTYsNyArNTgs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
IAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKTsKIAogI2lm
IFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3Ry
aW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpOwpAQCAtNjgsMjAgKzcwLDIw
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgZGVsZXRlQ29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgQ2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHNldENv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZ2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHBs
YXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
LSAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KENhbGxiYWNrSUQpOwogICAgIEhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCk7
CiAKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9u
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwYTU4NTU1ZWM2YTljYzQ4Zjlk
OGE5NDc1Y2E2MjQ4YzNlZDViMzQ1Li41ZmVlZmE3MTJjODJkZmZjMWQ0MjYxMjQ5ZDBkY2MyNzc3
ZjUxODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTkgKzI0LDE5IEBA
CiAgKi8KICAKICBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyIHsKLSAgICB2b2lkIEdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2
b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAKLSAgICB2b2lkIFNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2Vi
Q29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lk
IEdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0
ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29v
a2llIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICB2b2lkIFNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2Vi
Q29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
dm9pZCBTZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWlu
RG9jdW1lbnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0
QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1l
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAotICAgIHZvaWQgU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
dm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
dm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgV2ViS2l0OjpP
cHRpb25hbENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgCiAgICAgdm9pZCBT
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
ICAgICB2b2lkIFN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEwODdhOGEz
MTM0N2RlY2RkMmVhZDA5YzE5YTI3ODkwYzFkZmM1OGEuLjFjNTVjYWJlMzY3MDBiMTNlZmJiODVl
MzdkZmVjNTVmNDcxY2E4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xODEwLDE2ICsxODEwLDE3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZUljb25M
b2FkaW5nQ2xpZW50KCkKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lv
bkZvckljb24oY29uc3QgTGlua0ljb24mIGljb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkKLSAgICAgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGljb24sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIENhbGxiYWNrSUQ6OmZyb21J
bnRlZ2VyKGNhbGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CisgICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVn
ZXIoY2FsbGJhY2tJZGVudGlmaWVyKTsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1fZnJh
bWUtPnBhZ2UoKSB9KSB7CiAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNr
SWRlbnRpZmllciwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRh
KCkpLCBkYXRhLT5zaXplKCkgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpIH0p
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSWRlbnRpZmllciwgeyBudWxs
cHRyLCAwIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IG51bGxwdHIsIDAgfSkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4IGJmNTNlNmM4YTI0OTMzOWZm
ZWVkZDg0MmYyMzAwYjZiOGVhZmQ0YmEuLjhlODMxY2ViODc4ODNkZDBmMzIyNDdkODU5MjA4YzZj
YTY5YWVhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2
b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgfQogfQogCi1i
b29sIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCitib29sIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0ICYm
IG1fbGF5ZXJUcmVlSG9zdC0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJRCk7CiB9CkBAIC00
NTcsNyArNDU3LDcgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQoKQogfQogI2VuZGlmCiAKLXZvaWQgQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2Vk
LCBib29sLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2Vk
LCBib29sLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAgIGlmIChjaGFuZ2VkICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlmIChtX3dlYlBhZ2UuaXNWaXNp
YmxlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAppbmRleCAyZjE5MTNlMDA2OGY3MzNhNzRjYWU0YzEx
NDc1MGNjZmY5MmQ5MDIxLi4zYjY0OTQ3MmQ0YWM3MGI3MjVkODgxNzEzYjQyYmJjNzUzMDNmZmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJvdGVjdGVkOgogICAg
IGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhv
c3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KICAg
ICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5
bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRB
c3luYyhDYWxsYmFja0lEKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0UGFpbnRpbmdFbmFibGVk
KGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpIG92ZXJyaWRlOwpAQCAtNjgsNyArNjgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBkZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBv
dmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJy
aWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0
IFZlY3RvcjxDYWxsYmFja0lEPiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJyaWRlOwogICAgIHZv
aWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsYXllckhvc3REaWRGbHVz
aExheWVycygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzI5MGFmZjZiNmI4NmY2ZWY1MTZk
YzE5NzRiMGJmNmFiZTM2YzcxZC4uNzI5ZWViNDJlN2I3YzRjZjgwM2Y2OGEyMDMyMDg2Yzc5Zjdi
ZjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCkBAIC0xMjcsMTQgKzEyNywxNCBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKICAgICBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcygpOwogfQogCi1ib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAKICAgICAvLyBXZSB3YW50IGEgY2xlYW4gcmVw
YWludCwgbWVhbmluZyB0aGF0IGlmIHdlJ3JlIGN1cnJlbnRseSB3YWl0aW5nIGZvciB0aGUgcmVu
ZGVyZXIKICAgICAvLyB0byBmaW5pc2ggYW4gdXBkYXRlLCB3ZSdsbCBoYXZlIHRvIHNjaGVkdWxl
IGFub3RoZXIgZmx1c2ggd2hlbiBpdCdzIGRvbmUuCiAgICAgQVNTRVJUKCFtX2ZvcmNlUmVwYWlu
dEFzeW5jLmNhbGxiYWNrSUQpOwotICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCA9
IGNhbGxiYWNrSUQ7CisgICAgbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEID0gT3B0aW9u
YWxDYWxsYmFja0lEKGNhbGxiYWNrSUQpOwogICAgIG1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNG
cmVzaEZsdXNoID0gbV9zY2hlZHVsZWRXaGlsZVdhaXRpbmdGb3JSZW5kZXJlcjsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTE2Nyw4ICsxNjcsOCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6cmVuZGVyTmV4dEZyYW1lKCkKICAgICAgICAgLy8gYXJlbid0IG5lZWRlZC4gSWYgdGhl
eSBhcmUsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhpcyBmdW5jdGlvbgog
ICAgICAgICAvLyBpcyBjYWxsZWQgYWZ0ZXIgdGhlIG5leHQgdXBkYXRlLgogICAgICAgICBpZiAo
IW1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNGcmVzaEZsdXNoKSB7Ci0gICAgICAgICAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2sobV9mb3JjZVJl
cGFpbnRBc3luYy5jYWxsYmFja0lEKSk7Ci0gICAgICAgICAgICBtX2ZvcmNlUmVwYWludEFzeW5j
ID0geyB9OworICAgICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Vm9pZENhbGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRC5jYWxsYmFja0lE
KCkpKTsKKyAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMgPSB7IE9wdGlvbmFsQ2FsbGJh
Y2tJRCgpICwgZmFsc2UgfTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2ZvcmNlUmVw
YWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggZTJj
OWZhMmI4OGIwYzgzNzdhM2FkOTk4ODZkY2YwYzA4OTdiNWZjMC4uNzRiYjVkMzU5YmYyM2ZiY2U2
OTYzZDRmYmRkYzlhMDJjM2RlYWQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0
LmgiCisjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWlu
dCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJh
Y2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBv
dmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
bmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpIG92ZXJyaWRlOwpAQCAtODUsNyArODYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c1dhaXRpbmdGb3JSZW5kZXJlciB7IHRydWUgfTsKICAgICBib29sIG1fc2NoZWR1bGVkV2hpbGVX
YWl0aW5nRm9yUmVuZGVyZXIgeyBmYWxzZSB9OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgeyAwIH07CisgICAgICAgIE9wdGlvbmFsQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEOwogICAgICAgICBib29sIG5lZWRzRnJlc2hGbHVzaCB7IGZhbHNlIH07CiAgICAgfSBtX2Zv
cmNlUmVwYWludEFzeW5jOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdD4gbV9sYXllckZsdXNoVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDkwODU3NTY1ZTUzNjZlNGEwODAxMmQ2NWM3MmQ2
OWY4ODU1MjQ2NmIuLmE3ZGEzODIwYzQ0ZDFhOTIyNmRjZTY3OTA2MDg0NjYwZWE0OTg1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5o
IgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRl
eHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTc4LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgogICAgIHZp
cnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGZvcmNlUmVw
YWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBj
b25zdCB7IHJldHVybiAwOyB9CkBAIC0xMTYsNyArMTE3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFj
a0lEcyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVy
biB0cnVlOyB9CkBAIC0xNzQsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3Jp
Z2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBh
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQo
V2ViS2l0OjpDYWxsYmFja0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShY
MTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bgppbmRleCBiMDc2ZjM0YzFhYzY4YzM5ZDBkODAwZjNlYWFjNDA2NWYwNTcwZWVlLi42ZjU4ZmU4
ZTJhMWY1YTQ5MTcwNzc5NzU0YTViMTdiYWZiMmU4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBA
IC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIHsKICAgICBBY2NlbGVyYXRl
ZEFuaW1hdGlvbkRpZFN0YXJ0KHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXksIGRvdWJsZSBz
dGFydFRpbWUpCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJ
RCwgU3RyaW5nIGtleSkKICAgICAKLSAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDJmNTcxMTExMDNjN2VlZjhjYmJkZmQwYjlmODcyNThjZTZi
ODhhZGMuLmUyYzA3MzMzOTQyMzliMzg0YzA2NWM4NzlkZDFhODViYjQ4YWFkNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVY
VFVSRV9NQVBQRVIpCiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiTGF5ZXJU
cmVlQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNw
bGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH07CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgeyB9
OwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG5ld1NpemUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91
bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWMzMGQ5YmExMDY0M2QwOGNlMzIyOGU2N2Yy
Nzk4YWNlMWVkMTUwZi4uMmNiYTNmY2QwMDliYTVlM2RkY2ZkZjJiZDYzZjQ1Yzg2ZmM0ZDE3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
NjAwLDcgKzYwMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3Jr
SW50ZXJmYWNlcygpCiB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0
ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUo
cGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBmYWxzZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKKyAg
ICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBW
ZWN0b3I8Q2FsbGJhY2tJRD4oKSk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBwYXJh
bWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHNldExheWVySG9zdGluZ01vZGUocGFy
YW1ldGVycy5sYXllckhvc3RpbmdNb2RlKTsKIH0KQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogCiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAotdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50
UmVjdCBzbmFwc2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qg
c25hcHNob3RSZWN0LCBJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25z
ID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihvcHRpb25zKTsKICAgICBzbmFwc2hvdE9w
dGlvbnMgfD0gU25hcHNob3RPcHRpb25zU2hhcmVhYmxlOwpAQCAtMjQyMiw3ICsyNDIyLDcgQEAg
dm9pZCBXZWJQYWdlOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2
ZW50KQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0
YXRpY19jYXN0PHVpbnQzMl90PihrZXlib2FyZEV2ZW50LnR5cGUoKSksIGhhbmRsZWQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNv
bnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBi
b29sIGlzRW5hYmxlZCA9IGZhbHNlOwogICAgIGludDMyX3Qgc3RhdGUgPSAwOwpAQCAtMjYyNSw3
ICsyNjI1LDcgQEAgdm9pZCBXZWJQYWdlOjp2aWV3V2lsbEVuZExpdmVSZXNpemUoKQogICAgICAg
ICB2aWV3LT53aWxsRW5kTGl2ZVJlc2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldEluaXRp
YWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIGV2ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlk
LCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0yNjkwLDcgKzI2OTAsNyBA
QCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIH0KIH0KIAotdm9pZCBX
ZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3Rh
dGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBjYWxsYmFja0lEcykKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0
eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykKIHsKICAgICBBY3Rp
dml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0
ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAtMjg0MSw3ICsyODQx
LDcgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQg
PyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9M
aW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RF
OiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2Jq
ZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBl
eGVjdXRpb24uCkBAIC0yODYyLDE0ICsyODYyLDE0IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lE
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UsIGhhZEV4Y2VwdGlvbiwgZGV0YWlscywgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5n
KCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1
bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2Vi
UGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdl
LmdldCgpKTsKIApAQCAtMjg4MCw3ICsyODgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50
c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKQEAgLTI4
OTYsNyArMjg5Niw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBh
Z2UpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMjkxMiw3ICsyOTEy
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJh
Y2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIFdlYkZyYW1lKiBmb2N1c2VkT3JNYWluRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZShtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsK
ICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gZm9jdXNlZE9yTWFpbkZyYW1lLT5zZWxlY3Rpb25B
c1N0cmluZygpOwpAQCAtMjkyMSw3ICsyOTIxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcg
cmVzdWx0U3RyaW5nOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkKQEAgLTI5MzAsNyArMjkzMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJl
c3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0yOTYyLDcgKzI5NjIsNyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHJlc291cgogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0yOTgxLDcgKzI5ODEs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTMwMDQsNyArMzAwNCw3IEBAIHZv
aWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCkKICAgICBtX2RyYXdpbmdB
cmVhLT5mb3JjZVJlcGFpbnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQodWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50QXN5bmMo
Y2FsbGJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzODMsNyArNDM4Myw3IEBAIHZvaWQg
V2ViUGFnZTo6ZW5kUHJpbnRpbmcoKQogICAgIG1fcHJpbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0K
IAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0
b3I8SW50UmVjdD4gcmVzdWx0UGFnZVJlY3RzOwogICAgIGRvdWJsZSByZXN1bHRUb3RhbFNjYWxl
RmFjdG9yRm9yUHJpbnRpbmcgPSAxOwpAQCAtNDQxMiw3ICs0NDEyLDcgQEAgdm9pZCBXZWJQYWdl
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiBwcmkKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+
Y29yZUZyYW1lKCkgOiAwOwpAQCAtNDQ2MSw3ICs0NDYxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IGNvbnMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlQ2FsbGJhY2soaGFu
ZGxlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJh
d1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3
UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VE
YXRhKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJ
bXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1CiB9CiAK
ICNlbGlmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmco
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgYmVnaW5QcmludGluZyhmcmFtZUlELCBwcmludEluZm8pOwogICAgIGlmIChtX3By
aW50Q29udGV4dCAmJiBtX3ByaW50T3BlcmF0aW9uKSB7CkBAIC00NTMwLDcgKzQ1MzAsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hQ
cmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlByaW50RmluaXNoZWRDYWxsYmFj
ayhlcnJvciwgY2FsbGJhY2tJRCkpOwogICAgIG1fcHJpbnRPcGVyYXRpb24gPSBudWxscHRyOwpA
QCAtNDgzNyw3ICs0ODM3LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4KICAgICAgICAgZnJh
bWUuZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKHRleHQpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
Z2V0TWFya2VkUmFuZ2VBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
IApAQCAtNDg1Miw3ICs0ODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
ZGl0aW5nUmFuZ2VDYWxsYmFjayhFZGl0aW5nUmFuZ2UobG9jYXRpb24sIGxlbmd0aCksIGNhbGxi
YWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC00ODY3LDcgKzQ4NjcsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdGluZ1JhbmdlQ2FsbGJhY2soRWRp
dGluZ1JhbmdlKGxvY2F0aW9uLCBsZW5ndGgpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIHVpbnQ2NF90IGluZGV4ID0gbm90Rm91bmQ7CiAKQEAgLTQ4
ODUsNyArNDg4NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5j
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKGluZGV4LCBjYWxsYmFja0lEKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBF
ZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2Um
IGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
SW50UmVjdCByZXN1bHQoSW50UG9pbnQoMCwgMCksIEludFNpemUoMCwgMCkpOwpAQCAtNTY5Miw3
ICs1NjkyLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJE
b2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZyYW0KICAgICB9CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OmdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYg
KCFjb21tb25WTSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikgewogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKFN0cmluZygpLCBjYWxsYmFja0lEKSk7
CkBAIC01NzA0LDcgKzU3MDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZSh1
aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3Ry
aW5nQ2FsbGJhY2socmVzdWx0LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNp
ZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgU2FtcGxpbmdQcm9maWxlciogc2FtcGxp
bmdQcm9maWxlciA9IGNvbW1vblZNKCkuc2FtcGxpbmdQcm9maWxlcigpOwpAQCAtNTg4NywxMCAr
NTg4NywxMCBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAjZW5kaWYK
IAotdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24s
IHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNr
SUQgbG9hZElkZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQogewog
ICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJ
RCk7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRl
Y2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJhY2tJRC50b0ludGVn
ZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1
c2VJY29uTG9hZGluZ0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGNhMTI5ZmEwZDhiZDlmNjUzNDIyMjE0ZGZlNWMxZTA2OTE2Nzg2MGUu
LmJmNGJjZWFlMmU4MWNhN2VmZTAyNjE5YWUzODM2ZjAyOWNkOTFkMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1
ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIgpAQCAtMzksNiArNDAsNyBA
QAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiT3B0aW9uYWxDYWxs
YmFja0lELmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNTQyLDUwICs1NDQsNTAgQEAgcHVi
bGljOgogICAgIHZvaWQgaW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAKICAgICB2b2lkIGJsdXJBc3Npc3RlZE5vZGUoKTsKLSAg
ICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3Rh
dGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBv
c2l0aW9uKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQz
Ml90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24o
dWludDMyX3QgZ3JhbnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0V29yZEJhY2t3YXJkKCk7Ci0g
ICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBz
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVu
dFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0KLSAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0
UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgbW92ZVNlbGVjdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBk
aXJlY3Rpb24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQz
Ml90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxi
YWNrSUQpOworCisgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDYWxsYmFja0lEKTsK
ICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25z
dCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBT
dHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7Ci0gICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3Qg
U3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0
cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGFwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzeW5jQXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBi
b29sJiBjb3JyZWN0aW9uQXBwbGllZCk7Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0
aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9uQ29udGV4
dChTdHJpbmcmIGJlZm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3Rl
ZFRleHQsIFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBs
ZW5ndGgpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7
CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgc3RvcEludGVy
YWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlv
bik7Ci0gICAgdm9pZCBmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNG
b3J3YXJkLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUp
OwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwg
Ym9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RG
b3JFbGVtZW50QXRJbnRlcmFjdGlvbkxvY2F0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rp
b25BcHBlYXJhbmNlKCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50NjRfdCByZXF1ZXN0SUQpOwotICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdp
dGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVjdHNGb3JH
cmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qs
IGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQogICAgIHZvaWQgZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhjb25zdCBWZWN0b3I8
V2ViVG91Y2hFdmVudCwgMT4mIHF1ZXVlKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb250ZW50U2l6
ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgZXhlY3V0ZUVkaXRD
b21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrSUQpOwogCiAgICAgU2Vjb25kcyBldmVudFRocm90dGxpbmdEZWxheSgpIGNvbnN0Owog
CkBAIC02NzMsMTcgKzY3NSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kQ29tcGxleFRleHRJ
bnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAKICAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG8gPSAodWludDMyX3QpRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3Qs
IGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBnZXRNYXJr
ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgY2hhcmFjdGVySW5kZXhG
b3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRp
bmdSYW5nZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VB
c3luYyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNl
dENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwog
ICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29u
c3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb24o
Q2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFdURjo6U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgYm9vbCYgcmVzdWx0KTsKQEAg
LTc0NiwxOCArNzQ4LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5QcmludGluZyh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mKTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7
Ci0gICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYsIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3Rz
LCBkb3VibGUmIHRvdGFsU2NhbGVGYWN0b3IpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZv
aWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291
bnQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSk7CiAjaWYgUExBVEZPUk0o
SU9TKQotICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCwgUmVmPE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVs
YXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRl
bGF5ZWRSZXBseT4mJik7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIGRy
YXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
YWRkUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwpAQCAtOTE1LDggKzkxNyw4IEBAIHB1YmxpYzoKICAgICBSZWY8V2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9h
ZGVyJiwgV2ViQ29yZTo6RnJhbWUmKTsKIAotICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1
aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCk7CiAg
ICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0
IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtOTY5LDcgKzk3
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAK
LSAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0
X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQpOworICAgIHZvaWQgZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVu
dGlmaWVyLCBPcHRpb25hbENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdD
bGllbnQoYm9vbCk7CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTEwNTksMTEg
KzEwNjEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdvQmFjayh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQ2NF90KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2
aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2
b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcyk7Ci0gICAgdm9pZCB2YWxp
ZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgc2V0QWN0aXZp
dHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpOwor
ICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7CiAKQEAgLTExMDQsMjAgKzExMDYsMjAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3
V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJ
RCk7CiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSNlbmRpZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZVVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZm9yY2VS
ZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNv
cmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVp
bnQzMl90IG9wdGlvbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29udGVu
dHNBc01IVE1MRGF0YShDYWxsYmFja0lEKTsKKyNlbmRpZgorICAgIHZvaWQgZ2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZVVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZm9yY2VSZXBhaW50KENh
bGxiYWNrSUQpOworICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENh
bGxiYWNrSUQpOwogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJik7CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZjhhMTk3NWQ1NDU0MDEy
OWE0YTkyZmI3ZmVhN2FkOGI4ZTgxNTY4NC4uYWM5M2YyYjEzMDk1MGZhNWNjZDQwN2Q5YjE0MDRj
OWQzMDMzNTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxLDggKzIxLDggQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2V0SW5pdGlhbEZv
Y3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJL
ZXlib2FyZEV2ZW50IGV2ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNldEFjdGl2aXR5
U3RhdGUodW5zaWduZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2FsbGJhY2tJRHMpCisgICAgU2V0SW5pdGlhbEZvY3Vz
KGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXli
b2FyZEV2ZW50IGV2ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZXRB
Y3Rpdml0eVN0YXRlKHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlLCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcykKICAg
ICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW0gV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlIGxheWVy
SG9zdGluZ01vZGUpCiAKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91
bmQpCkBAIC01NCwzNCArNTQsMzQgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50IHBvaW50KQogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBCbHVyQXNzaXN0ZWROb2RlKCkKLSAgICBTZWxl
Y3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90
IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgU2Vs
ZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAgICAgVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3NpdGlvbikK
LSAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3Jl
OjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3Jl
OjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5
cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgRXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgIFNlbGVjdFdv
cmRCYWNrd2FyZCgpCi0gICAgTW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50
KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxl
Y3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIE1vdmVTZWxl
Y3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMy
X3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFBvc2l0aW9uQXRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0
aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJlcXVlc3REaWN0YXRpb25Db250ZXh0
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgTW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qg
b2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RUZXh0V2l0
aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50
MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJl
Y3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5k
YXJ5KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisgICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgUmVwbGFjZURpY3RhdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5l
d1RleHQpCiAgICAgUmVwbGFjZVNlbGVjdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5l
d1RleHQpCi0gICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJpbmcgdGV4dEZvckF1dG9j
b3JyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24o
U3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJpbmcgdGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBcHBseUF1dG9jb3Jy
ZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcg
Y29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25B
cHBsaWVkKQotICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJh
Y2tJRCkKKyAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIEdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpIC0+IChTdHJpbmcg
YmVmb3JlQ29udGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0
cmluZyBhZnRlckNvbnRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIAog
ICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9y
bWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVl
c3QpCiAgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCkKICAgICBTdG9wSW50ZXJhY3Rpb24oKQogICAgIFBlcmZvcm1BY3Rpb25P
bkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQotICAgIEZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29s
IGlzRm9yd2FyZCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGb2N1c05leHRBc3Npc3RlZE5v
ZGUoYm9vbCBpc0ZvcndhcmQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNl
dEFzc2lzdGVkTm9kZVZhbHVlKFN0cmluZyB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1
ZUFzTnVtYmVyKGRvdWJsZSB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4
KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pCkBAIC05MSwxMyAr
OTEsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiAgICAg
QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogICAgIENvbnRlbnRTaXplQ2F0ZWdvcnlEaWRD
aGFuZ2UoU3RyaW5nIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCi0gICAgRXhlY3V0ZUVkaXRDb21tYW5k
V2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNl
bGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBFeGVjdXRlRWRpdENvbW1h
bmRXaXRoQ2FsbGJhY2soU3RyaW5nIG5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEdldFNlbGVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgU2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQog
ICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVp
bnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVz
ZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNl
dCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNl
dCwgU3RyaW5nIHRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEdldFJlY3RzRm9yR3Jh
bnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90
IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIEdldFJlY3RzQXRT
ZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCkBAIC0xNTYsMTkgKzE1NiwxOSBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1
c2VkRWRpdGFibGVFbGVtZW50KCkKIAogICAgICMgQ2FsbGJhY2tzLgotICAgIEdldENvbnRlbnRz
QXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRDb250ZW50c0FzU3RyaW5nKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRD
b250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0jZW5kaWYKLSAgICBHZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgcmVzb3VyY2VVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRXZWJB
cmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAg
IFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldENvbnRl
bnRzQXNNSFRNTERhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKKyAg
ICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmco
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTb3VyY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBHZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nIHNjcmlw
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRm9yY2VSZXBhaW50KFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBE
aWN0aW9uYXJ5IHN1cHBvcnQuCkBAIC0xOTIsNyArMTkyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVHJ5Q2xvc2UoKQogCiAgICAgU2V0RWRpdGFibGUoYm9v
bCBlZGl0YWJsZSkKLSAgICBWYWxpZGF0ZUNvbW1hbmQoU3RyaW5nIG5hbWUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kKFN0cmluZyBuYW1lLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBFeGVjdXRlRWRpdENvbW1hbmQoU3RyaW5nIG5hbWUsIFN0
cmluZyBhcmd1bWVudCkKIAogICAgIERpZFJlbW92ZUVkaXRDb21tYW5kKHVpbnQ2NF90IGNvbW1h
bmRJRCkKQEAgLTMyMiwxNiArMzIyLDE2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgICMgUHJpbnRpbmcuCiAgICAgQmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKQogICAgIEVuZFByaW50aW5n
KCkKLSAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlBy
aW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIERyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdl
YkNvcmU6OkludFNpemUgaW1hZ2VTaXplLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIERyYXdQ
YWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmlu
dEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKKyAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRT
aXplIGltYWdlU2l6ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRHJhd1Bh
Z2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZv
IHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkg
RGVsYXllZAorICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50KSBEZWxheWVkCiAjZW5k
aWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBEcmF3UGFnZXNGb3JQcmludGluZyh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIERyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogI2VuZGlmCiAKICAgICAjIE1lZGlhCkBAIC0zODMsMTcgKzM4MywxNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBY2NlcHRzRmlyc3RN
b3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJv
b2wgcmVzdWx0KQogCiAgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91
cCwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLCBib29sIHN1cHByZXNzU2VsZWN0
aW9uVXBkYXRlKQotICAgIEdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBDaGFy
YWN0ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0
IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBH
ZXRNYXJrZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdl
dFNlbGVjdGVkUmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBD
aGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpOwogICAgIFNldENvbXBvc2l0aW9uQXN5bmMoU3RyaW5nIHRleHQsIFZl
Y3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgc3RydWN0IFdl
YktpdDo6RWRpdGluZ1JhbmdlIHNlbGVjdGlvblJhbmdlLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5n
UmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSkKICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3Ry
aW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBW
ZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZl
cywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKLSAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIEZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3Qg
V2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KTsKKyAgICBGb250QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwog
I2VuZGlmCiAKICAgICBTZXRNaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRTaXplIG1pbmlt
dW1MYXlvdXRTaXplKQpAQCAtNDEyLDExICs0MTIsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBp
bm5pbmcpCiAgICAgU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IHNjcm9sbGJhclN0eWxlKQogCi0gICAgR2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgR2V0Qnl0ZWNvZGVQcm9maWxlKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogCi0gICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIEdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgCi0gICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCisgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25h
cHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQ
ZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2lu
dCBsb2NhdGlvbikKICAgICBJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQpAQCAtNDYyLDcgKzQ2
Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0VXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQorICAgIERpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQogICAgIFNldFVzZUljb25Mb2Fk
aW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggYzhjOTNiMmI5MDU4N2RjMDY5NmZj
NWRhNmJhYzQ0MDIzYTM3NTFjMS4uMmJiMzZmNjM4ZjcyYjJjZmFmNzI1YzRiNThkZjE0NzgyMjI4
ZTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRD
b250ZXh0KiBwcmludENvbnRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlCisgICAg
dm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3ByaW50Q29udGV4
dCA9IHByaW50Q29udGV4dDsKICAgICAgICAgbV9jYWxsYmFja0lEID0gY2FsbGJhY2tJRDsKQEAg
LTM5OCw3ICszOTgsNiBAQCBXZWJQcmludE9wZXJhdGlvbkd0azo6V2ViUHJpbnRPcGVyYXRpb25H
dGsoV2ViUGFnZSogcGFnZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludAogICAgICwgbV9wYWdlU2V0
dXAocHJpbnRJbmZvLnBhZ2VTZXR1cC5nZXQoKSkKICAgICAsIG1fcHJpbnRNb2RlKHByaW50SW5m
by5wcmludE1vZGUpCiAgICAgLCBtX3ByaW50Q29udGV4dCgwKQotICAgICwgbV9jYWxsYmFja0lE
KDApCiAgICAgLCBtX3hEUEkoMSkKICAgICAsIG1feURQSSgxKQogICAgICwgbV9wcmludFBhZ2Vz
SWRsZUlkKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKaW5kZXggNzQzY2MyY2U1MjU4OTdkMTkw
N2I4MmViZmIyNDEyM2Q4MjIzMDQ5ZS4uNDA5NTk1ZTI5ZWQ0YTUyYTJjOTU5Mjc1MzBlYzIyNzll
NWZmMGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpOwogCi0gICAgdmlydHVhbCB2b2lk
IHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRDb250ZXh0KiwgdWludDY0X3QgY2FsbGJhY2tJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCos
IENhbGxiYWNrSUQpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFdlYlByaW50T3BlcmF0aW9uR3Rr
KFdlYlBhZ2UqLCBjb25zdCBQcmludEluZm8mKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgR1JlZlB0cjxHdGtQYWdlU2V0dXA+IG1fcGFnZVNldHVwOwogICAgIFByaW50SW5m
bzo6UHJpbnRNb2RlIG1fcHJpbnRNb2RlOwogICAgIFdlYkNvcmU6OlByaW50Q29udGV4dCogbV9w
cmludENvbnRleHQ7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOworICAgIENhbGxiYWNrSUQg
bV9jYWxsYmFja0lEOwogICAgIFJlZlB0cjxjYWlyb190PiBtX2NhaXJvQ29udGV4dDsKICAgICBk
b3VibGUgbV94RFBJOwogICAgIGRvdWJsZSBtX3lEUEk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzc1OTA2ZWVlOWE4
YWRlNGY0NTkwYzViMWI2ZmIwZmQ1ZjBjOTJiOC4uZTc2ZjliNzFmZGFlOWIyZDQwZjNkMjFmY2Jm
OGYzMDFhMGU3OTAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgV2ViUGFnZTo6
cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Db250
ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRl
eHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS5z
ZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsKQEAgLTEwNDYsNyArMTA0Niw3IEBAIFJlZlB0cjxSYW5n
ZT4gV2ViUGFnZTo6cmFuZ2VGb3JCbG9ja0F0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQog
ICAgIHJldHVybiByYW5nZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShj
b25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0
dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRo
R2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5v
ZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsK
QEAgLTE3MjIsNyArMTcyMiw3IEBAIGJvb2wgV2ViUGFnZTo6c2hvdWxkU3dpdGNoVG9CbG9ja01v
ZGVGb3JIYW5kbGUoY29uc3QgSW50UG9pbnQmIGhhbmRsZVBvaW50LCBTZWxlCiAgICAgfQogfQog
Ci12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50
JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3Qg
SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBJbnRQb2ludCBwb2ludEluRG9j
dW1lbnQgPSBmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhwb2ludCk7CkBAIC0xNzgz
LDcgKzE3ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNv
bnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcwogICAgIH0KIH0KIAotdm9pZCBX
ZWJQYWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJv
bSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpz
ZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2Vz
dHVyZVN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNp
YmxlUG9zaXRpb24gZnJvbVBvc2l0aW9uID0gZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
ZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29udGVudHMoZnJvbSkpOwpAQCAtMTgyNCw3ICsxODI0
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXb3JkQmFja3dhcmQoKQogICAgICAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50
KCksIHN0YXJ0UG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwg
dHJ1ZSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5
T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIApAQCAtMTg1MCw3ICsxODUwLDcgQEAgc3RhdGljIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3Qg
VmlzaWJsZVBvc2l0aW8KICAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoc3RhcnRJ
bmRleCArIG9mZnNldCwgcm9vdC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGlu
dDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZWN0
c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwg
aW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7CkBAIC0xODgzLDcgKzE4ODMsNyBAQCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZU5lYXJQ
b3NpdGlvbk1hdGNoZXNUZXh0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpbwogICAgIHJl
dHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIG1hdGNoVGV4
dCwgMCwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0
aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIHVpbnQzMl90IGxlbmd0aCA9IHRleHQubGVu
Z3RoKCk7CkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBWaXNpYmxlUG9zaXRpb24gV2ViUGFnZTo6dmlz
aWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IEZyYW1lJiBmcmFtZQogICAg
IHJldHVybiBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdHJhaW5lZFBvaW50KTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChm
cmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTE5MzgsNyAr
MTkzOCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBwb2ludCwgYm9vbCBpc0ludGVyCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBAIC0xOTUxLDcgKzE5NTEsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENh
bGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVj
dGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJl
Y3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIApAQCAtMTk5
NSw3ICsxOTk1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHJlY3RJc1Rvb0JpZ0ZvclNlbGVjdGlv
bihjb25zdCBJbnRSZWN0JiBibG9ja1JlY3QsIGNvbnN0IEZyYW0KICAgICByZXR1cm4gYmxvY2tS
ZWN0LmhlaWdodCgpID4gZnJhbWUudmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWln
aHQoKSAqIGZhY3RvcjsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFy
aXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51
bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSByYW5nZUZvckdyYW51bGFyaXR5
QXRQb2ludChmcmFtZSwgcG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSk7CkBAIC0yMDIyLDEzICsyMDIyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4
dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMy
X3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpiZWdpblNl
bGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIG1fc2VsZWN0aW9uQW5jaG9yID0gKHN0YXRpY19jYXN0PFNlbGVjdGlvbkRp
cmVjdGlvbj4oZGlyZWN0aW9uKSA9PSBEaXJlY3Rpb25MZWZ0KSA/IFN0YXJ0IDogRW5kOwogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhtX3NlbGVjdGlv
bkFuY2hvciA9PSBTdGFydCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNl
bGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Np
c3RlZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50
KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMjA1Nyw3
ICsyMDU3LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRB
bmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soc2VsZWN0aW9uU3RhcnQgPT0gbV9pbml0aWFs
U2VsZWN0aW9uLT5zdGFydFBvc2l0aW9uKCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2lu
dChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIxMDgs
NyArMjEwOCw3IEBAIHZvaWQgV2ViUGFnZTo6Y29udmVydFNlbGVjdGlvblJlY3RzVG9Sb290Vmll
dyhGcmFtZVZpZXcqIHZpZXcsIFZlY3RvcjxTZWxlY3Rpb25SCiAgICAgfQogfQogCi12b2lkIFdl
YlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKTsKQEAgLTIxOTAsNyArMjE5MCw3IEBAIHZv
aWQgV2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNv
bnN0IFN0cmluZyYgbmV3VGV4dCkKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rp
b25DaGFuZ2VzKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rp
b25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0
cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewpAQCAtMjIz
OCwxNCArMjIzOCwxNCBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEo
Y29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbgogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6QXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2socmVjdHNGb3JUZXh0
LCBmb250TmFtZS5nZXQoKSwgZm9udFNpemUsIGZvbnRUcmFpdHMsIGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVj
dGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9u
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGJvb2wgY29ycmVjdGlvbkFwcGxpZWQ7CiAgICAgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24o
Y29ycmVjdGlvbiwgb3JpZ2luYWxUZXh0LCBjb3JyZWN0aW9uQXBwbGllZCk7CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhjb3JyZWN0aW9uQXBwbGllZCA/
IGNvcnJlY3Rpb24gOiBTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRX
aXRoQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIGV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgU3RyaW5nKCkpOwog
ICAgIGlmIChjb21tYW5kTmFtZSA9PSAidG9nZ2xlQm9sZCIgfHwgY29tbWFuZE5hbWUgPT0gInRv
Z2dsZUl0YWxpYyIgfHwgY29tbWFuZE5hbWUgPT0gInRvZ2dsZVVuZGVybGluZSIpCkBAIC0yMzky
LDcgKzIzOTIsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlQXV0b2NvcnJlY3Rpb25Db250ZXh0KEZy
YW1lJiBmcmFtZSwgU3RyaW5nJiBjb250ZXh0QmVmb3JlLCBTdAogICAgIH0KIH0KIAotdm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIFN0cmluZyBjb250ZXh0QmVmb3JlOwogICAgIFN0cmluZyBjb250
ZXh0QWZ0ZXI7CkBAIC0yNjc2LDcgKzI2NzYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQXNz
aXN0YWJsZUVsZW1lbnQoTm9kZSogc3RhcnROb2RlLCBQYWdlJiBwYWdlLCBib29sIGlzRm9ydwog
ICAgIHJldHVybiBuZXh0QXNzaXN0YWJsZUVsZW1lbnQoc3RhcnROb2RlLCBwYWdlLCBpc0Zvcndh
cmQpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9y
d2FyZCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0
ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRWxl
bWVudCogbmV4dEVsZW1lbnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUu
Z2V0KCksICptX3BhZ2UsIGlzRm9yd2FyZCk7CiAgICAgbV91c2VySXNJbnRlcmFjdGluZyA9IHRy
dWU7CkBAIC0zMzAwLDcgKzMzMDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoQXN5bmNocm9u
b3VzVG91Y2hFdmVudHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBxdQogfQogI2Vu
ZGlmCiAKLXZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdB
bmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5
PiYmIHJlcGx5KQogewogICAgIGlmIChwcmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UpIHsKICAg
ICAgICAgcmVwbHktPnNlbmQoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgK
aW5kZXggMDIwZWVjMmY4NzA3MGZkN2I3OWE3OWU5YzAxZGVjMTJjNzQ0OWI3ZS4uNDI3NWFlMzEx
NWE2ZDI1MTg0YmMyYmRkZDgyZDA0YTU1YTk5OTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJDQVJlbW90ZS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLmgiCkBAIC02OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBv
c2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hW
aWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1
aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2Fs
bGJhY2tJRChDYWxsYmFja0lEKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsRGVzdHJveURpc3BsYXlS
ZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IqKTsKQEAgLTgyLDcg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9v
bCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJv
b2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9z
Y3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsgfQpAQCAtMTAzLDcgKzEwNCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZl
Y3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBhZGp1
c3RMYXllckZsdXNoVGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhyb3R0bGVTdGF0ZTo6
RmxhZ3MpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpp
bmRleCAyZDljOWE3ODZiYzVmZmU4ZTA0YTE1NDkzMjU3MjgzNTNiZGM2ZmM1Li45YzJlNzNhMDZh
ZjkyMTE0YWI0MTNmYzNkM2M0MDc2OTA1NzE1ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpmbHVzaCgpCiAgICAgbV9jb25uZWN0aW9u
LT5zZW5kTWVzc2FnZShXVEZNb3ZlKG1fY29tbWl0RW5jb2RlciksIHsgfSk7CiB9CiAKLXZvaWQg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRh
dGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAgIC8vIEZJ
WE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKQEAgLTQ5Nyw3ICs0OTcs
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzLCBibwogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fcGVuZGluZ0NhbGxiYWNr
SURzLmFwcGVuZChzdGF0aWNfY2FzdDxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNh
Y3Rpb25DYWxsYmFja0lEPihjYWxsYmFja0lEKSk7CiAgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyRmx1c2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRl
eCBjZjg5NTc4MTNmYTUzODRkMTRkNjgyYjkxNDU5NzhmMTg1YjUzYWQxLi5mMGU2YzU1MDQxYTUx
YTAyYTY3YTExOTAxNzZmYTI2ZTE4NDFhZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3Jv
bGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBv
dmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQp
IG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwog
ICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJy
aWRlOwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRVc2VUaWxl
ZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3Jikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0Rp
ZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKTsKIAogICAgIHZv
aWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiAKICAgICBS
dW5Mb29wOjpUaW1lcjxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4gbV9zZW5kRGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZVRpbWVyOwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRB
Y3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CiAgICAgYm9vbCBtX3dhbnRzRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fdmlld092ZXJs
YXlSb290TGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpp
bmRleCA0ODBkNjgxZjhmNmI4Y2Q2ZjFhNDMzYTMwMmYzMmMwMzdkZjI4YzJmLi4xYjMwYjUzMTdl
OGNjOGNiMGY0NzRlNWViNzNmZGVjOWM3YWJhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnQoKQogICAgIFtDQVRyYW5zYWN0aW9uIHN5
bmNocm9uaXplXTsKIH0KIAotYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9y
Y2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBpZiAobV9sYXllclRyZWVTdGF0ZUlzRnJvemVuKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00NTksNyArNDU5LDcgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6Zmx1c2hMYXllcnMoKQogICAgIH0KIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFu
Z2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKK3ZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0
IFZlY3RvcjxDYWxsYmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykK
IHsKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVjdG9y
KG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwogICAgIG1fd2FudHNEaWRVcGRh
dGVBY3Rpdml0eVN0YXRlIHw9IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsKQEAgLTQ4Miw3
ICs0ODIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlKQogICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKCkpOwogCi0gICAgZm9yICh1aW50NjRfdCBjYWxsYmFja0lE
IDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQorICAgIGZvciAoYXV0byBj
YWxsYmFja0lEIDogbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogICAgICAg
ICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2Fs
bGJhY2tJRCkpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KaW5kZXggMWViMDQzNzI4MTI4MGNjZDIwMTY4MjY3YjVhZmU1NGE5NjVmY2Rh
OC4uMDE5MmZmMWMxNTczMGVhOTU3Y2RkYTdhNDViODBiMjk4MGZjNjIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MzM0LDcgKzMzNCw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlCiAgICAgZnJhbWUuZWRpdG9y
KCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25z
LCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJh
Y3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdDsKIApAQCAtMzc1
LDcgKzM3NSw3IEBAIHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhy
ZXN1bHQsIHJhbmdlVG9TZW5kLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9u
dEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmZvbnRBdFNl
bGVjdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lOwog
ICAgIGRvdWJsZSBmb250U2l6ZSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313782</attachid>
            <date>2017-06-24 00:53:32 -0700</date>
            <delta_ts>2017-06-25 21:34:06 -0700</delta_ts>
            <desc>Another GTK+ build fix</desc>
            <filename>bug-173803-20170624005331.patch</filename>
            <type>text/plain</type>
            <size>177112</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhOWFkZjc2YWM4NTZj
ZTdjMjhkMTg4Nzk2YjhlYzc0ZTE5ODlkNi4uMWE1Y2QyYWM1OGUxZWM1OTNhMzI5ZTc5N2QwN2Nj
YjhkODYzMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNy0wNi0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxs
YmFjayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5n
IHRoZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQg
YXNzZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0x
IGR1cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBs
YXRlc3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1
c2VkIGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9m
IDAgKGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxs
YmFja0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ2FsbGJhY2tJRC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJh
Y2tJRDo6Q2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAo
V2ViS2l0OjpDYWxsYmFja0lEOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJ
RDo6aXNWYWxpZENhbGxiYWNrSUQpOiBBIGNhbGxiYWNrIElEIGlzIHZhbGlkIHdoZW4gaXQncyBu
ZWl0aGVyIDAgbm9yIC0xLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpmcm9tSW50ZWdl
cik6IENyZWF0ZSBhIENhbGxiYWNrSUQgb2JqZWN0IGZyb20gcG90ZW50aWFsbHkgdW5zYWZlIHZh
bHVlLgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpnZW5lcmF0ZUlEKTogR2VuZXJhdGVz
IHRoZSBuZXh0IGNhbGxiYWNrIElELiBNb3ZlZCBmcm9tIENhbGxiYWNrQmFzZS4KKyAgICAgICAg
KFdlYktpdDo6Q2FsbGJhY2tJRDo6ZW5jb2RlKTogQWRkZWQuIEFzc2VydCB0aGF0IGl0J3MgbmVp
dGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgIChXVEY6OkNhbGxiYWNrSURIYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6
Q2FsbGJhY2tJREhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6
OkNhbGxiYWNrSUQ+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpI
YXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAg
ICAqIFNoYXJlZC9PcHRpb25hbENhbGxiYWNrSUQuaDogQWRkZWQuIFVubGlrZSBDYWxsYmFja0lE
LCBjYWxsYmFjayBJRCBoZXJlIGNhbiBiZSAwLgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCk6CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFs
Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAgICAgICAgKFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEOjpjYWxsYmFja0lEKTogUmV0dXJucyBhIHZhbGlkIENhbGxiYWNrSUQgb2JqZWN0LiBUaGUg
Y2FsbGVyIG9mCisgICAgICAgIHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIHZlcmlmaWVkIHRoYXQg
dGhlIElEIGlzIG5laXRoZXIgMCBvciAtMSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6Om9wZXJhdG9yIGJvb2wpOgorICAg
ICAgICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWQpOgorICAgICAgICAoV2Vi
S2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjplbmNvZGUpOiBTaW5jZSBPcHRpb25hbENhbGxiYWNr
SUQgY2FuIGJlIDAsIG9ubHkgYXNzZXJ0IHRoYXQgaXQncyBub3QgLTEuCisgICAgICAgIChXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELgorICAg
ICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXApOiBBZGRlZC4gVXNlZCBpbiBXZWJD
b29raWVNYW5hZ2VyUHJveHkuCisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6
OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWNpZmljQ2FsbGJhY2tNYXA6OnRha2UpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVjaWZpY0NhbGxiYWNrTWFwOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkU2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkR2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Ry
aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFs
dWVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdl
c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdEZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1h
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3RhdGVDaGFuZ2VDb21w
bGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpoaWRlQ29udGVudFVudGlsUGVu
ZGluZ1VwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToK
KyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNl
Y29uZGFyeVRocmVhZF0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfYXNrUGFnZVRvQ29t
cHV0ZVBhZ2VSZWN0c10pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpmb250QXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZv
bnRBdFNlbGVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0
QWxsQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp2YWxpZGF0ZUNvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dENvbnRlbnRzQXNNSFRNTERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0V2ViQXJj
aGl2ZU9mRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGVk
UmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRCeXRlY29kZVBy
b2ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2
aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb250QXRTZWxlY3Rpb24pOgorCiAyMDE3LTA2LTIzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgYXNz
ZXJ0aW9uIHRvIG1ha2Ugc3VyZSBjYWxsYmFja0lkZW50aWZpZXIgaXMgbm90IDAgaW4gRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oKQpAQCAtNDU3LDYgKzY0Myw3IEBACiAgICAg
ICAgICogVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwOgogICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmphdmFzY3JpcHRHbG9iYWxDb250ZXh0KToKIAorPj4+Pj4+PiAucjIx
ODc4MgogMjAxNy0wNi0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TIERuRF0gW1dLMl0gRW5hYmxlIGluLWFwcCBkcmFnZ2luZyBmcm9tIFdL
V2ViVmlldyBvbiB0aGUgcGhvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCAzZDJkZTkxOTViOWIx
OTMzNWZlYmQ3N2EwZWVmNzU2MzlhMTNhN2Y2Li41YTlhMDNiODIyZWVjNWE3NjlkMDU3ZDczY2Jm
YzllZmIzMGJjODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICAgICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2Vy
PigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0
b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyPigpLT5z
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5LCAw
KTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCktPnNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJ
RCgpKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAg
ICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NhbGxiYWNrSUQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTMxMWQ5OGE2NDk3ZjAzN2Vm
N2EwY2EyMDc4NGRmN2NkMzViYzczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NhbGxiYWNrSUQuaApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoOworCit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAg
ICBBTFdBWVNfSU5MSU5FIGV4cGxpY2l0IENhbGxiYWNrSUQoKQorICAgIHsgfQorCisgICAgQUxX
QVlTX0lOTElORSBDYWxsYmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisgICAgICAg
IDogbV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgICAgICBBU1NFUlQoSGFzaFRyYWl0czx1
aW50NjRfdD46OmVtcHR5VmFsdWUoKSAhPSBtX2lkICYmICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6
aXNEZWxldGVkVmFsdWUobV9pZCkpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDYWxsYmFja0lEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pZCA9PSBvdGhlci5tX2lkOyB9
CisKKyAgICB1aW50NjRfdCB0b0ludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAg
QUxXQVlTX0lOTElORSBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkQ2FsbGJh
Y2tJRChtX2lkKTsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZENhbGxi
YWNrSUQodWludDY0X3QgcmF3SWQpCisgICAgeworICAgICAgICByZXR1cm4gSGFzaFRyYWl0czx1
aW50NjRfdD46OmVtcHR5VmFsdWUoKSAhPSByYXdJZCAmJiAhSGFzaFRyYWl0czx1aW50NjRfdD46
OmlzRGVsZXRlZFZhbHVlKHJhd0lkKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBDYWxsYmFja0lEIGZyb21JbnRlZ2VyKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaXNWYWxpZENhbGxiYWNrSUQocmF3SWQpKTsKKyAgICAgICAgcmV0dXJu
IENhbGxiYWNrSUQocmF3SWQpOworICAgIH0KKworICAgIHN0YXRpYyBDYWxsYmFja0lEIGdlbmVy
YXRlSUQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAg
ICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUNhbGxiYWNrSUQgPSAxOworICAgICAgICByZXR1cm4g
Q2FsbGJhY2tJRCh1bmlxdWVDYWxsYmFja0lEKyspOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1f
aWQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIENhbGxiYWNrSUQmIGNhbGxiYWNrSUQpCisgICAgeworICAg
ICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZXIuZGVjb2RlKGNhbGxiYWNrSUQubV9pZCk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQUxXQVlTX0lOTElORSBleHBsaWNpdCBD
YWxsYmFja0lEKHVpbnQ2NF90IG5ld0lEKQorICAgICAgICA6IG1faWQobmV3SUQpCisgICAgewor
ICAgICAgICBBU1NFUlQobmV3SUQgIT0gSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUo
KSk7CisgICAgfQorCisgICAgZnJpZW5kIGNsYXNzIENhbGxiYWNrTWFwOworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBDYWxsYmFja1R5cGU+IGZyaWVuZCBjbGFzcyBTcGVjaWZpY0NhbGxiYWNrTWFw
OworICAgIGZyaWVuZCBjbGFzcyBPcHRpb25hbENhbGxiYWNrSUQ7CisgICAgZnJpZW5kIHN0cnVj
dCBXVEY6OkNhbGxiYWNrSURIYXNoOworICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJL
aXQ6OkNhbGxiYWNrSUQ+OworCisgICAgdWludDY0X3QgbV9pZCB7IEhhc2hUcmFpdHM8dWludDY0
X3Q+OjplbXB0eVZhbHVlKCkgfTsKK307CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVj
dCBDYWxsYmFja0lESGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0
OjpDYWxsYmFja0lEJiBjYWxsYmFja0lEKSB7IHJldHVybiBpbnRIYXNoKGNhbGxiYWNrSUQubV9p
ZCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGEs
IGNvbnN0IFdlYktpdDo6Q2FsbGJhY2tJRCYgYikgeyByZXR1cm4gYS5tX2lkID09IGIubV9pZDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJ
RD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJLaXQ6OkNhbGxiYWNrSUQ+IHsKKyAgICBzdGF0aWMg
V2ViS2l0OjpDYWxsYmFja0lEIGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJLaXQ6OkNhbGxiYWNr
SUQoKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OkNh
bGxiYWNrSUQmIHNsb3QpIHsgc2xvdCA9IFdlYktpdDo6Q2FsbGJhY2tJRChzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBzbG90KSB7IHJldHVybiBzbG90Lm1faWQgPT0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Cit9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpDYWxsYmFja0lEPiB7CisgICAgdHlwZWRlZiBDYWxs
YmFja0lESGFzaCBIYXNoOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL09wdGlvbmFsQ2FsbGJhY2tJRC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL09wdGlvbmFs
Q2FsbGJhY2tJRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NGU3MmUwY2U2NWQ2MmQ2ZTBhZmI2M2JmMGVjMjU4
ZDk0M2RhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9u
YWxDYWxsYmFja0lELmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IE9wdGlvbmFsQ2FsbGJhY2tJRCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgT3B0aW9uYWxDYWxs
YmFja0lEKCkgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGV4cGxpY2l0IE9wdGlvbmFsQ2FsbGJh
Y2tJRChjb25zdCBDYWxsYmFja0lEJiBvdGhlcklEKQorICAgICAgICA6IG1faWQob3RoZXJJRC5t
X2lkKQorICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsQ2FsbGJhY2tJ
RChjb25zdCBPcHRpb25hbENhbGxiYWNrSUQmIG90aGVySUQpCisgICAgICAgIDogbV9pZChvdGhl
cklELm1faWQpCisgICAgeworICAgICAgICBBU1NFUlQoIUhhc2hUcmFpdHM8dWludDY0X3Q+Ojpp
c0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisgICAgdWludDY0X3QgdG9JbnRlZ2VyKCkg
eyByZXR1cm4gbV9pZDsgfQorICAgIENhbGxiYWNrSUQgY2FsbGJhY2tJRCgpCisgICAgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChDYWxsYmFja0lEOjppc1ZhbGlkQ2FsbGJhY2tJRChtX2lkKSk7
CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKG1faWQpOworICAgIH0KKworICAgIG9wZXJhdG9y
IGJvb2woKSB7IHJldHVybiBtX2lkOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9CisgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCByYXdJZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAhSGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVl
KHJhd0lkKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNWYWxpZCgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2lkOworICAgIH0KKworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBP
cHRpb25hbENhbGxiYWNrSUQmIGNhbGxiYWNrSUQpCisgICAgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlY29kZXIuZGVjb2RlKGNhbGxiYWNrSUQubV9pZCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgdWludDY0X3QgbV9pZCB7IEhhc2hUcmFpdHM8dWludDY0X3Q+Ojpl
bXB0eVZhbHVlKCkgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCAwYWE0ZmIxNTY5OTY0YjUz
OTQ4ZGEyYjUzMmQzZDZiMzIyYmZhMjhmLi4yYTQ1ZmEyNjBhOGU1MDMxMjZmMTNkOTE5MjkwN2Yw
ZWUzNWQ0YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uX2gKICNkZWZpbmUgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b25faAogCisjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgpAQCAtMjYxLDcgKzI2Miw3IEBAIHB1YmxpYzoK
ICAgICB1aW50NjRfdCB0cmFuc2FjdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlv
bklEOyB9CiAgICAgdm9pZCBzZXRUcmFuc2FjdGlvbklEKHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQp
IHsgbV90cmFuc2FjdGlvbklEID0gdHJhbnNhY3Rpb25JRDsgfQogCi0gICAgdHlwZWRlZiB1aW50
NjRfdCBUcmFuc2FjdGlvbkNhbGxiYWNrSUQ7CisgICAgdHlwZWRlZiBDYWxsYmFja0lEIFRyYW5z
YWN0aW9uQ2FsbGJhY2tJRDsKICAgICBjb25zdCBWZWN0b3I8VHJhbnNhY3Rpb25DYWxsYmFja0lE
PiYgY2FsbGJhY2tJRHMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSURzOyB9CiAgICAgdm9p
ZCBzZXRDYWxsYmFja0lEcyhWZWN0b3I8VHJhbnNhY3Rpb25DYWxsYmFja0lEPiYmIGNhbGxiYWNr
SURzKSB7IG1fY2FsbGJhY2tJRHMgPSBXVEZNb3ZlKGNhbGxiYWNrSURzKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggZjYxMDgxNzczMjQ1MGNj
MmEzOGU0NjE5YzlhNDlkZGQzYTZmMmU1YS4uMGFiOGYzMjUwNmY1ZDg3OTg3ZDg3ZTc3MTg3MjQ0
M2FjODcxNTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJRXJyb3IuaCIKICNpbmNsdWRlICJB
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5j
bHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtMzQsNyArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja0lEOyB9CisgICAgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsYmFja0lEOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIFQqIGFzKCkK
QEAgLTcxLDIxICs3MSwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBleHBsaWNpdCBDYWxsYmFja0Jh
c2UoVHlwZSB0eXBlLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBt
X2NhbGxiYWNrSUQoZ2VuZXJhdGVDYWxsYmFja0lEKCkpCisgICAgICAgICwgbV9jYWxsYmFja0lE
KENhbGxiYWNrSUQ6OmdlbmVyYXRlSUQoKSkKICAgICAgICAgLCBtX2FjdGl2aXR5VG9rZW4oYWN0
aXZpdHlUb2tlbikKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyB1aW50NjRf
dCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICAgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUNhbGxiYWNrSUQgPSAxOwot
ICAgICAgICByZXR1cm4gdW5pcXVlQ2FsbGJhY2tJRCsrOwotICAgIH0KLQogICAgIFR5cGUgbV90
eXBlOwotICAgIHVpbnQ2NF90IG1fY2FsbGJhY2tJRDsKKyAgICBDYWxsYmFja0lEIG1fY2FsbGJh
Y2tJRDsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2Fj
dGl2aXR5VG9rZW47CiB9OwogCkBAIC0xODAsMTMgKzE3MywxMyBAQCB2b2lkIGludmFsaWRhdGVD
YWxsYmFja01hcChIYXNoTWFwPHVpbnQ2NF90LCBUPiYgY2FsbGJhY2tNYXAsIENhbGxiYWNrQmFz
ZTo6RXJybwogCiBjbGFzcyBDYWxsYmFja01hcCB7CiBwdWJsaWM6Ci0gICAgdWludDY0X3QgcHV0
KFJlZjxDYWxsYmFja0Jhc2U+JiYgY2FsbGJhY2spCisgICAgQ2FsbGJhY2tJRCBwdXQoUmVmPENh
bGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQpOwotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRCkpOwotICAgICAg
ICBtX21hcC5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChjYWxsYmFja0lELmlzVmFsaWQoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX21h
cC5jb250YWlucyhjYWxsYmFja0lELm1faWQpKTsKKyAgICAgICAgbV9tYXAuc2V0KGNhbGxiYWNr
SUQubV9pZCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICByZXR1cm4gY2FsbGJhY2tJRDsK
ICAgICB9CiAKQEAgLTIwMSwxOCArMTk0LDE4IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gVD4KLSAgICB1aW50NjRfdCBwdXQoRnVuY3Rpb248dm9pZChULi4u
KT4mJiBmdW5jdGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4mIGFjdGl2aXR5VG9rZW4pCisgICAgQ2FsbGJhY2tJRCBwdXQoRnVuY3Rpb248dm9pZChU
Li4uKT4mJiBmdW5jdGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4pCiAgICAgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0g
R2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RG
TW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOwogICAgICAgICByZXR1cm4gcHV0KFdURk1v
dmUoY2FsbGJhY2spKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIFJlZlB0
cjxUPiB0YWtlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgUmVmUHRyPFQ+IHRha2UoQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJ
RCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBhdXRvIGJhc2Ug
PSBtX21hcC50YWtlKGNhbGxiYWNrSUQpOworICAgICAgICBhdXRvIGJhc2UgPSBtX21hcC50YWtl
KGNhbGxiYWNrSUQubV9pZCk7CiAgICAgICAgIGlmICghYmFzZSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yMjksNCArMjIyLDQ1IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPENhbGxiYWNrQmFzZT4+IG1fbWFwOwogfTsKIAordGVtcGxhdGUgPHR5
cGVuYW1lIENhbGxiYWNrVHlwZT4KK2NsYXNzIFNwZWNpZmljQ2FsbGJhY2tNYXAgeworcHVibGlj
OgorICAgIENhbGxiYWNrSUQgcHV0KFJlZjxDYWxsYmFja1R5cGU+JiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
bWFwLmNvbnRhaW5zKGNhbGxiYWNrSUQubV9pZCkpOworICAgICAgICBtX21hcC5zZXQoY2FsbGJh
Y2tJRC5tX2lkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBjYWxsYmFja0lE
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+CisgICAgQ2FsbGJhY2tJRCBw
dXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBDYWxsYmFja1R5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAg
ICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0KKworICAgIFJlZlB0cjxD
YWxsYmFja1R5cGU+IHRha2UoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGF1dG8gYmFzZSA9IG1fbWFwLnRha2Uo
Y2FsbGJhY2tJRC5tX2lkKTsKKyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKGJhc2UubGVha1JlZigpLT50ZW1w
bGF0ZSBhczxDYWxsYmFja1R5cGU+KCkpOworICAgIH0KKworICAgIHZvaWQgaW52YWxpZGF0ZShD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9tYXAs
IGVycm9yKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PENhbGxiYWNrQmFzZT4+IG1fbWFwOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDU1NzkwZTI1NWRjMjA0ZDIxYjg3YTA5OWFhMzQ4MTFmODQyZTBmMWEuLjQwODJlYjlmZWU3
ZWM0YTZhOWNmODMyNzljYjNmNzI0Zjk4MDI4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxi
YWNrSUQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCkBAIC03MiwxMCArNzMsMTAgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6Omlu
aXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50QmFzZSogY2wKIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKIHsKLSAgICBp
bnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1faHR0
cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJX
YXNJbnZhbGlkYXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fdm9pZENhbGxiYWNr
cywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgaW52YWxp
ZGF0ZUNhbGxiYWNrTWFwKG1fZ2V0Q29va2llc0NhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgbV9hcnJheUNhbGxiYWNrcy5pbnZhbGlkYXRl
KENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgIG1faHR0cENv
b2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6
Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgIG1fdm9pZENhbGxiYWNrcy5pbnZhbGlkYXRlKENh
bGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgIG1fZ2V0Q29va2ll
c0NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxp
ZGF0ZWQpOwogCiAgICAgVmVjdG9yPE9ic2VydmVyKj4gb2JzZXJ2ZXJzOwogICAgIGZvciAoYXV0
byYgb2JzZXJ2ZXJTZXQgOiBtX2Nvb2tpZU9ic2VydmVycy52YWx1ZXMoKSkgewpAQCAtOTEsMTgg
KzkyLDE4IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3ll
ZCgpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJv
Y2Vzc1Byb3h5KikKIHsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNr
cywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNh
bGxiYWNrTWFwKG1faHR0cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fdm9p
ZENhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7Ci0gICAgaW52
YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZ2V0Q29va2llc0NhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9hcnJheUNhbGxiYWNrcy5pbnZhbGlkYXRlKENh
bGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1faHR0cENvb2tpZUFjY2Vw
dFBvbGljeUNhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NF
eGl0ZWQpOworICAgIG1fdm9pZENhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJy
b3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5pbnZhbGlkYXRl
KENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwogfQogCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKQogewot
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRw
Q29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNz
RXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhpdGVkKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tN
YXAobV9nZXRDb29raWVzQ2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpQcm9jZXNzRXhp
dGVkKTsKKyAgICBtX2FycmF5Q2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tz
LmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgbV92
b2lkQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRl
ZCk7CisgICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6UHJvY2Vzc0V4aXRlZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC0xMTcsMTQgKzExOCwxMSBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiAKIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQgc2Vz
c2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gQXJyYXlDYWxsYmFj
azo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0
KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fYXJyYXlDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAgIHBy
b2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2Fy
eShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoc2Vz
c2lvbklELCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpk
aWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJlZlB0cjxBcnJheUNhbGxiYWNr
PiBjYWxsYmFjayA9IG1fYXJyYXlDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAgICBpZiAo
IWNhbGxiYWNrKSB7CkBAIC0xNDcsNjkgKzE0NSw1MSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fdm9p
ZENhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUsIGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgRnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gVm9pZENh
bGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0gICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX3ZvaWRDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2Uoc2Vzc2lvbklELCB0aW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2ll
JiBjb29raWUsIEZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lk
Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fdm9pZENhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAg
ICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwg
Y29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwg
RnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29raWVz
Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2dldENvb2tpZXND
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fZ2V0Q29va2llc0NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29r
aWVzKHNlc3Npb25JRCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgRnVu
Y3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBHZXRDb29raWVzQ2Fs
bGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2dldENvb2tpZXNDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fZ2V0Q29va2llc0NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNl
c3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGlkU2V0Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNr
KCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKGNvbnN0
IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fZ2V0Q29va2ll
c0NhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFs
dWUoY29va2llcyk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVD
b29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkRGVsZXRlQ29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBt
X3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CkBA
IC0yODQsMzEgKzI2NCwyNCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShTZXNzaW9uSUQsIEhUVFBDb29raWVBY2NlcAogICAgIC8vIFRoZSBw
b2xpY3kgaXMgbm90IHNlbnQgdG8gbmV3bHkgY3JlYXRlZCBwcm9jZXNzZXMgKG9ubHkgU291cCBk
b2VzIHRoYXQgdmlhIHNldEluaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5KCkpLiBUaGlzIGlz
IG5vdCBhIHNlcmlvdXMgcHJvYmxlbSwgYmVjYXVzZToKICAgICAvLyAtIFdoZW4gdGVzdGluZywg
d2Ugb25seSBoYXZlIG9uZSBXZWJQcm9jZXNzIGFuZCBvbmUgTmV0d29ya1Byb2Nlc3MsIGFuZCBX
ZWJLaXRUZXN0UnVubmVyIG5ldmVyIHJlc3RhcnRzIHRoZW07CiAgICAgLy8gLSBXaGVuIG5vdCB0
ZXN0aW5nLCBDb2NvYSBoYXMgdGhlIHBvbGljeSBwZXJzaXN0ZWQsIGFuZCB0aHVzIG5ldyBwcm9j
ZXNzZXMgdXNlIGl0IChldmVuIGZvciBlcGhlbWVyYWwgc2Vzc2lvbnMpLgotICAgIHByb2Nlc3NQ
b29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIDApKTsKLQotICAgIGF1dG8gY2FsbGJhY2sg
PSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBwcm9jZXNz
UG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQoKSkpOwog
Ci0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBjYWxsYmFj
a0lEKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV92b2lkQ2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShwb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJRChjYWxsYmFja0lEKSkpOwogfQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShTZXNzaW9u
SUQsIEZ1bmN0aW9uPHZvaWQgKEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IEhUVFBD
b29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOwotCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
Ci0gICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBX
VEZNb3ZlKGNhbGxiYWNrKSk7Ci0KKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2h0dHBDb29raWVB
Y2NlcHRQb2xpY3lDYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHVpbnQzMl90IHBvbGljeSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kpOwogfQogCi12b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZFNldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgbV92b2lkQ2Fs
bGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IDgyYWY3
NzA2NWQyZjIxYjBmNWM5MWM2N2Q5ZDk1NDBjMjhiMmY1NTQuLjBhZWEyYzViMGQ5MzM5OTY5M2Vj
MjI2MzY1ODQ1NGEwODZhYzVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTEwNywxMyArMTA3LDEzIEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKLSAg
ICB2b2lkIGRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
dWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9s
aWN5KHVpbnQzMl90IHBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYktpdDo6Q2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90
IHBvbGljeSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgZGlkU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZFNldENvb2tp
ZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBk
aWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkU2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkU2V0
Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0Q29va2llcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBkaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIGNvb2tp
ZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIApAQCAtMTMxLDEwICsxMzEsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBlcnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
QXJyYXlDYWxsYmFjaz4+IG1fYXJyYXlDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4+IG1faHR0cENvb2tpZUFjY2Vw
dFBvbGljeUNhbGxiYWNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxi
YWNrPj4gbV92b2lkQ2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxHZXRD
b29raWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZXNDYWxsYmFja3M7CisgICAgU3BlY2lmaWNDYWxs
YmFja01hcDxBcnJheUNhbGxiYWNrPiBtX2FycmF5Q2FsbGJhY2tzOworICAgIFNwZWNpZmljQ2Fs
bGJhY2tNYXA8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiBtX2h0dHBDb29raWVBY2Nl
cHRQb2xpY3lDYWxsYmFja3M7CisgICAgU3BlY2lmaWNDYWxsYmFja01hcDxWb2lkQ2FsbGJhY2s+
IG1fdm9pZENhbGxiYWNrczsKKyAgICBTcGVjaWZpY0NhbGxiYWNrTWFwPEdldENvb2tpZXNDYWxs
YmFjaz4gbV9nZXRDb29raWVzQ2FsbGJhY2tzOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNz
aW9uSUQsIFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOwog
ICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoU2V0PE9ic2VydmVyKj4+IG1fY29v
a2llT2JzZXJ2ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
b2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGNjYmNmMjllMDc2Njk3NGI3
NDM1ODcyMTJiMTJjM2JmNGNiYzFlMS4uYTVkNzdiOTYyOTkyZjFkM2Y2ZGVmODQ4NzUxYmE5NjFl
NTU2OTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwxMyArMjEsMTMgQEAKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQ29va2llTWFuYWdlclByb3h5IHsKLSAgICBEaWRH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIERpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3Qg
cG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKTsKKyAgICBEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogCi0gICAgRGlkU2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBEaWREZWxldGVDb29raWVzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIERpZFNldENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgRGlkR2V0Q29va2llcyhWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWREZWxldGVDb29raWVzKFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRDb29raWVzKFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWRHZXRDb29raWVzKFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKIAogICAgIENv
b2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNGJmYWUwZTc0YWM5MTE5NzEz
ZDBmNjJmOGNmNDU5ZjU3MGQ5MDJmZS4uZDQzNzI4ZTgwODNlYTQzMGFkNGJlZWI2OGZmMTNiN2Ji
MGFmNWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxi
YWNrSUQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgpAQCAtMTYwMyw3ICsx
NjA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQs
IGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElu
aXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTYyOCw3ICsxNjI5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21t
YW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMjgzNCw3ICsyODM1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmIHNjcmlwdCwgV1RGOjpGdW5jdGlvbjwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShzY3JpcHQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI4
NDUsNyArMjg0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKIH0KIApAQCAtMjg1Niw3ICsyODU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KQEAgLTI4NjgsNyArMjg2OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgQ2FsbGJhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJp
bmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KQEAgLTI4ODAsNyArMjg4MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmls
ZShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAtMjg5Miw3ICsyODkzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVy
T3V0cHV0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0yOTE4LDcgKzI5MTksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0JhcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc01I
VE1MRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogI2VuZGlmCkBAIC0yOTMwLDcgKzI5
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQog
CkBAIC0yOTQxLDcgKzI5NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNX
ZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKIH0KIApAQCAtMjk1Miw3ICsyOTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2
b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0yOTYzLDcgKzI5
NjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBBUEk6OlVSTCogcmVzbwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3Ry
aW5nKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NzQsNyArMjk3NSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJj
aGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtMzAwNyw3ICszMDA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChS
ZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogICAgICAgICB9KTsKICAgICB9OwogCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNl
UmVwYWludENhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdT
dG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsgCiB9CkBAIC0zMjQz
LDcgKzMyNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCkKIHsKLSAgICBIYXNoU2V0PHVpbnQ2NF90
PiBsb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMgPSBXVEZNb3ZlKG1fbG9hZERlcGVuZGVu
dFN0cmluZ0NhbGxiYWNrSURzKTsKKyAgICBIYXNoU2V0PENhbGxiYWNrSUQ+IGxvYWREZXBlbmRl
bnRTdHJpbmdDYWxsYmFja0lEcyA9IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMpOwogICAgIGZvciAoYXV0byYgY2FsbGJhY2tJRCA6IGxvYWREZXBlbmRlbnRTdHJpbmdD
YWxsYmFja0lEcykgewogICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8U3RyaW5nQ2FsbGJhY2s+KGNhbGxiYWNrSUQpKQogICAgICAgICAgICAgY2FsbGJhY2stPmlu
dmFsaWRhdGUoKTsKQEAgLTUwMDAsNyArNTAwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgIH0KIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Vm9pZENhbGxiYWNrPihjYWxs
YmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC01MDExLDcgKzUwMTIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNh
bGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8RGF0YUNhbGxiYWNrPihjYWxsYmFj
a0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC01MDIyLDcgKzUwMjMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSwgdWludDY0XwogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbWFnZUNhbGxiYWNr
KGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8SW1hZ2VDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTAzMyw3ICs1MDM0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGJpdG1hcEhhbmRsZSwgdWkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJl
dHVyblZhbHVlKGJpdG1hcEhhbmRsZSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdD
YWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmIHJlc3VsdFN0
cmluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxi
YWNrKSB7CkBAIC01MDQ3LDcgKzUwNDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RyaW5nQ2Fs
bGJhY2soY29uc3QgU3RyaW5nJiByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSQogICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmlt
cGwoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2so
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5n
Q2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBt
X2NhbGxiYWNrcy50YWtlPFN0cmluZ0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNh
bGxiYWNrKSB7CkBAIC01MDYxLDcgKzUwNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxp
ZGF0ZVN0cmluZ0NhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPmlu
dmFsaWRhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2so
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGhhZEV4Y2VwdGlv
biwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZGV0YWlscywgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlv
bkRldGFpbHMmIGRldGFpbHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNh
bGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3JpcHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC01MDgxLDcgKzUwODIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGFSZWZlcmVuY2UsCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCks
IGhhZEV4Y2VwdGlvbiwgZGV0YWlscyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRl
ZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0
b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
cGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Q29t
cHV0ZWRQYWdlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBA
IC01MDkyLDcgKzUwOTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxi
YWNrKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFj
dG9yRm9yUHJpbnRpbmcpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCBpc0VuYWJsZWQsIGludCBz
dGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNv
bW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIGlzRW5hYmxlZCwg
aW50IHN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9
IG1fY2FsbGJhY2tzLnRha2U8VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMDMsNyArNTEwNCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBi
b29sIGlzRW5hCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShj
b21tYW5kTmFtZS5pbXBsKCksIGlzRW5hYmxlZCwgc3RhdGUpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6dW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFj
a3MudGFrZTxVbnNpZ25lZENhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNr
KSB7CkBAIC01MTE1LDcgKzUxMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxs
YmFjayh1aW50NjRfdCByZXN1bHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShyZXN1bHQpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxs
YmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgTUVTU0FHRV9DSEVDSyhyYW5nZS5pc1ZhbGlkKCkpOwogCkBAIC01MTMwLDcgKzUxMzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGlu
Z1JhbmdlJiByYW5nZSwgdWludDY0X3QgY2FsbAogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi12
b2lkIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IE1hY2hTZW5kUmln
aHQmIHNlbmRSaWdodCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpt
YWNoU2VuZFJpZ2h0Q2FsbGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8TWFjaFNlbmRSaWdodENhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNr
KQpAQCAtNTE5Miw3ICs1MTkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ1Njcm9sbGluZ0V2
ZW50KHVpbnQzMl90IGV2ZW50VHlwZSwgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAKICAgICB9CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNh
bGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFu
Z2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKGFjdHVhbFJh
bmdlLmlzVmFsaWQoKSk7CiAKQEAgLTUyMDcsNyArNTIwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBFZGl0CiB9CiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2VQcm94eTo6cHJpbnRG
aW5pc2hlZENhbGxiYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIHByaW50RXJyb3IsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6cHJpbnRGaW5pc2hlZENhbGxiYWNrKGNv
bnN0IFJlc291cmNlRXJyb3ImIHByaW50RXJyb3IsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxQcmludEZpbmlzaGVkQ2FsbGJh
Y2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTU5NjEsNyArNTk2Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBw
cmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKQEAg
LTU5NzUsNyArNTk3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2UoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7CisgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
ICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50
aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQpAQCAt
NTk4Nyw3ICs1OTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxi
YWNrSUQoKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwog
ICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBw
cmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1Nl
bmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KQEAgLTU5OTks
NyArNjAwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0g
dHJ1ZTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0Zv
clByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFn
ZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24p
KTsKQEAgLTYyOTYsNyArNjI5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5n
ZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFjCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNjMwNyw3ICs2MzA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFu
Z2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAKQEAgLTYzMTgsNyArNjMxOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRl
eEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIApAQCAtNjMyOSw3ICs2MzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiByYW5n
ZSwgV1QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhy
YW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNjM3Myw3ICs2Mzc0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNpemUgYml0
bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChy
ZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBA
IC02NTk2LDcgKzY1OTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zdGFsbEFjdGl2aXR5U3Rh
dGVDaGFuZ2VDb21wbGV0aW9uSGFuZGxlcihXVEY6OkZ1bmN0aW9uPHZvaQogICAgIGF1dG8gdm9p
ZENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildIChDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUodm9pZENhbGxiYWNrKSk7CiAgICAgbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2tJRCk7CiB9CiAKQEAgLTY3NDYs
NyArNjc0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KQogICAgIG1fcGFnZUNsaWVudC5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlu
a0ljb24mIGljb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyKQordm9pZCBXZWJQYWdlUHJveHk6
OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENh
bGxiYWNrSUQgbG9hZElkZW50aWZpZXIpCiB7CiAgICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0
TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxX
ZWJQYWdlUHJveHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oV1RGOjpGdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKSB7CiAg
ICAgICAgIGlmICghaXNWYWxpZCgpKSB7CkBAIC02NzU2LDE1ICs2NzU3LDE1IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29u
JiBpY29uLCB1aW50NjRfCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGRlY2lzaW9uID0gKGJv
b2wpY2FsbGJhY2tGdW5jdGlvbjsKLSAgICAgICAgdWludDY0X3QgbmV3Q2FsbGJhY2tJZGVudGlm
aWVyID0gZGVjaXNpb24gPyBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSA6IDA7
CisgICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25h
bENhbGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9u
YWxDYWxsYmFja0lEKCk7CiAKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwg
bmV3Q2FsbGJhY2tJZGVudGlmaWVyKSwgbV9wYWdlSUQpOwogICAgIH0pOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpm
aW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQogewotICAgIGRhdGFDYWxsYmFjayhkYXRhLCBjYWxsYmFja0lkZW50
aWZpZXIpOworICAgIGRhdGFDYWxsYmFjayhkYXRhLCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDQ0NWQ1MzJkYzUwOGVh
ZDBmMDkzZDM5OWRjMzlmOTQ1MjkzMTllNS4uZmFjM2VlOTk1MzFlYjBlNTdhMGE4NTVkNDZkNzZm
YWI4MGEzOWUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
OTM2LDcgKzkzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkZyYW1l
UHJveHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQs
IFJlZjxEYXRhQ2FsbGJhY2s+JiYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB1aW50MzJfdCBj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mLCBEcmF3VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKLSAg
ICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CiAjZW5k
aWYKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNr
PiYmKTsKQEAgLTExNTksOCArMTE1OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCk7CiAKLSAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29u
c3QgV2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3Qg
V2ViQ29yZTo6TGlua0ljb24mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOworICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOwogCiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQgc2V0V2lu
ZG93RnJhbWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CkBAIC0xNDQ5LDM2ICsxNDQ5LDM2
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVU
eXBlLCBib29sIGhhbmRsZWQpOwogCi0gICAgdm9pZCB2b2lkQ2FsbGJhY2sodWludDY0X3QpOwot
ICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCB1aW50
NjRfdCk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QpOwotICAg
IHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIHVpbnQ2NF90
KTsKLSAgICB2b2lkIGNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4mLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCk7
Ci0gICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBp
bnQsIHVpbnQ2NF90KTsKLSAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIHVpbnQ2
NF90KTsKLSAgICB2b2lkIGVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdSYW5nZSYs
IHVpbnQ2NF90KTsKKyAgICB2b2lkIHZvaWRDYWxsYmFjayhDYWxsYmFja0lEKTsKKyAgICB2b2lk
IGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOworICAg
IHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29s
IGhhZEV4Y2VwdGlvbiwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9v
bCwgaW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3Qs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGlu
Z1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBtYWNo
U2VuZFJpZ2h0Q2FsbGJhY2soY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYsIHVpbnQ2NF90
KTsKKyAgICB2b2lkIG1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2Vu
ZFJpZ2h0JiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKLSAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJS
YW5nZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2Um
LCB1aW50NjRfdCk7CisgICAgdm9pZCByZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgYXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYs
IHVpbnQ2NF90KTsKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSwgYm9vbCwgdWludDY0X3QpOworICAgIHZvaWQgYXR0cmlidXRlZFN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVk
aXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJh
Y2soY29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQ2NF90KTsKLSAgICB2
b2lkIHRvdWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1
aW50MzJfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2so
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmLCBmbG9hdCwg
dWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxi
YWNrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgc2VsZWN0aW9u
Q29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVp
bnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHRvdWNoZXNDYWxsYmFjayhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQg
Zm9udFNpemUsIHVpbnQ2NF90IGZvbnRUcmFpdHMsIENhbGxiYWNrSUQpOworICAgIHZvaWQgYXV0
b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25z
dCBTdHJpbmcmIG1hcmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBT
dHJpbmcmIGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5n
JiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBh
ZnRlclRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3Qg
RWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2ZW50LCBib29sJiBoYW5kbGVkKTsKICAgICB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBlbGVtZW50UmVjdCk7Ci0gICAgdm9pZCBzZWxlY3Rpb25SZWN0c0NhbGxiYWNrKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIHVpbnQ2NF90KTsKKyAgICB2b2lk
IHNlbGVjdGlvblJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJl
Y3Q+JiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBw
cmludEZpbmlzaGVkQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2
NF90KTsKKyAgICB2b2lkIHByaW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZm9jdXNlZEZyYW1l
Q2hhbmdlZCh1aW50NjRfdCBmcmFtZUlEKTsKQEAgLTE2OTksNyArMTY5OSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIENhbGxiYWNrTWFwIG1fY2FsbGJhY2tzOwotICAgIEhhc2hTZXQ8dWlu
dDY0X3Q+IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzOworICAgIEhhc2hTZXQ8Q2Fs
bGJhY2tJRD4gbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHM7CiAKICAgICBIYXNoU2V0
PFdlYkVkaXRDb21tYW5kUHJveHkqPiBtX2VkaXRDb21tYW5kU2V0OwogCkBAIC0xOTU5LDcgKzE5
NTksNyBAQCBwcml2YXRlOgogICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlTWFwIG1fY29u
ZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXM7CiAgICAgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgbV9wb3RlbnRpYWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgeyBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpOb0ZsYWdzIH07CiAgICAgYm9vbCBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VX
YW50c1N5bmNocm9ub3VzUmVwbHkgeyBmYWxzZSB9OwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKKyAgICBWZWN0b3I8Q2FsbGJhY2tJRD4g
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrczsKIAogICAgIFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX21lZGlhU3RhdGUgeyBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpJc05vdFBsYXlpbmcgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTc5MWRhYjgwZDNjYTY1MTdhZjg3YTAw
ZGI5ODMwNGE5NDhlYWQ2OC4uN2UwMmY0ZWVjMDkzMjVmYjYyNDY0OTNkMmIyNGJiNzU5OTMwMmU3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0xNTQsMjcgKzE1NCwyNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIFdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1l
SUQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB0ZXh0RmllbGRWYWx1ZXMsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKICAgICAjIENh
bGxiYWNrIG1lc3NhZ2VzCi0gICAgVm9pZENhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0g
ICAgRGF0YUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIEltYWdlQ2FsbGJhY2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSBiaXRtYXBIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU3RyaW5nQ2FsbGJh
Y2soU3RyaW5nIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBJbnZhbGlk
YXRlU3RyaW5nQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTY3JpcHRWYWx1ZUNh
bGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGhhZEV4Y2VwdGlvbiwg
c3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0YWlscywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKLSAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLSAgICBWYWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhTdHJpbmcgY29tbWFuZCwg
Ym9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
RWRpdGluZ1JhbmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNr
KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVh
bFJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFZvaWRDYWxsYmFjayhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEYXRhQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VsdERhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEltYWdlQ2Fs
bGJhY2soV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1
bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTY3JpcHRW
YWx1ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGhhZEV4Y2Vw
dGlvbiwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMgZGV0YWlscywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJp
bnRpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFZhbGlkYXRlQ29tbWFu
ZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRWRpdGluZ1JhbmdlQ2FsbGJhY2so
c3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2so
V2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFs
UmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2Vi
S2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jhbmdl
IGFjdHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEZvbnRBdFNlbGVjdGlvbkNh
bGxiYWNrKFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFz
TXVsdGlwbGVGb250cywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBBdHRyaWJ1dGVkU3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5n
IHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb250QXRTZWxlY3Rpb25DYWxsYmFjayhTdHJp
bmcgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb0hhc011bHRpcGxlRm9u
dHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAjaWYgUExBVEZPUk0o
SU9TKQotICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6Rmxv
YXRSZWN0PiB0ZXh0UmVjdHMsIFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCB1aW50
NjRfdCB0cmFpdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQXV0b2NvcnJlY3Rpb25Db250
ZXh0Q2FsbGJhY2soU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcg
c2VsZWN0ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0
X3QgbGVuZ3RoLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdGlvbkNvbnRleHRDYWxs
YmFjayhTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVy
VGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXN0dXJlQ2FsbGJhY2soV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3Rh
dGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBU
b3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMs
IHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBdXRv
Y29ycmVjdGlvbkRhdGFDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiB0ZXh0UmVj
dHMsIFN0cmluZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCB1aW50NjRfdCB0cmFpdHMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9jb3JyZWN0aW9uQ29udGV4dENh
bGxiYWNrKFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgbWFya2VkVGV4dCwgU3RyaW5nIHNlbGVj
dGVkVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxl
bmd0aCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0aW9uQ29udGV4
dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcg
YWZ0ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnRlcnByZXRL
ZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0ZSwgYm9vbCBpc0NoYXJFdmVu
dCkgLT4gKGJvb2wgaGFuZGxlZCkKICAgICBEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihz
dHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlv
bikKICAgICBTYXZlSW1hZ2VUb0xpYnJhcnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGUsIHVpbnQ2NF90IHNpemUpCkBAIC0xODQsMTcgKzE4NCwxNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQpCiAgICAgRGlkQ29tcGxldGVTeW50aGV0aWNDbGljaygpCiAgICAgRGlzYWJsZURv
dWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQot
ICAgIERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIFNlbGVjdGlvblJlY3RzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6
OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlvblJlY3RzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHMsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBT
ZXREYXRhRGV0ZWN0aW9uUmVzdWx0KHN0cnVjdCBXZWJLaXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQg
ZGF0YURldGVjdGlvblJlc3VsdCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBQcmlu
dEZpbmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKKyAgICBQcmludEZpbmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0Q2FsbGJhY2soV2ViQ29yZTo6TWFjaFNl
bmRSaWdodCBzZW5kUmlnaHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgTWFjaFNlbmRSaWdo
dENhbGxiYWNrKFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdl
KGRvdWJsZSBzY2FsZUZhY3RvcikKQEAgLTQ4Miw4ICs0ODIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogCiAgICAgRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAotICAgIEdldExv
YWREZWNpc2lvbkZvckljb24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgRmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKTsKKyAgICBHZXRMb2FkRGVjaXNpb25G
b3JJY29uKHN0cnVjdCBXZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lELCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA3OGY2YThmYjgzZTYxZmIzNjhl
ZGQwM2NmMThhNDllZTgxMzE3ZGQ5Li5jMWJhNzY0ZjAxNTQyNzExZTI5YWQ1ZjlhMDczNDI3NzY4
MjhhYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxs
YmFjayA9IG1fY2FsbGJhY2tzLnRha2U8R2VzdHVyZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAg
ICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Omdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90
IGdlc3QKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvaW50
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50
MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFRvdWNoZXNDYWxs
YmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTUzLDcgKzE1Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZShwb2ludCwgdG91Y2hlcywgZmxhZ3MpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6YXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkZsb2F0UmVjdD4mIHJlY3RzLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9hdCBmb250U2l6
ZSwgdWludDY0X3QgZm9udFRyYWl0cywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZVByb3h5OjphdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RmxvYXRSZWN0PiYgcmVjdHMsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGZsb2F0IGZvbnRTaXpl
LCB1aW50NjRfdCBmb250VHJhaXRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0
byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2s+
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkZsb2F0UmVjdD4mCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShyZWN0cywgZm9udE5hbWUsIGZvbnRTaXplLCBmb250VHJhaXRzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIGFm
dGVyVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTZWxlY3Rpb25D
b250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE3
NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uQ29udGV4dENhbGxiYWNr
KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdAogICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoc2VsZWN0ZWRUZXh0LCBiZWZvcmVUZXh0LCBhZnRl
clRleHQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIG1hcmtlZFRleHQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgdWlu
dDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJp
bmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwg
dWludDY0X3QgbGVuZ3RoLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxs
YmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5n
JiBiZWZvcmVUZXh0LCBjb25zdAogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0
dXJuVmFsdWUoYmVmb3JlVGV4dCwgbWFya2VkVGV4dCwgc2VsZWN0ZWRUZXh0LCBhZnRlclRleHQs
IGxvY2F0aW9uLCBsZW5ndGgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVj
dHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlv
blJlY3RzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlv
blJlY3RzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiBzZWxl
Y3Rpb25SZWN0cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NhbGxiYWNrcy50YWtlPFNlbGVjdGlvblJlY3RzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYkNv
cmU6OlRleAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50
MzJfdClncmFudWxhcml0eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQ0MSw3
ICs0NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMocG9pbnQsIHRvdWNoZXMsIGJhc2VJc1N0YXJ0LCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogICAgIApAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25E
YXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApA
QCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9u
KGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBcHBseUF1dG9jb3JyZWN0aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpG
dW5jdGlvbjx2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENh
bGxiYWNrKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01MDIs
NyArNTAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlB
dFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW4KICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGdyYW51bGFyaXR5KSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSks
IHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNTI0LDcgKzUyNCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24o
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVj
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxh
cml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOwogfQogICAgIApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wg
aXNJCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdFBvaW50KHBvaW50LCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNlbGVjdGlvbklu
RGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3RpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
IHBvaW50LAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6
OkludFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9p
bnRBbmRCb3VuZGFyeShwb2ludCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogICAgIAogfQpAQCAtNTgxLDcgKzU4MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01OTIsNyArNTky
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNjA4
LDcgKzYwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0U2VsZWN0aW9uQ29udGV4dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC02
MjQsNyArNjI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbGVjdFdpdGhUd29Ub3VjaGVzKGZyb20sIHRvLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRl
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC03MjAsNyArNzIwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNl
dChXZWJDb3JlOjpUZXh0R3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Cisg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51
bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJp
dHkpLCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTczMSw3ICs3MzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRo
VGV4dChpbnQzMl90IG9mZnNldCwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJl
Y3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChvZmZzZXQsIHRleHQsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiB9CiAKQEAgLTc0Miw3ICs3NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92
ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKENh
bAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25CeU9mZnNldChvZmZzZXQsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKENhbAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNOZXh0QXNzaXN0ZWROb2Rl
KGlzRm9yd2FyZCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTAzNywxMyArMTAz
NywxMyBAQCB1aW50MzJfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbgogICAgIH0KIAogICAgIHVpbnQzMl90IHBh
Z2VDb3VudCA9IDA7Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgdXNpbmcgTWVzc2FnZSA9IE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFn
ZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjsKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2Fn
ZShmcmFtZUlELCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBNZXNzYWdlOjpSZXBseShwYWdlQ291
bnQpLCBtX3BhZ2VJRCk7CiAgICAgcmV0dXJuIHBhZ2VDb3VudDsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRyYXdUb1BERkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0
YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3VG9QREZDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEcmF3VG9QREZD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2spOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggZGM4
ZGE1YWJiYTE4Y2EzYWI2MmQ0MjlmYjA0NzE1MmQ4NGVlNGMxMi4uMmE1OTBiZjQ4OGNjNzM4ZjJl
ZGIyMDJmN2QyNDU4YjhhNzMzZjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0yODEsMTAgKzI4MSwxMCBAQCBzdGF0aWMgdm9pZCBw
YWdlRGlkRHJhd1RvSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFu
ZGxlLCBJUENDYQogICAgICAgICAgICAgdmlldy0+X3ByaW50aW5nQ2FsbGJhY2tDb25kaXRpb24u
bm90aWZ5T25lKCk7CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBfZXhwZWN0ZWRQcmludENhbGxi
YWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBfZXhwZWN0ZWRQcmludENhbGxiYWNr
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0ludGVnZXIoKTsKIAogICAgIGNvbnRleHQtPnZp
ZXcgPSBzZWxmOwotICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOworICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpLnRv
SW50ZWdlcigpOwogCiAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdQYWdlc1RvUERGKF93ZWJG
cmFtZS5nZXQoKSwgcHJpbnRJbmZvLCBmaXJzdFBhZ2UgLSAxLCBsYXN0UGFnZSAtIGZpcnN0UGFn
ZSArIDEsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMg
dm9pZCBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mIHBhZ2VSZWN0cywgZAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250
ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgcGFnZURpZENvbXB1dGVQYWdl
UmVjdHMocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnRleHQpOwog
ICAgIH0pOwotICAgIF9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjayA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCk7CisgICAgX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJh
Y2stPmNhbGxiYWNrSUQoKS50b0ludGVnZXIoKTsKICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsK
ICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNr
OwogCkBAIC01MjEsMTEgKzUyMSwxMSBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgbGlua0Rlc3RpbmF0
aW9uTmFtZShQREZEb2N1bWVudCAqZG9jdW1lbnQsIFBERkRlc3RpbmF0aW9uICpkZQogICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0
RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgcGFnZURpZERyYXdUb0ltYWdl
KGltYWdlSGFuZGxlLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICBfbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOworICAgICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxsYmFjayA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAgICAgICAgICAgICAgICAgX2V4cGVj
dGVkUHJldmlld0NhbGxiYWNrcy5hZGQoX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrLCBz
Y2FsZWRQcmludGluZ1JlY3QpOwogCiAgICAgICAgICAgICAgICAgY29udGV4dC0+dmlldyA9IHNl
bGY7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICAgICAgICAgICAgICBfd2ViRnJhbWUt
PnBhZ2UoKS0+ZHJhd1JlY3RUb0ltYWdlKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJp
bnRPcGVyYXRpb24gcHJpbnRJbmZvXSksIHNjYWxlZFByaW50aW5nUmVjdCwgaW1hZ2VTaXplLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAxYTY0ZTc5Yjhj
YzhkYTJiYzFkODRiMWIyN2JmM2M4MGY0MmRlNTkyLi5mMWZiYmRiYzVmZjdhNDI3YzU3ODI1NDlj
YmM5OGJmYjgwMTI2N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMTgxLDEyICsxODEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdS
YW5nZSYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKIAogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0
IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5n
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKGFjdHVhbFJhbmdlLmlzVmFsaWQoKSk7CiAKQEAgLTIw
NywxMiArMjA3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIAogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGb250QXRTZWxlY3Rpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYg
Zm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRz
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlv
bkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBz
ZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAg
YXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Rm9udEF0U2VsZWN0aW9uQ2FsbGJhY2s+
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzN2VlNTg4NTA3YjY1ZDg4
YzkwNzg0NjA1MzljMWExNDg4YjllYzQ1Li42YWIxMDMxOTY0YTljMGI5NWVmNGNhZjkyNTRmZmQx
ODIyNzI5MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zNzQwLDYgKzM3NDAsOCBAQAogCQk5OUM4MUQ1NjFDMjBERkJFMDA1
QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEF1dG9tYXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8q
IF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QkM1OUQ2RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0aW9uYWxDYWxsYmFja0lELmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbmFsQ2FsbGJhY2tJRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQ2hp
bGRQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Q2hpbGRQcm9jZXNzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RjU0Rjg5
NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJG
IC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLm1tOyBwYXRoID0gbWFjL1dLQ29udGV4dFBy
aXZhdGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTI3LDYgKzQ5Mjks
OCBAQAogCQkJCTRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFw
LmggKi8sCiAJCQkJQkNGMTg2MzcxNjdEMDcxRTAwQTFBODVBIC8qIENhY2hlTW9kZWwuY3BwICov
LAogCQkJCUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8sCisJCQkJ
OUJDNTlENkMxRUZDQ0NCNjAwMUU4RDA5IC8qIENhbGxiYWNrSUQuaCAqLywKKwkJCQk5QkM1OUQ2
RDFFRkNEQzZEMDAxRThEMDkgLyogT3B0aW9uYWxDYWxsYmFja0lELmggKi8sCiAJCQkJMUEyRDk1
NkUxMjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMUEyRDk1NkQx
Mjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5oICovLAogCQkJCTUxNjRDMDk0MUIwNUI3
NTcwMDRGMTAyQSAvKiBDaGlsZFByb2Nlc3MubWVzc2FnZXMuaW4gKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKaW5k
ZXggNzU0M2EyOWQ4YmViOGNlYTM5MjY2MjE2YTYwMDhjNTg2MjM0ZWYzNS4uMTIxM2QzYTg3M2Jl
ZmM2MzMxYjVmMGQxNTI4MzA3MmIwOTIyZTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcApAQCAtNTQsNyArNTQs
NyBAQCBXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKENoaWxkUHJvY2VzcyogcHJv
Y2VzcykKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0bmFtZXM7CiAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQpAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENv
b2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29v
a2llcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llKFNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
ZGVsZXRlQ29va2llKGNvb2tpZSk7CkBAIC04NywxNiArODcsMTUgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBj
b29raWUsIHUKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNlc3Np
b25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHRpbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNp
bmNlKCpzdG9yYWdlU2Vzc2lvbiwgdGltZSk7CiAKLSAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZERl
bGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQpLCAw
KTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Omdl
dEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpA
QCAtMTA1LDcgKzEwNCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2llcyhT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRHZXRDb29raWVzKGNvb2tp
ZXMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29r
aWVzKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKFNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgVmVjdG9y
PENvb2tpZT4gY29va2llczsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCkBAIC0xMTQsMjIgKzEx
MywyMCBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIHVpbnQ2NF90CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldENvb2tpZXMoY29va2llcywgY2FsbGJh
Y2tJRCksIDApOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZShXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
c2V0Q29va2llKGNvb2tpZSk7CiAKLSAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENvb2tpZXMo
Y2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OnNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1
bWVudFVSTCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdl
U2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXMoY29va2llcywgdXJsLCBtYWlu
RG9jdW1lbnRVUkwpOwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxi
YWNrSUQpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6bm90aWZ5Q29va2llc0RpZENoYW5nZShTZXNzaW9uSUQgc2Vzc2lvbklEKQpA
QCAtMTUzLDE1ICsxNTAsMTUgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcyhTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBXZWJDb3JlOjpzdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygqc3RvcmFnZVNlc3Npb24pOwogfQogCi12b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3ks
IE9wdGlvbmFsQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHBsYXRmb3JtU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShwb2xpY3kpOwogCiAgICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQpLCAwKTsKKyAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koY2FsbGJhY2tJRC5jYWxsYmFja0lEKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpEaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBsYXRmb3Jt
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBjYWxsYmFja0lEKSwgMCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApp
bmRleCAxMmFlNTkxNzRkOWI4YmE0YjY5MGNiYWFhNjQwN2M3ZTZkMWE5ZWI1Li44NDRmN2EzYjQ2
ZGExMWZmOTYyYmZmYjE0ZTlkYzdkOWVkZmRiYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTI1LDkgKzI1LDEx
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
IkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlICJPcHRpb25h
bENhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8Y2hyb25vPgpAQCAtNTYsNyArNTgs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
IAotICAgIHZvaWQgc2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9s
aWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSwgT3B0aW9uYWxDYWxsYmFja0lEKTsKIAogI2lm
IFVTRShTT1VQKQogICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3Ry
aW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpOwpAQCAtNjgsMjAgKzcwLDIw
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2Vi
Q29yZTo6U2Vzc2lvbklELCBDYWxsYmFja0lEKTsKIAotICAgIHZvaWQgZGVsZXRlQ29va2llKFdl
YkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDb29raWUmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGVs
ZXRlQWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgQ2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHNldENv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBtYWluRG9jdW1lbnRVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZ2V0QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIHZvaWQgZ2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgc2V0Q29va2llKFdlYkNv
cmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q29va2llJiwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIG1haW5E
b2N1bWVudFVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRBbGxDb29raWVzKFdlYkNvcmU6
OlNlc3Npb25JRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHBs
YXRmb3JtU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
LSAgICB2b2lkIGdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KENhbGxiYWNrSUQpOwogICAgIEhU
VFBDb29raWVBY2NlcHRQb2xpY3kgcGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCk7
CiAKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhXZWJDb3JlOjpTZXNzaW9u
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAwYTU4NTU1ZWM2YTljYzQ4Zjlk
OGE5NDc1Y2E2MjQ4YzNlZDViMzQ1Li41ZmVlZmE3MTJjODJkZmZjMWQ0MjYxMjQ5ZDBkY2MyNzc3
ZjUxODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjQsMTkgKzI0LDE5IEBA
CiAgKi8KICAKICBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyIHsKLSAgICB2b2lkIEdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgdm9pZCBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2
b2lkIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiAKLSAgICB2b2lkIFNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2Vi
Q29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lk
IEdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLSAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0
ZUNvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29v
a2llIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAg
ICB2b2lkIFNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2Vi
Q29yZTo6Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
dm9pZCBTZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWlu
RG9jdW1lbnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0
QWxsQ29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgdm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1l
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAotICAgIHZvaWQgU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAg
dm9pZCBHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
dm9pZCBTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgV2ViS2l0OjpP
cHRpb25hbENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgCiAgICAgdm9pZCBT
dGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
ICAgICB2b2lkIFN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEwODdhOGEz
MTM0N2RlY2RkMmVhZDA5YzE5YTI3ODkwYzFkZmM1OGEuLjFjNTVjYWJlMzY3MDBiMTNlZmJiODVl
MzdkZmVjNTVmNDcxY2E4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xODEwLDE2ICsxODEwLDE3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZUljb25M
b2FkaW5nQ2xpZW50KCkKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lv
bkZvckljb24oY29uc3QgTGlua0ljb24mIGljb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkKLSAgICAgICAgd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGljb24sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIENhbGxiYWNrSUQ6OmZyb21J
bnRlZ2VyKGNhbGxiYWNrSUQpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CisgICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVn
ZXIoY2FsbGJhY2tJZGVudGlmaWVyKTsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1fZnJh
bWUtPnBhZ2UoKSB9KSB7CiAgICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNr
SWRlbnRpZmllciwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLT5kYXRh
KCkpLCBkYXRhLT5zaXplKCkgfSkpOworICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpIH0p
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSWRlbnRpZmllciwgeyBudWxs
cHRyLCAwIH0pKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7IG51bGxwdHIsIDAgfSkpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCmluZGV4IGJmNTNlNmM4YTI0OTMzOWZm
ZWVkZDg0MmYyMzAwYjZiOGVhZmQ0YmEuLjhlODMxY2ViODc4ODNkZDBmMzIyNDdkODU5MjA4YzZj
YTY5YWVhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2
b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgfQogfQogCi1i
b29sIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCitib29sIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0ICYm
IG1fbGF5ZXJUcmVlSG9zdC0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJRCk7CiB9CkBAIC00
NTcsNyArNDU3LDcgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpkZXZpY2VPclBhZ2VT
Y2FsZUZhY3RvckNoYW5nZWQoKQogfQogI2VuZGlmCiAKLXZvaWQgQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2Vk
LCBib29sLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2Vk
LCBib29sLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAgIGlmIChjaGFuZ2VkICYg
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlmIChtX3dlYlBhZ2UuaXNWaXNp
YmxlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAppbmRleCAyZjE5MTNlMDA2OGY3MzNhNzRjYWU0YzEx
NDc1MGNjZmY5MmQ5MDIxLi4zYjY0OTQ3MmQ0YWM3MGI3MjVkODgxNzEzYjQyYmJjNzUzMDNmZmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJvdGVjdGVkOgogICAg
IGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhv
c3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KICAg
ICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5
bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRB
c3luYyhDYWxsYmFja0lEKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0UGFpbnRpbmdFbmFibGVk
KGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpIG92ZXJyaWRlOwpAQCAtNjgsNyArNjgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBkZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBv
dmVycmlkZTsKICNlbmRpZgogCi0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSAqLywgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJy
aWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncywgYm9vbCAvKiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0
IFZlY3RvcjxDYWxsYmFja0lEPiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJyaWRlOwogICAgIHZv
aWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsYXllckhvc3REaWRGbHVz
aExheWVycygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzI5MGFmZjZiNmI4NmY2ZWY1MTZk
YzE5NzRiMGJmNmFiZTM2YzcxZC4uNzI5ZWViNDJlN2I3YzRjZjgwM2Y2OGEyMDMyMDg2Yzc5Zjdi
ZjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCkBAIC0xMjcsMTQgKzEyNywxNCBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKICAgICBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcygpOwogfQogCi1ib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAKICAgICAvLyBXZSB3YW50IGEgY2xlYW4gcmVw
YWludCwgbWVhbmluZyB0aGF0IGlmIHdlJ3JlIGN1cnJlbnRseSB3YWl0aW5nIGZvciB0aGUgcmVu
ZGVyZXIKICAgICAvLyB0byBmaW5pc2ggYW4gdXBkYXRlLCB3ZSdsbCBoYXZlIHRvIHNjaGVkdWxl
IGFub3RoZXIgZmx1c2ggd2hlbiBpdCdzIGRvbmUuCiAgICAgQVNTRVJUKCFtX2ZvcmNlUmVwYWlu
dEFzeW5jLmNhbGxiYWNrSUQpOwotICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCA9
IGNhbGxiYWNrSUQ7CisgICAgbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEID0gT3B0aW9u
YWxDYWxsYmFja0lEKGNhbGxiYWNrSUQpOwogICAgIG1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNG
cmVzaEZsdXNoID0gbV9zY2hlZHVsZWRXaGlsZVdhaXRpbmdGb3JSZW5kZXJlcjsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTE2Nyw4ICsxNjcsOCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6cmVuZGVyTmV4dEZyYW1lKCkKICAgICAgICAgLy8gYXJlbid0IG5lZWRlZC4gSWYgdGhl
eSBhcmUsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhpcyBmdW5jdGlvbgog
ICAgICAgICAvLyBpcyBjYWxsZWQgYWZ0ZXIgdGhlIG5leHQgdXBkYXRlLgogICAgICAgICBpZiAo
IW1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNGcmVzaEZsdXNoKSB7Ci0gICAgICAgICAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2sobV9mb3JjZVJl
cGFpbnRBc3luYy5jYWxsYmFja0lEKSk7Ci0gICAgICAgICAgICBtX2ZvcmNlUmVwYWludEFzeW5j
ID0geyB9OworICAgICAgICAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Vm9pZENhbGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRC5jYWxsYmFja0lE
KCkpKTsKKyAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMgPSB7IE9wdGlvbmFsQ2FsbGJh
Y2tJRCgpICwgZmFsc2UgfTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2ZvcmNlUmVw
YWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggZTJj
OWZhMmI4OGIwYzgzNzdhM2FkOTk4ODZkY2YwYzA4OTdiNWZjMC4uNzRiYjVkMzU5YmYyM2ZiY2U2
OTYzZDRmYmRkYzlhMDJjM2RlYWQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMYXllclRyZWVIb3N0
LmgiCisjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsNyArNTIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWlu
dCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJh
Y2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBv
dmVycmlkZTsKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
bmV3U2l6ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpIG92ZXJyaWRlOwpAQCAtODUsNyArODYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c1dhaXRpbmdGb3JSZW5kZXJlciB7IHRydWUgfTsKICAgICBib29sIG1fc2NoZWR1bGVkV2hpbGVX
YWl0aW5nRm9yUmVuZGVyZXIgeyBmYWxzZSB9OwogICAgIHN0cnVjdCB7Ci0gICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgeyAwIH07CisgICAgICAgIE9wdGlvbmFsQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEOwogICAgICAgICBib29sIG5lZWRzRnJlc2hGbHVzaCB7IGZhbHNlIH07CiAgICAgfSBtX2Zv
cmNlUmVwYWludEFzeW5jOwogICAgIFJ1bkxvb3A6OlRpbWVyPENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdD4gbV9sYXllckZsdXNoVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDkwODU3NTY1ZTUzNjZlNGEwODAxMmQ2NWM3MmQ2
OWY4ODU1MjQ2NmIuLmE3ZGEzODIwYzQ0ZDFhOTIyNmRjZTY3OTA2MDg0NjYwZWE0OTg1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5o
IgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRl
eHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKQEAgLTc4LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgogICAgIHZp
cnR1YWwgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGZvcmNlUmVw
YWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBj
b25zdCB7IHJldHVybiAwOyB9CkBAIC0xMTYsNyArMTE3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6
OkZ1bmN0aW9uPHZvaWQgKCk+JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRV
cGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFj
a0lEcyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlICovLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVy
biB0cnVlOyB9CkBAIC0xNzQsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3Jp
Z2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBh
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQo
V2ViS2l0OjpDYWxsYmFja0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShY
MTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bgppbmRleCBiMDc2ZjM0YzFhYzY4YzM5ZDBkODAwZjNlYWFjNDA2NWYwNTcwZWVlLi42ZjU4ZmU4
ZTJhMWY1YTQ5MTcwNzc5NzU0YTViMTdiYWZiMmU4NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBA
IC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIHsKICAgICBBY2NlbGVyYXRl
ZEFuaW1hdGlvbkRpZFN0YXJ0KHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXksIGRvdWJsZSBz
dGFydFRpbWUpCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJ
RCwgU3RyaW5nIGtleSkKICAgICAKLSAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDJmNTcxMTExMDNjN2VlZjhjYmJkZmQwYjlmODcyNThjZTZi
ODhhZGMuLmUyYzA3MzMzOTQyMzliMzg0YzA2NWM4NzlkZDFhODViYjQ4YWFkNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVY
VFVSRV9NQVBQRVIpCiAKKyNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiTGF5ZXJU
cmVlQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNw
bGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH07CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgeyB9
OwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG5ld1NpemUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91
bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWMzMGQ5YmExMDY0M2QwOGNlMzIyOGU2N2Yy
Nzk4YWNlMWVkMTUwZi4uMmNiYTNmY2QwMDliYTVlM2RkY2ZkZjJiZDYzZjQ1Yzg2ZmM0ZDE3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
NjAwLDcgKzYwMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3Jr
SW50ZXJmYWNlcygpCiB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fYWN0aXZpdHlTdGF0
ZSAhPSBwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUpCi0gICAgICAgIHNldEFjdGl2aXR5U3RhdGUo
cGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlLCBmYWxzZSwgVmVjdG9yPHVpbnQ2NF90PigpKTsKKyAg
ICAgICAgc2V0QWN0aXZpdHlTdGF0ZShwYXJhbWV0ZXJzLmFjdGl2aXR5U3RhdGUsIGZhbHNlLCBW
ZWN0b3I8Q2FsbGJhY2tJRD4oKSk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBwYXJh
bWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHNldExheWVySG9zdGluZ01vZGUocGFy
YW1ldGVycy5sYXllckhvc3RpbmdNb2RlKTsKIH0KQEAgLTE5MjEsNyArMTkyMSw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogCiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAotdm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50
UmVjdCBzbmFwc2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dGFrZVNuYXBzaG90KEludFJlY3Qg
c25hcHNob3RSZWN0LCBJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25z
ID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihvcHRpb25zKTsKICAgICBzbmFwc2hvdE9w
dGlvbnMgfD0gU25hcHNob3RPcHRpb25zU2hhcmVhYmxlOwpAQCAtMjQyMiw3ICsyNDIyLDcgQEAg
dm9pZCBXZWJQYWdlOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2
ZW50KQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0
YXRpY19jYXN0PHVpbnQzMl90PihrZXlib2FyZEV2ZW50LnR5cGUoKSksIGhhbmRsZWQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKGNv
bnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBi
b29sIGlzRW5hYmxlZCA9IGZhbHNlOwogICAgIGludDMyX3Qgc3RhdGUgPSAwOwpAQCAtMjYyNSw3
ICsyNjI1LDcgQEAgdm9pZCBXZWJQYWdlOjp2aWV3V2lsbEVuZExpdmVSZXNpemUoKQogICAgICAg
ICB2aWV3LT53aWxsRW5kTGl2ZVJlc2l6ZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldEluaXRp
YWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIGV2ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlk
LCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0yNjkwLDcgKzI2OTAsNyBA
QCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIH0KIH0KIAotdm9pZCBX
ZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3Rh
dGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBjYWxsYmFja0lEcykKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShBY3Rpdml0
eVN0YXRlOjpGbGFncyBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykKIHsKICAgICBBY3Rp
dml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0
ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAtMjg0MSw3ICsyODQx
LDcgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRVSU1vZGUoKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQg
PyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQpIHwgKG1fdGFiVG9M
aW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgOiAwKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RF
OiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2Jq
ZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBl
eGVjdXRpb24uCkBAIC0yODYyLDE0ICsyODYyLDE0IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lE
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UsIGhhZEV4Y2VwdGlvbiwgZGV0YWlscywgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IG1fbWFpbkZyYW1lLT5jb250ZW50c0FzU3RyaW5n
KCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1
bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKLXZvaWQgV2Vi
UGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBhdXRvIGJ1ZmZlciA9IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEobV9wYWdl
LmdldCgpKTsKIApAQCAtMjg4MCw3ICsyODgwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50
c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyA9IHJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKQEAgLTI4
OTYsNyArMjg5Niw3IEBAIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBh
Z2UpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMjkxMiw3ICsyOTEy
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJh
Y2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNl
bGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQ
YWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIFdlYkZyYW1lKiBmb2N1c2VkT3JNYWluRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZShtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpKTsK
ICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gZm9jdXNlZE9yTWFpbkZyYW1lLT5zZWxlY3Rpb25B
c1N0cmluZygpOwpAQCAtMjkyMSw3ICsyOTIxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJ
RCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcg
cmVzdWx0U3RyaW5nOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkKQEAgLTI5MzAsNyArMjkzMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKHJl
c3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0yOTYyLDcgKzI5NjIsNyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHJlc291cgogICAgIHJldHVybiAmc3VicmVzb3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0yOTgxLDcgKzI5ODEs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGF0YUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKQEAgLTMwMDQsNyArMzAwNCw3IEBAIHZv
aWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCkKICAgICBtX2RyYXdpbmdB
cmVhLT5mb3JjZVJlcGFpbnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQodWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50QXN5bmMo
Y2FsbGJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzODMsNyArNDM4Myw3IEBAIHZvaWQg
V2ViUGFnZTo6ZW5kUHJpbnRpbmcoKQogICAgIG1fcHJpbnRDb250ZXh0ID0gbnVsbHB0cjsKIH0K
IAotdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQg
V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBWZWN0
b3I8SW50UmVjdD4gcmVzdWx0UGFnZVJlY3RzOwogICAgIGRvdWJsZSByZXN1bHRUb3RhbFNjYWxl
RmFjdG9yRm9yUHJpbnRpbmcgPSAxOwpAQCAtNDQxMiw3ICs0NDEyLDcgQEAgdm9pZCBXZWJQYWdl
Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiBwcmkKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+
Y29yZUZyYW1lKCkgOiAwOwpAQCAtNDQ2MSw3ICs0NDYxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IGNvbnMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkltYWdlQ2FsbGJhY2soaGFu
ZGxlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJh
d1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3
UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIHBkZlBhZ2VE
YXRhKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJ
bXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1CiB9CiAK
ICNlbGlmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmco
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgYmVnaW5QcmludGluZyhmcmFtZUlELCBwcmludEluZm8pOwogICAgIGlmIChtX3By
aW50Q29udGV4dCAmJiBtX3ByaW50T3BlcmF0aW9uKSB7CkBAIC00NTMwLDcgKzQ1MzAsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hQ
cmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlByaW50RmluaXNoZWRDYWxsYmFj
ayhlcnJvciwgY2FsbGJhY2tJRCkpOwogICAgIG1fcHJpbnRPcGVyYXRpb24gPSBudWxscHRyOwpA
QCAtNDgzNyw3ICs0ODM3LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW4KICAgICAgICAgZnJh
bWUuZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKHRleHQpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
Z2V0TWFya2VkUmFuZ2VBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
IApAQCAtNDg1Miw3ICs0ODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
ZGl0aW5nUmFuZ2VDYWxsYmFjayhFZGl0aW5nUmFuZ2UobG9jYXRpb24sIGxlbmd0aCksIGNhbGxi
YWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCkBAIC00ODY3LDcgKzQ4NjcsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdGluZ1JhbmdlQ2FsbGJhY2soRWRp
dGluZ1JhbmdlKGxvY2F0aW9uLCBsZW5ndGgpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIHVpbnQ2NF90IGluZGV4ID0gbm90Rm91bmQ7CiAKQEAgLTQ4
ODUsNyArNDg4NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5j
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKGluZGV4LCBjYWxsYmFja0lEKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBF
ZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2Um
IGVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
SW50UmVjdCByZXN1bHQoSW50UG9pbnQoMCwgMCksIEludFNpemUoMCwgMCkpOwpAQCAtNTY5Miw3
ICs1NjkyLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJE
b2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEZyYW0KICAgICB9CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OmdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYg
KCFjb21tb25WTSgpLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikgewogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxiYWNrKFN0cmluZygpLCBjYWxsYmFja0lEKSk7
CkBAIC01NzA0LDcgKzU3MDQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZSh1
aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3Ry
aW5nQ2FsbGJhY2socmVzdWx0LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0
U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNp
ZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgU2FtcGxpbmdQcm9maWxlciogc2FtcGxp
bmdQcm9maWxlciA9IGNvbW1vblZNKCkuc2FtcGxpbmdQcm9maWxlcigpOwpAQCAtNTg4NywxMCAr
NTg4NywxMCBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAjZW5kaWYK
IAotdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24s
IHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNr
SUQgbG9hZElkZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQogewog
ICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJ
RCk7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRl
Y2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJhY2tJRC50b0ludGVn
ZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1
c2VJY29uTG9hZGluZ0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGNhMTI5ZmEwZDhiZDlmNjUzNDIyMjE0ZGZlNWMxZTA2OTE2Nzg2MGUu
LmJmNGJjZWFlMmU4MWNhN2VmZTAyNjE5YWUzODM2ZjAyOWNkOTFkMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1
ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIgpAQCAtMzksNiArNDAsNyBA
QAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiT3B0aW9uYWxDYWxs
YmFja0lELmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNTQyLDUwICs1NDQsNTAgQEAgcHVi
bGljOgogICAgIHZvaWQgaW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAKICAgICB2b2lkIGJsdXJBc3Npc3RlZE5vZGUoKTsKLSAg
ICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3Rh
dGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGhhbmRsZVBv
c2l0aW9uKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQz
Ml90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24o
dWludDMyX3QgZ3JhbnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0V29yZEJhY2t3YXJkKCk7Ci0g
ICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBz
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBz
ZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVu
dFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0KLSAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0
UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgbW92ZVNlbGVjdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBk
aXJlY3Rpb24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQz
Ml90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxi
YWNrSUQpOworCisgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDYWxsYmFja0lEKTsK
ICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25z
dCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBT
dHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7Ci0gICAgdm9pZCByZXF1ZXN0
QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3Qg
U3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0
cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGFwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzeW5jQXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBi
b29sJiBjb3JyZWN0aW9uQXBwbGllZCk7Ci0gICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0
aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldEF1dG9jb3JyZWN0aW9uQ29udGV4
dChTdHJpbmcmIGJlZm9yZVRleHQsIFN0cmluZyYgbWFya2VkVGV4dCwgU3RyaW5nJiBzZWxlY3Rl
ZFRleHQsIFN0cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBs
ZW5ndGgpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJik7
CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50
QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgc3RvcEludGVy
YWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlv
bik7Ci0gICAgdm9pZCBmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNG
b3J3YXJkLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUp
OwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwg
Ym9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3RG
b3JFbGVtZW50QXRJbnRlcmFjdGlvbkxvY2F0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rp
b25BcHBlYXJhbmNlKCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50NjRfdCByZXF1ZXN0SUQpOwotICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdp
dGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwotICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0UmVjdHNGb3JH
cmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIENhbGxiYWNr
SUQpOworICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qs
IGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQogICAgIHZvaWQgZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhjb25zdCBWZWN0b3I8
V2ViVG91Y2hFdmVudCwgMT4mIHF1ZXVlKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb250ZW50U2l6
ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgZXhlY3V0ZUVkaXRD
b21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrSUQpOwogCiAgICAgU2Vjb25kcyBldmVudFRocm90dGxpbmdEZWxheSgpIGNvbnN0Owog
CkBAIC02NzMsMTcgKzY3NSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kQ29tcGxleFRleHRJ
bnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHRleHRJbnB1dCk7CiAKICAgICB2b2lkIGluc2VydFRleHRBc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlLCB1aW50MzJfdCBlZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG8gPSAodWludDMyX3QpRWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvOjpFZGl0YWJsZVJvb3Qs
IGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBnZXRNYXJr
ZWRSYW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgY2hhcmFjdGVySW5kZXhG
b3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRp
bmdSYW5nZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VB
c3luYyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNl
dENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2Um
IHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpOwog
ICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9v
bCByZWdpc3RlclVuZG9Hcm91cCA9IGZhbHNlKTsKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29u
c3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb24o
Q2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFdURjo6U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgYm9vbCYgcmVzdWx0KTsKQEAg
LTc0NiwxOCArNzQ4LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5QcmludGluZyh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mKTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7
Ci0gICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYsIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3Rz
LCBkb3VibGUmIHRvdGFsU2NhbGVGYWN0b3IpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZv
aWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291
bnQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBsKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSk7CiAjaWYgUExBVEZPUk0o
SU9TKQotICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCwgUmVmPE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVs
YXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIENhbGxiYWNrSUQsIFJlZjxN
ZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRl
bGF5ZWRSZXBseT4mJik7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIGRy
YXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRGaW5pc2hQcmludE9wZXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
YWRkUmVzb3VyY2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwpAQCAtOTE1LDggKzkxNyw4IEBAIHB1YmxpYzoKICAgICBSZWY8V2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkZyYW1lJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKICAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkRvY3VtZW50TG9h
ZGVyJiwgV2ViQ29yZTo6RnJhbWUmKTsKIAotICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1
aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEJ5dGVjb2RlUHJvZmlsZShDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoQ2FsbGJhY2tJRCk7CiAg
ICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikKICAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0
IFN0cmluZyYgbnVtYmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtOTY5LDcgKzk3
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOwogI2VuZGlmCiAK
LSAgICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0
X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNrSUQpOworICAgIHZvaWQgZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVu
dGlmaWVyLCBPcHRpb25hbENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdD
bGllbnQoYm9vbCk7CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTEwNTksMTEg
KzEwNjEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdvQmFjayh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQ2NF90KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2
aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KTsKLSAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxTdGF0ZSA9IGZhbHNlKTsKICAgICB2
b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHNldEFjdGl2aXR5U3RhdGUoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcyk7Ci0gICAgdm9pZCB2YWxp
ZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiwgdWludDY0X3QpOworICAgIHZvaWQgc2V0QWN0aXZp
dHlTdGF0ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpOwor
ICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7CiAKQEAgLTExMDQsMjAgKzExMDYsMjAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7CiAgICAgdm9pZCB2aWV3
V2lsbEVuZExpdmVSZXNpemUoKTsKIAotICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJ
RCk7CiAjaWYgRU5BQkxFKE1IVE1MKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSNlbmRpZgotICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiByZXNvdXJjZVVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZm9yY2VS
ZXBhaW50KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNv
cmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVp
bnQzMl90IG9wdGlvbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29udGVu
dHNBc01IVE1MRGF0YShDYWxsYmFja0lEKTsKKyNlbmRpZgorICAgIHZvaWQgZ2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZVVSTCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbk9yQ29udGVu
dHNBc1N0cmluZyhDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZm9yY2VSZXBhaW50KENh
bGxiYWNrSUQpOworICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENh
bGxiYWNrSUQpOwogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJik7CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZjhhMTk3NWQ1NDU0MDEy
OWE0YTkyZmI3ZmVhN2FkOGI4ZTgxNTY4NC4uYWM5M2YyYjEzMDk1MGZhNWNjZDQwN2Q5YjE0MDRj
OWQzMDMzNTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxLDggKzIxLDggQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7Ci0gICAgU2V0SW5pdGlhbEZv
Y3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJL
ZXlib2FyZEV2ZW50IGV2ZW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNldEFjdGl2aXR5
U3RhdGUodW5zaWduZWQgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUsIFZlY3Rvcjx1aW50NjRfdD4gY2FsbGJhY2tJRHMpCisgICAgU2V0SW5pdGlhbEZvY3Vz
KGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgV2ViS2l0OjpXZWJLZXli
b2FyZEV2ZW50IGV2ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZXRB
Y3Rpdml0eVN0YXRlKHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlLCBWZWN0b3I8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEcykKICAg
ICBTZXRMYXllckhvc3RpbmdNb2RlKGVudW0gV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlIGxheWVy
SG9zdGluZ01vZGUpCiAKICAgICBTZXREcmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91
bmQpCkBAIC01NCwzNCArNTQsMzQgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihXZWJDb3JlOjpGbG9h
dFBvaW50IHBvaW50KQogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBCbHVyQXNzaXN0ZWROb2RlKCkKLSAgICBTZWxl
Y3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90
IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgU2Vs
ZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAgICAgVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2goV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBoYW5kbGVQb3NpdGlvbikK
LSAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3Jl
OjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3Jl
OjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5
cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgRXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgIFNlbGVjdFdv
cmRCYWNrd2FyZCgpCi0gICAgTW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCB1
aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50
KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxl
Y3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIE1vdmVTZWxl
Y3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMy
X3QgZGlyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFBvc2l0aW9uQXRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0
aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJlcXVlc3REaWN0YXRpb25Db250ZXh0
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgTW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qg
b2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RUZXh0V2l0
aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50
MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJl
Y3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5k
YXJ5KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisgICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgUmVwbGFjZURpY3RhdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5l
d1RleHQpCiAgICAgUmVwbGFjZVNlbGVjdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5l
d1RleHQpCi0gICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJpbmcgdGV4dEZvckF1dG9j
b3JyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEFwcGx5QXV0b2NvcnJlY3Rpb24o
U3RyaW5nIGNvcnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShTdHJpbmcgdGV4dEZvckF1dG9jb3Jy
ZWN0aW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBcHBseUF1dG9jb3Jy
ZWN0aW9uKFN0cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcg
Y29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25B
cHBsaWVkKQotICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJh
Y2tJRCkKKyAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIEdldEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpIC0+IChTdHJpbmcg
YmVmb3JlQ29udGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBzZWxlY3RlZFRleHQsIFN0
cmluZyBhZnRlckNvbnRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIAog
ICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3QgcmVxdWVzdCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9y
bWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVl
c3QpCiAgICAgU3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCkKICAgICBTdG9wSW50ZXJhY3Rpb24oKQogICAgIFBlcmZvcm1BY3Rpb25P
bkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQotICAgIEZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29s
IGlzRm9yd2FyZCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBGb2N1c05leHRBc3Npc3RlZE5v
ZGUoYm9vbCBpc0ZvcndhcmQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNl
dEFzc2lzdGVkTm9kZVZhbHVlKFN0cmluZyB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1
ZUFzTnVtYmVyKGRvdWJsZSB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4
KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pCkBAIC05MSwxMyAr
OTEsMTMgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiAgICAg
QXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogICAgIENvbnRlbnRTaXplQ2F0ZWdvcnlEaWRD
aGFuZ2UoU3RyaW5nIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCi0gICAgRXhlY3V0ZUVkaXRDb21tYW5k
V2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNl
bGVjdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBFeGVjdXRlRWRpdENvbW1h
bmRXaXRoQ2FsbGJhY2soU3RyaW5nIG5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEdldFNlbGVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgU2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQog
ICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVp
bnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVz
ZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNl
dCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNl
dCwgU3RyaW5nIHRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEdldFJlY3RzRm9yR3Jh
bnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90
IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIEdldFJlY3RzQXRT
ZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgU2V0Q29udHJvbGxlZEJ5
QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCkBAIC0xNTYsMTkgKzE1NiwxOSBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1
c2VkRWRpdGFibGVFbGVtZW50KCkKIAogICAgICMgQ2FsbGJhY2tzLgotICAgIEdldENvbnRlbnRz
QXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRDb250ZW50c0FzU3RyaW5nKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIEVOQUJMRShNSFRNTCkKLSAgICBHZXRD
b250ZW50c0FzTUhUTUxEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0jZW5kaWYKLSAgICBHZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgcmVzb3VyY2VVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRXZWJB
cmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAg
IFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldENvbnRl
bnRzQXNNSFRNTERhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKKyAg
ICBHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIHJlc291cmNlVVJMLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmco
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTb3VyY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBHZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nIHNjcmlw
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRm9yY2VSZXBhaW50KFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBE
aWN0aW9uYXJ5IHN1cHBvcnQuCkBAIC0xOTIsNyArMTkyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVHJ5Q2xvc2UoKQogCiAgICAgU2V0RWRpdGFibGUoYm9v
bCBlZGl0YWJsZSkKLSAgICBWYWxpZGF0ZUNvbW1hbmQoU3RyaW5nIG5hbWUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5kKFN0cmluZyBuYW1lLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBFeGVjdXRlRWRpdENvbW1hbmQoU3RyaW5nIG5hbWUsIFN0
cmluZyBhcmd1bWVudCkKIAogICAgIERpZFJlbW92ZUVkaXRDb21tYW5kKHVpbnQ2NF90IGNvbW1h
bmRJRCkKQEAgLTMyMiwxNiArMzIyLDE2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgICMgUHJpbnRpbmcuCiAgICAgQmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKQogICAgIEVuZFByaW50aW5n
KCkKLSAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlBy
aW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIERyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdl
YkNvcmU6OkludFNpemUgaW1hZ2VTaXplLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIERyYXdQ
YWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmlu
dEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKKyAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRT
aXplIGltYWdlU2l6ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgRHJhd1Bh
Z2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50
SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZv
IHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkgLT4gKHVpbnQzMl90IHBhZ2VDb3VudCkg
RGVsYXllZAorICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50KSBEZWxheWVkCiAjZW5k
aWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBEcmF3UGFnZXNGb3JQcmludGluZyh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIERyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogI2VuZGlmCiAKICAgICAjIE1lZGlhCkBAIC0zODMsMTcgKzM4MywxNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBBY2NlcHRzRmlyc3RN
b3VzZShpbnQgZXZlbnROdW1iZXIsIFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4gKGJv
b2wgcmVzdWx0KQogCiAgICAgSW5zZXJ0VGV4dEFzeW5jKFN0cmluZyB0ZXh0LCBzdHJ1Y3QgV2Vi
S2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91
cCwgdWludDMyX3QgZWRpdGluZ1JhbmdlSXNSZWxhdGl2ZVRvLCBib29sIHN1cHByZXNzU2VsZWN0
aW9uVXBkYXRlKQotICAgIEdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkK
LSAgICBHZXRTZWxlY3RlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBDaGFy
YWN0ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3RydWN0
IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBH
ZXRNYXJrZWRSYW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdl
dFNlbGVjdGVkUmFuZ2VBc3luYyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBD
aGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpOwogICAgIFNldENvbXBvc2l0aW9uQXN5bmMoU3RyaW5nIHRleHQsIFZl
Y3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgc3RydWN0IFdl
YktpdDo6RWRpdGluZ1JhbmdlIHNlbGVjdGlvblJhbmdlLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5n
UmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSkKICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgSW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoU3Ry
aW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBW
ZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZl
cywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKLSAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIEZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3Qg
V2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KTsKKyAgICBGb250QXRTZWxlY3Rpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwog
I2VuZGlmCiAKICAgICBTZXRNaW5pbXVtTGF5b3V0U2l6ZShXZWJDb3JlOjpJbnRTaXplIG1pbmlt
dW1MYXlvdXRTaXplKQpAQCAtNDEyLDExICs0MTIsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBp
bm5pbmcpCiAgICAgU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IHNjcm9sbGJhclN0eWxlKQogCi0gICAgR2V0Qnl0ZWNvZGVQcm9maWxlKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCisgICAgR2V0Qnl0ZWNvZGVQcm9maWxlKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogCi0gICAgR2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIEdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgCi0gICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCisgICAgVGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25h
cHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQ
ZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2lu
dCBsb2NhdGlvbikKICAgICBJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQpAQCAtNDYyLDcgKzQ2
Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0VXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQorICAgIERpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBXZWJL
aXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQogICAgIFNldFVzZUljb25Mb2Fk
aW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggYzhjOTNiMmI5MDU4N2RjMDY5NmZj
NWRhNmJhYzQ0MDIzYTM3NTFjMS4uNjEyYzFhOTJjZTUwZWMzZGQwOTNhN2U4OGRhN2JjNmMzYzJj
ODEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRD
b250ZXh0KiBwcmludENvbnRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlCisgICAg
dm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3ByaW50Q29udGV4
dCA9IHByaW50Q29udGV4dDsKICAgICAgICAgbV9jYWxsYmFja0lEID0gY2FsbGJhY2tJRDsKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc3RhcnRQ
cmludChXZWJDb3JlOjpQcmludENvbnRleHQqIHByaW50Q29udGV4dCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRDb250ZXh0
KiBwcmludENvbnRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIG1fcHJpbnRDb250ZXh0ID0gcHJpbnRDb250ZXh0OwogICAgICAgICBtX2NhbGxiYWNr
SUQgPSBjYWxsYmFja0lEOwpAQCAtMzk4LDcgKzM5OCw2IEBAIFdlYlByaW50T3BlcmF0aW9uR3Rr
OjpXZWJQcmludE9wZXJhdGlvbkd0ayhXZWJQYWdlKiBwYWdlLCBjb25zdCBQcmludEluZm8mIHBy
aW50CiAgICAgLCBtX3BhZ2VTZXR1cChwcmludEluZm8ucGFnZVNldHVwLmdldCgpKQogICAgICwg
bV9wcmludE1vZGUocHJpbnRJbmZvLnByaW50TW9kZSkKICAgICAsIG1fcHJpbnRDb250ZXh0KDAp
Ci0gICAgLCBtX2NhbGxiYWNrSUQoMCkKICAgICAsIG1feERQSSgxKQogICAgICwgbV95RFBJKDEp
CiAgICAgLCBtX3ByaW50UGFnZXNJZGxlSWQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaAppbmRl
eCA3NDNjYzJjZTUyNTg5N2QxOTA3YjgyZWJmYjI0MTIzZDgyMjMwNDllLi5iMjYyZGYzNGM4MDVm
YWFjZGYyMDA3ODFkYjdhYWZlMDQyZTdmNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYlByaW50T3BlcmF0aW9uR3RrX2gKICNkZWZpbmUg
V2ViUHJpbnRPcGVyYXRpb25HdGtfaAogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1
ZGUgIlByaW50SW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNzUsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJpbnQo
V2ViQ29yZTo6UHJpbnRDb250ZXh0KiwgdWludDY0X3QgY2FsbGJhY2tJRCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCosIENhbGxiYWNrSUQp
ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFdlYlByaW50T3BlcmF0aW9uR3RrKFdlYlBhZ2UqLCBj
b25zdCBQcmludEluZm8mKTsKQEAgLTEwMyw3ICsxMDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgR1Jl
ZlB0cjxHdGtQYWdlU2V0dXA+IG1fcGFnZVNldHVwOwogICAgIFByaW50SW5mbzo6UHJpbnRNb2Rl
IG1fcHJpbnRNb2RlOwogICAgIFdlYkNvcmU6OlByaW50Q29udGV4dCogbV9wcmludENvbnRleHQ7
Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOworICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lE
OwogICAgIFJlZlB0cjxjYWlyb190PiBtX2NhaXJvQ29udGV4dDsKICAgICBkb3VibGUgbV94RFBJ
OwogICAgIGRvdWJsZSBtX3lEUEk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzc1OTA2ZWVlOWE4YWRlNGY0NTkwYzVi
MWI2ZmIwZmQ1ZjBjOTJiOC4uZTc2ZjliNzFmZGFlOWIyZDQwZjNkMjFmY2JmOGYzMDFhMGU3OTAz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1
bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5p
c1JhbmdlKCkpIHsKQEAgLTEwNDYsNyArMTA0Niw3IEBAIFJlZlB0cjxSYW5nZT4gV2ViUGFnZTo6
cmFuZ2VGb3JCbG9ja0F0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIHJldHVybiBy
YW5nZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2lu
dCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWlu
dDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25z
dCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJl
VHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0
ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChm
cmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTE3MjIsNyAr
MTcyMiw3IEBAIGJvb2wgV2ViUGFnZTo6c2hvdWxkU3dpdGNoVG9CbG9ja01vZGVGb3JIYW5kbGUo
Y29uc3QgSW50UG9pbnQmIGhhbmRsZVBvaW50LCBTZWxlCiAgICAgfQogfQogCi12b2lkIFdlYlBh
Z2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBv
aW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBJbnRQb2ludCBwb2ludEluRG9jdW1lbnQgPSBmcmFt
ZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhwb2ludCk7CkBAIC0xNzgzLDcgKzE3ODMsNyBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50
JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcwogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxl
Y3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoVHdv
VG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24g
ZnJvbVBvc2l0aW9uID0gZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWUudmlldygp
LT5yb290Vmlld1RvQ29udGVudHMoZnJvbSkpOwpAQCAtMTgyNCw3ICsxODI0LDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZWxlY3RXb3JkQmFja3dhcmQoKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHN0YXJ0UG9z
aXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgdHJ1ZSwgVXNlclRy
aWdnZXJlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMy
X3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0
aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAg
ICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOwogICAgIApAQCAtMTg1MCw3ICsxODUwLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0
aW8KICAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoc3RhcnRJbmRleCArIG9mZnNl
dCwgcm9vdC5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0
eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFy
aXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZz
ZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkBAIC0xODgz
LDcgKzE4ODMsNyBAQCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZU5lYXJQb3NpdGlvbk1hdGNo
ZXNUZXh0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpbwogICAgIHJldHVybiBmaW5kQ2xv
c2VzdFBsYWluVGV4dCgqc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwgMCwgdGFyZ2V0
T2Zmc2V0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0
aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGlu
dDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIHVpbnQzMl90IGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CkBAIC0x
OTI4LDcgKzE5MjgsNyBAQCBWaXNpYmxlUG9zaXRpb24gV2ViUGFnZTo6dmlzaWJsZVBvc2l0aW9u
SW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IEZyYW1lJiBmcmFtZQogICAgIHJldHVybiBmcmFt
ZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdHJhaW5lZFBvaW50KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQs
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTE5MzgsNyArMTkzOCw3IEBAIHZv
aWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludCwgYm9vbCBpc0ludGVyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpW
b2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9z
aXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0
aEFzc2lzdGVkTm9kZSk7CkBAIC0xOTUxLDcgKzE5NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIApAQCAtMTk5NSw3ICsxOTk1LDcg
QEAgc3RhdGljIGlubGluZSBib29sIHJlY3RJc1Rvb0JpZ0ZvclNlbGVjdGlvbihjb25zdCBJbnRS
ZWN0JiBibG9ja1JlY3QsIGNvbnN0IEZyYW0KICAgICByZXR1cm4gYmxvY2tSZWN0LmhlaWdodCgp
ID4gZnJhbWUudmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSAqIGZhY3Rv
cjsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSByYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChmcmFt
ZSwgcG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSk7CkBA
IC0yMDIyLDEzICsyMDIyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9u
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGly
ZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IG1fc2VsZWN0aW9uQW5jaG9yID0gKHN0YXRpY19jYXN0PFNlbGVjdGlvbkRpcmVjdGlvbj4oZGly
ZWN0aW9uKSA9PSBEaXJlY3Rpb25MZWZ0KSA/IFN0YXJ0IDogRW5kOwogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhtX3NlbGVjdGlvbkFuY2hvciA9PSBT
dGFydCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
dWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2lu
dCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMjA1Nyw3ICsyMDU3LDcgQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlVuc2lnbmVkQ2FsbGJhY2soc2VsZWN0aW9uU3RhcnQgPT0gbV9pbml0aWFsU2VsZWN0aW9uLT5z
dGFydFBvc2l0aW9uKCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9p
bnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIxMDgsNyArMjEwOCw3IEBA
IHZvaWQgV2ViUGFnZTo6Y29udmVydFNlbGVjdGlvblJlY3RzVG9Sb290VmlldyhGcmFtZVZpZXcq
IHZpZXcsIFZlY3RvcjxTZWxlY3Rpb25SCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVl
c3REaWN0YXRpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJl
cXVlc3REaWN0YXRpb25Db250ZXh0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFt
ZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuc3RhcnQoKTsKQEAgLTIxOTAsNyArMjE5MCw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYg
bmV3VGV4dCkKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGZh
bHNlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0
IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZv
ckF1dG9jb3JyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewpAQCAtMjIzOCwxNCArMjIzOCwx
NCBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5n
JiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6QXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2socmVjdHNGb3JUZXh0LCBmb250TmFtZS5n
ZXQoKSwgZm9udFNpemUsIGZvbnRUcmFpdHMsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGJvb2wgY29y
cmVjdGlvbkFwcGxpZWQ7CiAgICAgc3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29ycmVjdGlvbiwg
b3JpZ2luYWxUZXh0LCBjb3JyZWN0aW9uQXBwbGllZCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhjb3JyZWN0aW9uQXBwbGllZCA/IGNvcnJlY3Rpb24g
OiBTdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmV4ZWN1dGVFZGl0
Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2so
Y29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IGV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgU3RyaW5nKCkpOwogICAgIGlmIChjb21t
YW5kTmFtZSA9PSAidG9nZ2xlQm9sZCIgfHwgY29tbWFuZE5hbWUgPT0gInRvZ2dsZUl0YWxpYyIg
fHwgY29tbWFuZE5hbWUgPT0gInRvZ2dsZVVuZGVybGluZSIpCkBAIC0yMzkyLDcgKzIzOTIsNyBA
QCBzdGF0aWMgdm9pZCBjb21wdXRlQXV0b2NvcnJlY3Rpb25Db250ZXh0KEZyYW1lJiBmcmFtZSwg
U3RyaW5nJiBjb250ZXh0QmVmb3JlLCBTdAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1
ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIFN0cmluZyBjb250ZXh0QmVmb3JlOwogICAgIFN0cmluZyBjb250ZXh0QWZ0ZXI7CkBA
IC0yNjc2LDcgKzI2NzYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQXNzaXN0YWJsZUVsZW1l
bnQoTm9kZSogc3RhcnROb2RlLCBQYWdlJiBwYWdlLCBib29sIGlzRm9ydwogICAgIHJldHVybiBu
ZXh0QXNzaXN0YWJsZUVsZW1lbnQoc3RhcnROb2RlLCBwYWdlLCBpc0ZvcndhcmQpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wg
aXNGb3J3YXJkLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRWxlbWVudCogbmV4dEVs
ZW1lbnQgPSBuZXh0QXNzaXN0YWJsZUVsZW1lbnQobV9hc3Npc3RlZE5vZGUuZ2V0KCksICptX3Bh
Z2UsIGlzRm9yd2FyZCk7CiAgICAgbV91c2VySXNJbnRlcmFjdGluZyA9IHRydWU7CkBAIC0zMzAw
LDcgKzMzMDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFdmVu
dHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBxdQogfQogI2VuZGlmCiAKLXZvaWQg
V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6
OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21w
dXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQog
ewogICAgIGlmIChwcmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UpIHsKICAgICAgICAgcmVwbHkt
PnNlbmQoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggMDIwZWVj
MmY4NzA3MGZkN2I3OWE3OWU5YzAxZGVjMTJjNzQ0OWI3ZS4uNDI3NWFlMzExNWE2ZDI1MTg0YmMy
YmRkZDgyZDA0YTU1YTk5OTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNhbGxiYWNr
SUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
QVJlbW90ZS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCkBAIC02
OCw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJG
bHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdy
YXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBjYWxs
YmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxs
YmFja0lEKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXlJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRv
cihXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IqKTsKQEAgLTgyLDcgKzgzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBh
aW50QXN5bmModWludDY0X3QpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBm
b3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4g
dmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JvbGxlZFZpZXdF
eHBvc2VkUmVjdDsgfQpAQCAtMTAzLDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1h
aW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdl
ZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFj
a0lEPiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBhZGp1c3RMYXllckZsdXNo
VGhyb3R0bGluZyhXZWJDb3JlOjpMYXllckZsdXNoVGhyb3R0bGVTdGF0ZTo6RmxhZ3MpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCAyZDljOWE3
ODZiYzVmZmU4ZTA0YTE1NDkzMjU3MjgzNTNiZGM2ZmM1Li45YzJlNzNhMDZhZjkyMTE0YWI0MTNm
YzNkM2M0MDc2OTA1NzE1ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpC
YWNraW5nU3RvcmVGbHVzaGVyOjpmbHVzaCgpCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2Fn
ZShXVEZNb3ZlKG1fY29tbWl0RW5jb2RlciksIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6Rmxh
Z3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JikKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQg
d2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5
U3RhdGU6OkZsYWdzLCBibwogICAgIH0KIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIG1fcGVuZGluZ0NhbGxiYWNrSURzLmFwcGVuZChz
dGF0aWNfY2FzdDxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25DYWxsYmFj
a0lEPihjYWxsYmFja0lEKSk7CiAgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCBjZjg5NTc4MTNm
YTUzODRkMTRkNjgyYjkxNDU5NzhmMTg1YjUzYWQxLi5mMGU2YzU1MDQxYTUxYTAyYTY3YTExOTAx
NzZmYTI2ZTE4NDFhZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xs
RGVsdGEpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAg
ICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOwor
ICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENv
bXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwpAQCAtODEs
NyArODEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JG
cmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hh
bmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkVXBkYXRlQWN0aXZpdHlTdGF0ZVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgYXR0YWNoVmll
d092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopIG92ZXJyaWRlOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiAKICAgICBSdW5Mb29wOjpUaW1l
cjxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4gbV9zZW5kRGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZVRpbWVyOwotICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrSURzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBtX25leHRBY3Rpdml0eVN0YXRl
Q2hhbmdlQ2FsbGJhY2tJRHM7CiAgICAgYm9vbCBtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fdmlld092ZXJsYXlSb290TGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCA0ODBkNjgx
ZjhmNmI4Y2Q2ZjFhNDMzYTMwMmYzMmMwMzdkZjI4YzJmLi4xYjMwYjUzMTdlOGNjOGNiMGY0NzRl
NWViNzNmZGVjOWM3YWJhNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpmb3JjZVJlcGFpbnQoKQogICAgIFtDQVRyYW5zYWN0aW9uIHN5bmNocm9uaXplXTsK
IH0KIAotYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5
bmModWludDY0X3QgY2FsbGJhY2tJRCkKK2Jvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAo
bV9sYXllclRyZWVTdGF0ZUlzRnJvemVuKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTks
NyArNDU5LDcgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zmx1c2hMYXll
cnMoKQogICAgIH0KIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdh
bnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbmV4dEFj
dGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hh
bmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxs
YmFja0lEPiYgbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKIHsKICAgICBtX25l
eHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMuYXBwZW5kVmVjdG9yKG5leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpOwogICAgIG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlIHw9IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsKQEAgLTQ4Miw3ICs0ODIsNyBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRl
VGltZXJGaXJlZCgpCiAgICAgaWYgKG1fd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKQogICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlKCkpOwogCi0gICAgZm9yICh1aW50NjRfdCBjYWxsYmFja0lEIDogbV9uZXh0QWN0
aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQorICAgIGZvciAoYXV0byBjYWxsYmFja0lEIDog
bV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKQogICAgICAgICBtX3dlYlBhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwog
CiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzLmNsZWFyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
aW5kZXggMWViMDQzNzI4MTI4MGNjZDIwMTY4MjY3YjVhZmU1NGE5NjVmY2RhOC4uMDE5MmZmMWMx
NTczMGVhOTU3Y2RkYTdhNDViODBiMjk4MGZjNjIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzM0LDcgKzMzNCw3
IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlCiAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RGlj
dGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBudWxscHRyKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXRpbmdSYW5nZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5
bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdDsKIApAQCAtMzc1LDcgKzM3NSw3IEBA
IHZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMo
Y29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhyZXN1bHQsIHJhbmdl
VG9TZW5kLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9u
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbihDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lOwogICAgIGRvdWJsZSBm
b250U2l6ZSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313820</attachid>
            <date>2017-06-25 21:34:08 -0700</date>
            <delta_ts>2017-06-28 16:05:24 -0700</delta_ts>
            <desc>Updated per Dan&apos;s comments</desc>
            <filename>bug-173803-20170625213411.patch</filename>
            <type>text/plain</type>
            <size>172294</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODgwMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1NCBAQAorMjAxNy0wNi0yNSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBBc3NlcnQgdGhhdCBjYWxsYmFj
ayBJRCBpcyBub3QgMCBvciAtMSBkdXJpbmcgZW5jb2RpbmcgYW5kIGRlY29kaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkaWFnbm9zaW5nIHRo
ZSBoYW5nIGluc2lkZSBTYWZhcmkgKDxyZGFyOi8vcHJvYmxlbS8zMjg0MTI1Nj4pLCBhZGQgYXNz
ZXJ0aW9ucyBmb3IgdGhlIGNhbGxiYWNrIElECisgICAgICAgIHRvIGJlIG5vdCAwIG9yIC0xIGR1
cmluZyBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSVBDIG1lc3NhZ2VzIHNpbmNlIHRoZSBsYXRl
c3QgYW5hbHlzaXMgc2VlbXMgdG8KKyAgICAgICAgaW5kaWNhdGUgdGhlIGhhbmcgaXMgY2F1c2Vk
IGJ5IHRoZSBoYXNoIG1hcCBnZXR0aW5nIGNvcnJ1cHRlZCBieSB0aGUgaW5zZXJ0aW9uIG9mIDAg
KGVtcHR5IHZhbHVlKS4KKworICAgICAgICBXcmFwcGVkIHRoZSB1aW50NjRfdCBpbiBDYWxsYmFj
a0lEIGFuZCBPcHRpb25hbENhbGxiYWNrSUQgdG8gYWRkIGFzc2VydGlvbnMuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6
CisgICAgICAgICogU2hhcmVkL0NhbGxiYWNrSUQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OkNhbGxiYWNrSUQ6OkNhbGxiYWNrSUQpOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja0lEOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6dG9JbnRlZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJLaXQ6OkNh
bGxiYWNrSUQ6OmlzVmFsaWRDYWxsYmFja0lEKTogQSBjYWxsYmFjayBJRCBpcyB2YWxpZCB3aGVu
IGl0J3MgbmVpdGhlciAwIG5vciAtMS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6ZnJv
bUludGVnZXIpOiBDcmVhdGUgYSBDYWxsYmFja0lEIG9iamVjdCBmcm9tIHBvdGVudGlhbGx5IHVu
c2FmZSB2YWx1ZS4KKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCk6IEdl
bmVyYXRlcyB0aGUgbmV4dCBjYWxsYmFjayBJRC4gTW92ZWQgZnJvbSBDYWxsYmFja0Jhc2UuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6OmVuY29kZSk6IEFkZGVkLiBBc3NlcnQgdGhhdCBp
dCdzIG5laXRoZXIgMCBub3IgLTEuCisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrSUQ6OmRlY29k
ZSk6IERpdHRvLgorICAgICAgICAoV1RGOjpDYWxsYmFja0lESGFzaDo6aGFzaCk6CisgICAgICAg
IChXVEY6OkNhbGxiYWNrSURIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8
V2ViS2l0OjpDYWxsYmFja0lEPjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFp
dHM8V2ViS2l0OjpDYWxsYmFja0lEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAg
KFdURjo6SGFzaFRyYWl0czxXZWJLaXQ6OkNhbGxiYWNrSUQ+Ojppc0RlbGV0ZWRWYWx1ZSk6Cisg
ICAgICAgICogU2hhcmVkL09wdGlvbmFsQ2FsbGJhY2tJRC5oOiBBZGRlZC4gVW5saWtlIENhbGxi
YWNrSUQsIGNhbGxiYWNrIElEIGhlcmUgY2FuIGJlIDAuCisgICAgICAgIChXZWJLaXQ6Ok9wdGlv
bmFsQ2FsbGJhY2tJRDo6T3B0aW9uYWxDYWxsYmFja0lEKToKKyAgICAgICAgKFdlYktpdDo6T3B0
aW9uYWxDYWxsYmFja0lEOjp0b0ludGVnZXIpOgorICAgICAgICAoV2ViS2l0OjpPcHRpb25hbENh
bGxiYWNrSUQ6OmNhbGxiYWNrSUQpOiBSZXR1cm5zIGEgdmFsaWQgQ2FsbGJhY2tJRCBvYmplY3Qu
IFRoZSBjYWxsZXIgb2YKKyAgICAgICAgdGhpcyBmdW5jdGlvbiBtdXN0IGhhdmUgdmVyaWZpZWQg
dGhhdCB0aGUgSUQgaXMgbmVpdGhlciAwIG9yIC0xIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rp
b24uCisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6b3BlcmF0b3IgYm9vbCk6
CisgICAgICAgIChXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6aXNWYWxpZCk6CisgICAgICAg
IChXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRDo6aXNWYWxpZENhbGxiYWNrSUQpOgorICAgICAg
ICAoV2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQ6OmVuY29kZSk6IFNpbmNlIE9wdGlvbmFsQ2Fs
bGJhY2tJRCBjYW4gYmUgMCwgb25seSBhc3NlcnQgdGhhdCBpdCdzIG5vdCAtMS4KKyAgICAgICAg
KFdlYktpdDo6T3B0aW9uYWxDYWxsYmFja0lEOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpjYWxsYmFj
a0lEKTogUmV0dXJucyBhIENhbGxiYWNrSUQgb2JqZWN0IGluc3RlYWQgb2YgdWludDY0X3QuCisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpnZW5lcmF0ZUNhbGxiYWNrSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KTogUmV0dXJucyBhIGNhbGxiYWNrIElELiBBbHNv
IGFkZGVkIGEgdmVyc2lvbiB0aGF0IGRvZXNuJ3QgdGFrZSBhY3Rpdml0eSB0b2tlbgorICAgICAg
ICBhcyB1c2VkIGluIFdlYkNvb2tpZU1hbmFnZXJQcm94eQorICAgICAgICAoV2ViS2l0OjpDYWxs
YmFja01hcDo6dGFrZSk6IFRha2VzIGEgY2FsbGJhY2sgSUQuCisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6IFVwZGF0ZWQgdGhlIGNvZGUgYXMgY2FsbGJhY2sg
bWFwcyBhcmUgbWVyZ2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6
OnByb2Nlc3NQb29sRGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2ll
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWREZWxldGVDb29raWVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZhbGlkYXRl
Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENv
bnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldEJ5dGVj
b2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQ
cm9maWxlck91dHB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q29udGVu
dHNBc01IVE1MRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uT3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpn
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
bGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnZvaWRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbWFnZUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpyZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJpbnRGaW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldE1hcmtlZFJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmdldFNlbGVjdGVkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Omluc3RhbGxBY3Rpdml0eVN0YXRlQ2hhbmdlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphdXRvY29ycmVjdGlvbkNvbnRleHRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBseUF1dG9jb3JyZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlB
dFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpt
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRC
b3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlv
bkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29y
cmVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVj
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhU
d29Ub3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BE
Rik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJhY2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW06CisgICAgICAgICgtW1dL
UHJpbnRpbmdWaWV3IF9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvbmRhcnlUaHJlYWRd
KToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2Fza1BhZ2VUb0NvbXB1dGVQYWdlUmVjdHNd
KToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX2RyYXdQcmV2aWV3Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9udEF0U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25D
YWxsYmFjayk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEFsbENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyOjpnZXRDb29raWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXI6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVNYW5hZ2VyOjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWlu
dEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6YWN0aXZp
dHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWlu
aXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGFrZVNuYXBzaG90
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dmFsaWRhdGVDb21tYW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldENvbnRl
bnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDb250ZW50c0FzTUhU
TUxEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25B
c1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0aW9u
T3JDb250ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U291cmNl
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21G
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3
UGFnZXNUb1BERik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc0ZvclByaW50
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoUHJpbnRPcGVyYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZUFzeW5jKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6
V2ViUHJpbnRPcGVyYXRpb25HdGspOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUHJpbnRPcGVyYXRpb25HdGsuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFNlbGVjdGlvbkNv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RUZXh0V2l0
aEdyYW51bGFyaXR5QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luU2Vs
ZWN0aW9uSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmFwcGx5QXV0b2NvcnJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdENvbW1hbmRXaXRoQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1
ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9j
dXNOZXh0QXNzaXN0ZWROb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRUcmFuc2Fj
dGlvbkNhbGxiYWNrSUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjph
dHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmZvbnRBdFNlbGVjdGlvbik6CisKIDIwMTctMDYtMjUgIEtvbnN0YW50aW4g
VG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFJlbW92ZSBleGNlc3NpdmUg
aGVhZGVycyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHJl
dmlzaW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICAgICAgc3VwcGxlbWVu
dDxXZWJDb29raWVNYW5hZ2VyPigpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0
ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwKICAgICAgICAgICAgIHBhcmFtZXRlcnMu
Y29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKICAgICB9Ci0gICAgc3VwcGxlbWVudDxXZWJD
b29raWVNYW5hZ2VyPigpLT5zZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBhcmFtZXRlcnMuY29v
a2llQWNjZXB0UG9saWN5LCAwKTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXI+KCkt
PnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3ks
IE9wdGlvbmFsQ2FsbGJhY2tJRCgpKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMu
aXNFbXB0eSgpKQogICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChwYXJhbWV0
ZXJzLmxhbmd1YWdlcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2FsbGJhY2tJRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DYWxsYmFja0lELmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NhbGxiYWNrSUQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworc3RydWN0IENhbGxiYWNrSURIYXNoOworCit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBDYWxsYmFja0lEIHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5F
IGV4cGxpY2l0IENhbGxiYWNrSUQoKQorICAgIHsgfQorCisgICAgQUxXQVlTX0lOTElORSBDYWxs
YmFja0lEKGNvbnN0IENhbGxiYWNrSUQmIG90aGVySUQpCisgICAgICAgIDogbV9pZChvdGhlcklE
Lm1faWQpCisgICAgeworICAgICAgICBBU1NFUlQoSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5
VmFsdWUoKSAhPSBtX2lkICYmICFIYXNoVHJhaXRzPHVpbnQ2NF90Pjo6aXNEZWxldGVkVmFsdWUo
bV9pZCkpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxsYmFja0lEJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pZCA9PSBvdGhlci5tX2lkOyB9CisKKyAgICB1aW50NjRf
dCB0b0ludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkQ2FsbGJhY2tJRChtX2lkKTsgfQor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZENhbGxiYWNrSUQodWludDY0X3Qg
cmF3SWQpCisgICAgeworICAgICAgICByZXR1cm4gSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5
VmFsdWUoKSAhPSByYXdJZCAmJiAhSGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVsZXRlZFZhbHVl
KHJhd0lkKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBDYWxsYmFja0lEIGZy
b21JbnRlZ2VyKHVpbnQ2NF90IHJhd0lkKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNWYWxpZENhbGxiYWNrSUQocmF3SWQpKTsKKyAgICAgICAgcmV0dXJuIENhbGxiYWNrSUQocmF3
SWQpOworICAgIH0KKworICAgIHN0YXRpYyBDYWxsYmFja0lEIGdlbmVyYXRlSUQoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgc3RhdGljIHVpbnQ2
NF90IHVuaXF1ZUNhbGxiYWNrSUQgPSAxOworICAgICAgICByZXR1cm4gQ2FsbGJhY2tJRCh1bmlx
dWVDYWxsYmFja0lEKyspOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc1ZhbGlkKCkpOworICAgICAgICBlbmNvZGVyIDw8IG1faWQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIENhbGxiYWNrSUQmIGNhbGxiYWNrSUQpCisgICAgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlY29kZXIuZGVjb2RlKGNhbGxiYWNrSUQubV9pZCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQUxXQVlTX0lOTElORSBleHBsaWNpdCBDYWxsYmFja0lEKHVpbnQ2
NF90IG5ld0lEKQorICAgICAgICA6IG1faWQobmV3SUQpCisgICAgeworICAgICAgICBBU1NFUlQo
bmV3SUQgIT0gSGFzaFRyYWl0czx1aW50NjRfdD46OmVtcHR5VmFsdWUoKSk7CisgICAgfQorCisg
ICAgZnJpZW5kIGNsYXNzIENhbGxiYWNrTWFwOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxs
YmFja1R5cGU+IGZyaWVuZCBjbGFzcyBTcGVjaWZpY0NhbGxiYWNrTWFwOworICAgIGZyaWVuZCBj
bGFzcyBPcHRpb25hbENhbGxiYWNrSUQ7CisgICAgZnJpZW5kIHN0cnVjdCBXVEY6OkNhbGxiYWNr
SURIYXNoOworICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6OkNhbGxiYWNrSUQ+
OworCisgICAgdWludDY0X3QgbV9pZCB7IEhhc2hUcmFpdHM8dWludDY0X3Q+OjplbXB0eVZhbHVl
KCkgfTsKK307CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBDYWxsYmFja0lESGFz
aCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpDYWxsYmFja0lEJiBj
YWxsYmFja0lEKSB7IHJldHVybiBpbnRIYXNoKGNhbGxiYWNrSUQubV9pZCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6OkNhbGxiYWNrSUQmIGEsIGNvbnN0IFdlYktpdDo6
Q2FsbGJhY2tJRCYgYikgeyByZXR1cm4gYS5tX2lkID09IGIubV9pZDsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6Q2FsbGJhY2tJRD4gOiBHZW5lcmljSGFz
aFRyYWl0czxXZWJLaXQ6OkNhbGxiYWNrSUQ+IHsKKyAgICBzdGF0aWMgV2ViS2l0OjpDYWxsYmFj
a0lEIGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJLaXQ6OkNhbGxiYWNrSUQoKTsgfQorICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OkNhbGxiYWNrSUQmIHNsb3Qp
IHsgc2xvdCA9IFdlYktpdDo6Q2FsbGJhY2tJRChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90
Pjo6bWF4KCkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0
OjpDYWxsYmFja0lEJiBzbG90KSB7IHJldHVybiBzbG90Lm1faWQgPT0gc3RkOjpudW1lcmljX2xp
bWl0czx1aW50NjRfdD46Om1heCgpOyB9Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8V2ViS2l0OjpDYWxsYmFja0lEPiB7CisgICAgdHlwZWRlZiBDYWxsYmFja0lESGFzaCBIYXNo
OworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL09wdGlvbmFsQ2FsbGJhY2tJ
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9PcHRpb25hbENhbGxiYWNr
SUQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvT3B0aW9uYWxDYWxs
YmFja0lELmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
VHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE9wdGlvbmFsQ2FsbGJhY2tJRCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgT3B0
aW9uYWxDYWxsYmFja0lEKCkgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGV4cGxpY2l0IE9wdGlv
bmFsQ2FsbGJhY2tJRChjb25zdCBDYWxsYmFja0lEJiBvdGhlcklEKQorICAgICAgICA6IG1faWQo
b3RoZXJJRC5tX2lkKQorICAgIHsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFs
Q2FsbGJhY2tJRChjb25zdCBPcHRpb25hbENhbGxiYWNrSUQmIG90aGVySUQpCisgICAgICAgIDog
bV9pZChvdGhlcklELm1faWQpCisgICAgeworICAgICAgICBBU1NFUlQoIUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX2lkKSk7CisgICAgfQorCisgICAgdWludDY0X3QgdG9J
bnRlZ2VyKCkgeyByZXR1cm4gbV9pZDsgfQorICAgIENhbGxiYWNrSUQgY2FsbGJhY2tJRCgpCisg
ICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChDYWxsYmFja0lEOjppc1ZhbGlkQ2FsbGJhY2tJ
RChtX2lkKSk7CisgICAgICAgIHJldHVybiBDYWxsYmFja0lEKG1faWQpOworICAgIH0KKworICAg
IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiBtX2lkOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFja0lEKG1faWQpOyB9Cisg
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkQ2FsbGJhY2tJRCh1aW50NjRfdCBy
YXdJZCkKKyAgICB7CisgICAgICAgIHJldHVybiAhSGFzaFRyYWl0czx1aW50NjRfdD46OmlzRGVs
ZXRlZFZhbHVlKHJhd0lkKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBtX2lkOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBPcHRpb25hbENhbGxiYWNrSUQmIGNhbGxiYWNrSUQpCisgICAgeworICAgICAgICBh
dXRvIHJlc3VsdCA9IGRlY29kZXIuZGVjb2RlKGNhbGxiYWNrSUQubV9pZCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdWludDY0X3QgbV9pZCB7IEhhc2hUcmFpdHM8dWlu
dDY0X3Q+OjplbXB0eVZhbHVlKCkgfTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgJKHJldmlz
aW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbl9oCiAjZGVmaW5lIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uX2gKIAorI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGUuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KQEAgLTI2MSw3ICsyNjIsNyBAQCBwdWJs
aWM6CiAgICAgdWludDY0X3QgdHJhbnNhY3Rpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNh
Y3Rpb25JRDsgfQogICAgIHZvaWQgc2V0VHJhbnNhY3Rpb25JRCh1aW50NjRfdCB0cmFuc2FjdGlv
bklEKSB7IG1fdHJhbnNhY3Rpb25JRCA9IHRyYW5zYWN0aW9uSUQ7IH0KIAotICAgIHR5cGVkZWYg
dWludDY0X3QgVHJhbnNhY3Rpb25DYWxsYmFja0lEOworICAgIHR5cGVkZWYgQ2FsbGJhY2tJRCBU
cmFuc2FjdGlvbkNhbGxiYWNrSUQ7CiAgICAgY29uc3QgVmVjdG9yPFRyYW5zYWN0aW9uQ2FsbGJh
Y2tJRD4mIGNhbGxiYWNrSURzKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0lEczsgfQogICAg
IHZvaWQgc2V0Q2FsbGJhY2tJRHMoVmVjdG9yPFRyYW5zYWN0aW9uQ2FsbGJhY2tJRD4mJiBjYWxs
YmFja0lEcykgeyBtX2NhbGxiYWNrSURzID0gV1RGTW92ZShjYWxsYmFja0lEcyk7IH0KIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAkocmV2aXNpb24g
MjE4Nzg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElFcnJvci5oIgog
I2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIkNhbGxiYWNr
SUQuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0zNCw3ICszNSw2IEBACiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQoKSBjb25z
dCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KKyAgICBDYWxsYmFja0lEIGNhbGxiYWNrSUQoKSBj
b25zdCB7IHJldHVybiBtX2NhbGxiYWNrSUQ7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAg
ICAgVCogYXMoKQpAQCAtNzEsMjEgKzcxLDE0IEBAIHByb3RlY3RlZDoKIAogICAgIGV4cGxpY2l0
IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQot
ICAgICAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkKKyAgICAgICAgLCBt
X2NhbGxiYWNrSUQoQ2FsbGJhY2tJRDo6Z2VuZXJhdGVJRCgpKQogICAgICAgICAsIG1fYWN0aXZp
dHlUb2tlbihhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FsbGJhY2tJRCgpCi0gICAgewotICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlQ2FsbGJh
Y2tJRCA9IDE7Ci0gICAgICAgIHJldHVybiB1bmlxdWVDYWxsYmFja0lEKys7Ci0gICAgfQotCiAg
ICAgVHlwZSBtX3R5cGU7Ci0gICAgdWludDY0X3QgbV9jYWxsYmFja0lEOworICAgIENhbGxiYWNr
SUQgbV9jYWxsYmFja0lEOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0
eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKIH07CiAKQEAgLTE4MCwxMyArMTczLDEzIEBAIHZvaWQg
aW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWludDYKIAogY2xhc3MgQ2FsbGJhY2tNYXAg
ewogcHVibGljOgotICAgIHVpbnQ2NF90IHB1dChSZWY8Q2FsbGJhY2tCYXNlPiYmIGNhbGxiYWNr
KQorICAgIENhbGxiYWNrSUQgcHV0KFJlZjxDYWxsYmFja0Jhc2U+JiYgY2FsbGJhY2spCiAgICAg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgICAgICBSRUxF
QVNFX0FTU0VSVChjYWxsYmFja0lEKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fbWFwLmNv
bnRhaW5zKGNhbGxiYWNrSUQpKTsKLSAgICAgICAgbV9tYXAuc2V0KGNhbGxiYWNrSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxi
YWNrSUQoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGJhY2tJRC5pc1ZhbGlkKCkpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9tYXAuY29udGFpbnMoY2FsbGJhY2tJRC5tX2lkKSk7
CisgICAgICAgIG1fbWFwLnNldChjYWxsYmFja0lELm1faWQsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CiAgICAgfQogCkBAIC0yMDEsMTggKzE5NCwyNiBA
QCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+Ci0gICAgdWlu
dDY0X3QgcHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NU
aHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQorICAgIENh
bGxiYWNrSUQgcHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAg
IHsKICAgICAgICAgYXV0byBjYWxsYmFjayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4u
KFQpLCBULi4uPjo6dHlwZTo6Y3JlYXRlKFdURk1vdmUoZnVuY3Rpb24pLCBhY3Rpdml0eVRva2Vu
KTsKICAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCisgICAg
Ly8gRklYTUU6IEV2ZXJ5IGNhbGxlciBzaG91bGQgcGFzcyBpbiBhY3Rpdml0eVRva2VuCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4KKyAgICBDYWxsYmFja0lEIHB1dChGdW5jdGlvbjx2b2lk
KFQuLi4pPiYmIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IEdlbmVy
aWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6dHlwZTo6Y3JlYXRlKFdURk1vdmUo
ZnVuY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
fQorCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBSZWZQdHI8VD4gdGFrZSh1aW50NjRfdCBj
YWxsYmFja0lEKQorICAgIFJlZlB0cjxUPiB0YWtlKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSUQpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChjYWxsYmFja0lELmlzVmFsaWQoKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgYXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFj
a0lEKTsKKyAgICAgICAgYXV0byBiYXNlID0gbV9tYXAudGFrZShjYWxsYmFja0lELm1faWQpOwog
ICAgICAgICBpZiAoIWJhc2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAJKHJldmlzaW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJPcHRpb25hbENhbGxiYWNr
SUQuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCkBAIC03MiwxMCArNzMsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlh
bGl6ZUNsCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzUG9vbERlc3Ryb3ll
ZCgpCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcCht
X3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQp
OwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgIG1fY2FsbGJhY2tzLmlu
dmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAg
ICBWZWN0b3I8T2JzZXJ2ZXIqPiBvYnNlcnZlcnM7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZlclNl
dCA6IG1fY29va2llT2JzZXJ2ZXJzLnZhbHVlcygpKSB7CkBAIC05MSwxOCArODksMTIgQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnByb2Nlc3NQb29sRAogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52
YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6
OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVB
Y2NlcHRQb2xpY3lDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQp
OwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dl
dENvb2tpZXNDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwor
ICAgIG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4
aXRlZCk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2Uo
TmV0d29ya1Byb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJy
YXlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGlu
dmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3MsIENh
bGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOwotICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX3ZvaWRDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQp
OwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2dldENvb2tpZXNDYWxsYmFja3MsIENhbGxi
YWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIG1fY2FsbGJhY2tzLmludmFsaWRh
dGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCkBAIC0xMTcsMTYgKzEw
OSwxMyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250CiAKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhTZXNzaW9uSUQg
c2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gQXJyYXlDYWxs
YmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fYXJyYXlDYWxsYmFja3Mu
c2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nhcnko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Np
b25JRCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlk
R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRHZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8QXJyYXlDYWxsYmFjaz4g
Y2FsbGJhY2sgPSBtX2FycmF5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CisgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXJyYXlDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAg
ICAgaWYgKCFjYWxsYmFjaykgewogICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9yIG9yIGFzc2Vy
dC4KICAgICAgICAgcmV0dXJuOwpAQCAtMTQ3LDcxICsxMzYsNTMgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvbwogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGVsZXRlQ29va2llKFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxi
YWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vz
c2lvbklEIHNlc3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0
aW1lLCBGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1v
dmUoY2FsbGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3
b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llKFNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBGdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2Fs
bGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBt
X3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQorICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNz
aW9uSUQsIGNvb2tpZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6c2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2ll
PiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMLCBG
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewotICAgIGF1dG8gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pKTsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxi
YWNrSUQoKTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKLQorICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5n
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhTZXNzaW9uSUQgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8Q29va2ll
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBjYWxsYmFjayA9IEdldENvb2tpZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwotICAgIG1fZ2V0Q29va2llc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbikpOwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6R2V0QWxsQ29va2llcyhzZXNzaW9uSUQsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0g
R2V0Q29va2llc0NhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Ci0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9n
ZXRDb29raWVzQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0K
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVz
KHNlc3Npb25JRCwgdXJsLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkaWRTZXRDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGlkU2V0Q29va2llcyhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKLSAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxi
YWNrKCk7CisgICAgbV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdl
dENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkR2V0Q29va2llcyhjb25zdCBWZWN0
b3I8Q29va2llPiYgY29va2llcywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0g
ICAgbV9nZXRDb29raWVzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZShjb29raWVzKTsKKyAgICBtX2NhbGxiYWNrcy50YWtlPEdldENvb2tp
ZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShj
b29raWVzKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUNvb2tp
ZXModWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRE
ZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIG1fdm9p
ZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpLT5wZXJmb3JtQ2FsbGJhY2soKTsKKyAgICBtX2Nh
bGxiYWNrcy50YWtlPFZvaWRDYWxsYmFjaz4oY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFjaygp
OwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yODQsMzMgKzI1NSwyNiBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpCiAgICAgLy8gVGhlIHBvbGljeSBpcyBu
b3Qgc2VudCB0byBuZXdseSBjcmVhdGVkIHByb2Nlc3NlcyAob25seSBTb3VwIGRvZXMgdGhhdCB2
aWEgc2V0SW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSkuIFRoaXMgaXMgbm90IGEgc2Vy
aW91cyBwcm9ibGVtLCBiZWNhdXNlOgogICAgIC8vIC0gV2hlbiB0ZXN0aW5nLCB3ZSBvbmx5IGhh
dmUgb25lIFdlYlByb2Nlc3MgYW5kIG9uZSBOZXR3b3JrUHJvY2VzcywgYW5kIFdlYktpdFRlc3RS
dW5uZXIgbmV2ZXIgcmVzdGFydHMgdGhlbTsKICAgICAvLyAtIFdoZW4gbm90IHRlc3RpbmcsIENv
Y29hIGhhcyB0aGUgcG9saWN5IHBlcnNpc3RlZCwgYW5kIHRodXMgbmV3IHByb2Nlc3NlcyB1c2Ug
aXQgKGV2ZW4gZm9yIGVwaGVtZXJhbCBzZXNzaW9ucykuCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHBvbGljeSwgMCkpOwotCi0gICAgYXV0byBjYWxsYmFjayA9IFZvaWRDYWxs
YmFjazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIHByb2Nlc3NQb29sKCktPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShwb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJRCgpKSk7CiAKLSAgICBwcm9j
ZXNzUG9vbCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3ksIGNhbGxiYWNrSUQpKTsKKyAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5LCBP
cHRpb25hbENhbGxiYWNrSUQoY2FsbGJhY2tJRCkpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koU2Vzc2lvbklELCBGdW5jdGlvbjx2
b2lkIChIVFRQQ29va2llQWNjZXB0UG9saWN5LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBIVFRQQ29va2llQWNjZXB0UG9s
aWN5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLQotICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1faHR0cENv
b2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwotCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpkaWRHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGlj
eSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJRCktPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2xpY3kp
OworICAgIG1fY2FsbGJhY2tzLnRha2U8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPihj
YWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvbGljeSk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkaWRTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGlkU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
LSAgICBtX3ZvaWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKS0+cGVyZm9ybUNhbGxiYWNrKCk7
CisgICAgbV9jYWxsYmFja3MudGFrZTxWb2lkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpLT5wZXJmb3Jt
Q2FsbGJhY2soKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZVN0
b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDIx
ODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDEzICsxMDcsMTMgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHZvaWQg
ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWlu
dDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZEdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgV2ViS2l0OjpDYWxsYmFja0lE
KTsKKyAgICB2b2lkIGRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5
LCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBkaWRTZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZGlkU2V0Q29va2llcyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZEdldENvb2tpZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZERlbGV0
ZUNvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRTZXRDb29raWVz
KFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERl
bGV0ZUNvb2tpZXMoV2ViS2l0OjpDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENo
YW5nZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogCkBAIC0xMzEsMTAgKzEzMSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwZXJzaXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0
UG9saWN5KTsKICNlbmRpZgogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+PiBtX2FycmF5Q2FsbGJhY2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxI
VFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s+PiBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lD
YWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFZvaWRDYWxsYmFjaz4+IG1f
dm9pZENhbGxiYWNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8R2V0Q29va2llc0Nh
bGxiYWNrPj4gbV9nZXRDb29raWVzQ2FsbGJhY2tzOworICAgIENhbGxiYWNrTWFwIG1fY2FsbGJh
Y2tzOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTZXNzaW9uSUQsIFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4+IG1fbGVnYWN5Q29va2llT2JzZXJ2ZXJzOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6U2Vz
c2lvbklELCBIYXNoU2V0PE9ic2VydmVyKj4+IG1fY29va2llT2JzZXJ2ZXJzOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMTg3ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSwxMyArMjEsMTMgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQ29va2ll
TWFuYWdlclByb3h5IHsKLSAgICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3Ry
aW5nPiBob3N0bmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIERpZEdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAg
ICBEaWRHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWRHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KHVpbnQzMl90IHBvbGljeSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwog
Ci0gICAgRGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICBEaWREZWxldGVDb29raWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIERpZFNldENv
b2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgRGlkR2V0Q29va2llcyhWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiBjb29raWVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBEaWRTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAg
ICBEaWREZWxldGVDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBE
aWRTZXRDb29raWVzKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBEaWRHZXRD
b29raWVzKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKTsKIAogICAgIENvb2tpZXNEaWRDaGFuZ2UoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyMTg3ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBhZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NNYW5hZ2VyLmgiCkBAIC0xNjAzLDcgKzE2MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9j
dXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTE2MjgsNyArMTYyOSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29t
bWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMjgzNCw3
ICsyODM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMjg0NSw3ICsyODQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTI4NTYsNyArMjg1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFt
ZShXZWIKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1l
SUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KQEAgLTI4NjgsNyArMjg2OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFcKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAtMjg4
MCw3ICsyODgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRl
bnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKIH0KQEAgLTI4OTIsNyArMjg5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1w
bGluZ1Byb2ZpbGVyT3UKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAg
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQpAQCAtMjkxOCw3ICsyOTE5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0Q29udGVudHNBc01IVE1MRGF0YShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogI2VuZGlm
CkBAIC0yOTMwLDcgKzI5MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JD
b250ZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3Ry
aW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI5NDEsNyArMjk0Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2gKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CiB9CiAKQEAgLTI5NTIsNyArMjk1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVz
b3VyY2VEYXRhT2YKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZG
cmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0y
OTYzLDcgKzI5NjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZy
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5m
cmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIApAQCAtMjk3NCw3ICsyOTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hp
dmVPZkZyYW1lKAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZy
YW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTMwMDcsNyAr
MzAwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFYKICAgICAg
ICAgfSk7CiAgICAgfTsKIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fZHJhd2luZ0Fy
ZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7IAogfQpAQCAtMzI0Myw3ICszMjQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZh
aWxQcm92aXNpb25hbExvYQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50
Q2FsbGJhY2tzKCkKIHsKLSAgICBIYXNoU2V0PHVpbnQ2NF90PiBsb2FkRGVwZW5kZW50U3RyaW5n
Q2FsbGJhY2tJRHMgPSBXVEZNb3ZlKG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzKTsK
KyAgICBIYXNoU2V0PENhbGxiYWNrSUQ+IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcyA9
IFdURk1vdmUobV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMpOwogICAgIGZvciAoYXV0
byYgY2FsbGJhY2tJRCA6IGxvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcykgewogICAgICAg
ICBpZiAoYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpKQogICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKQEAgLTUwMDAs
NyArNTAwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMKICAg
ICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFZvaWRDYWxsYmFj
az4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTAxMSw3ICs1MDEyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayh1aW50NjRfdAogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFj
ayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7
CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTAyMiw3ICs1MDIzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUAogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJh
Y2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCks
IGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKS5wdHIoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpp
bWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiaXRtYXBIYW5kbGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VDYWxsYmFjayhj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgYml0bWFwSGFuZGxlLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8SW1hZ2VD
YWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTAzMyw3ICs1
MDM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmltYWdlQ2FsbGJhY2soY29uc3QgUwogICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoYml0bWFwSGFuZGxlKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0
U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnN0cmluZ0Nh
bGxiYWNrKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U3RyaW5nQ2FsbGJhY2s+
KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUwNDcsNyArNTA0OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzdHJpbmdDYWxsYmFjayhjb25zdCAKICAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlc3VsdFN0cmluZy5pbXBsKCkpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxTdHJpbmdDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpA
QCAtNTA2MSw3ICs1MDYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludmFsaWRhdGVTdHJpbmdD
YWxsYgogICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVy
ZW5jZSwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmIGRldGFpbHMs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaGFkRXhj
ZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U2NyaXB0VmFs
dWVDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTA4MSw3
ICs1MDgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2soYwogICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBoYWRFeGNlcHRpb24sIGRl
dGFpbHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZv
clByaW50aW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1
dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91Ymxl
IHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPENvbXB1dGVkUGFnZXNDYWxsYmFj
az4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtNTA5Miw3ICs1MDkzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjawogICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFj
dG9yRm9yUHJpbnRpbmcpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCBpc0VuYWJsZWQsIGludCBz
dGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNv
bW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBib29sIGlzRW5hYmxlZCwg
aW50IHN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9
IG1fY2FsbGJhY2tzLnRha2U8VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMDMsNyArNTEwNCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2YWxpZGF0ZUNvbW1hbmRDYWxsYmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNr
V2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0ZSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1bnNpZ25lZENhbGxiYWNr
KHVpbnQ2NF90IHJlc3VsdCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFVuc2lnbmVkQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTUxMTUsNyArNTExNiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1bnNpZ25lZENhbGxiYWNrKHVpbnQKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNr
V2l0aFJldHVyblZhbHVlKHJlc3VsdCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjplZGl0aW5n
UmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRp
bmdSYW5nZSYgcmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNTQUdFX0NI
RUNLKHJhbmdlLmlzVmFsaWQoKSk7CiAKQEAgLTUxMzAsNyArNTEzMSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjaygKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
dm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBNYWNoU2VuZFJp
Z2h0JiBzZW5kUmlnaHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
bWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlbmRSaWdodCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50
YWtlPE1hY2hTZW5kUmlnaHRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFj
aykKQEAgLTUxOTIsNyArNTE5Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2dTY3JvbGxpbmdF
dmVudCh1aW4KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFj
dHVhbFJhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY3RG
b3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEVkaXRp
bmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBNRVNT
QUdFX0NIRUNLKGFjdHVhbFJhbmdlLmlzVmFsaWQoKSk7CiAKQEAgLTUyMDcsNyArNTIwOCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UKIH0KIAogI2lmIFBMQVRG
T1JNKEdUSykKLXZvaWQgV2ViUGFnZVByb3h5OjpwcmludEZpbmlzaGVkQ2FsbGJhY2soY29uc3Qg
UmVzb3VyY2VFcnJvciYgcHJpbnRFcnJvciwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpwcmludEZpbmlzaGVkQ2FsbGJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYgcHJp
bnRFcnJvciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBt
X2NhbGxiYWNrcy50YWtlPFByaW50RmluaXNoZWRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewpAQCAtNTk2MSw3ICs1OTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbXB1dGVQYWdlc0ZvclByaW50aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhm
cmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRp
bmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CkBAIC01OTc1
LDcgKzU5NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1l
LT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwogfQpAQCAtNTk4Nyw3ICs1OTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdl
c1RvUERGKFdlYkZyYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQ
YWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Q
cmludE9wZXJhdGlvbikpOwogfQpAQCAtNTk5OSw3ICs2MDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgYXV0byBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhm
cmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRp
bmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CkBAIC02Mjk2
LDcgKzYyOTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtNjMwNyw3ICs2MzA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVj
dGVkUmFuZ2VBc3luYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNjMxOCw3ICs2MzE5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0
ZXJJbmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTYzMjksNyArNjMzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhy
YW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNjM3Myw3ICs2Mzc0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CiB9CiAKQEAgLTY1OTYsNyArNjU5Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnN0YWxsQWN0aXZpdHlTdGF0ZUMKICAgICBhdXRvIHZvaWRDYWxsYmFjayA9IFZvaWRDYWxsYmFj
azo6Y3JlYXRlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoQ2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0sIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKHZvaWRD
YWxsYmFjaykpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KHZvaWRDYWxsYmFjaykpOwogICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3Mu
YXBwZW5kKGNhbGxiYWNrSUQpOwogfQogCkBAIC02NzQ2LDcgKzY3NDcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0CiAgICAgbV9wYWdlQ2xpZW50LmRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgdWludDY0X3QgbG9hZElk
ZW50aWZpZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsK
ICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5nZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVu
dGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAg
LTY3NTYsMTUgKzY3NTcsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZv
ckljbwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNr
RnVuY3Rpb247Ci0gICAgICAgIHVpbnQ2NF90IG5ld0NhbGxiYWNrSWRlbnRpZmllciA9IGRlY2lz
aW9uID8gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkgOiAwOworICAgICAgICBh
dXRvIG5ld0NhbGxiYWNrSWRlbnRpZmllciA9IGRlY2lzaW9uID8gT3B0aW9uYWxDYWxsYmFja0lE
KG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJ
RCgpOwogCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNr
SWRlbnRpZmllciksIG1fcGFnZUlEKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2Fk
aW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSkKIHsKLSAgICBkYXRhQ2FsbGJhY2soZGF0YSwgY2FsbGJhY2tJZGVudGlmaWVyKTsKKyAg
ICBkYXRhQ2FsbGJhY2soZGF0YSwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sIGRpc2FibGVkKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjE4Nzg0KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
MzYsNyArOTM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQ
cm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwg
UmVmPERhdGFDYWxsYmFjaz4mJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHVpbnQzMl90IGNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYsIERyYXdUb1BERkNhbGxiYWNrOjpDYWxsYmFja0Z1bmN0aW9uJiYpOwotICAg
IHZvaWQgZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRh
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdUb1BERkNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEKTsKICNlbmRp
ZgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+
JiYpOwpAQCAtMTE1OSw4ICsxMTU5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZXN0b3Jl
U2Nyb2xsUG9zaXRpb24oKTsKIAotICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBX
ZWJDb3JlOjpMaW5rSWNvbiYsIFdlYktpdDo6Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik7CiAKICAgICB2b2lkIHNldEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRXaW5k
b3dGcmFtZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKQEAgLTE0NDksMzYgKzE0NDksMzYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5
cGUsIGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIHZvaWRDYWxsYmFjayh1aW50NjRfdCk7Ci0g
ICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3Qp
OwotICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYs
IHVpbnQ2NF90KTsKLSAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIHVpbnQ2
NF90KTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCk7Ci0gICAg
dm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgdWludDY0X3Qp
OwotICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90KTsK
LSAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2wsIGlu
dCwgdWludDY0X3QpOwotICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgdWludDY0
X3QpOwotICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1JhbmdlJiwg
dWludDY0X3QpOworICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOworICAgIHZvaWQg
ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOworICAg
IHZvaWQgaW1hZ2VDYWxsYmFjayhjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxi
YWNrSUQpOworICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJvb2wg
aGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29s
LCBpbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCBlZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0aW5n
UmFuZ2UmLCBDYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIG1hY2hT
ZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgdWludDY0X3Qp
OworICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5k
UmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgotICAgIHZvaWQgcmVjdEZvckNoYXJhY3RlclJh
bmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYs
IHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFu
Z2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwg
dWludDY0X3QpOwotICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5n
JiwgZG91YmxlLCBib29sLCB1aW50NjRfdCk7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nRm9y
Q2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRp
dGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxsYmFj
ayhjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAjaWYg
UExBVEZPUk0oSU9TKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDY0X3QpOwotICAgIHZv
aWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVp
bnQzMl90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBhdXRvY29ycmVjdGlvbkRhdGFDYWxsYmFjayhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIGNvbnN0IFN0cmluZyYsIGZsb2F0LCB1
aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJh
Y2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBzZWxlY3Rpb25D
b250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgdWludDY0X3QpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWlu
dDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0NhbGxiYWNrKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgYXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9hdCBm
b250U2l6ZSwgdWludDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBhdXRv
Y29ycmVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0
IFN0cmluZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0
cmluZyYgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcm
IHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBjb25zdCBTdHJpbmcmIGFm
dGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBF
ZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIGJvb2wmIGhhbmRsZWQpOwogICAgIHZvaWQg
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIHNlbGVjdGlvblJlY3RzQ2FsbGJhY2soY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgdWludDY0X3QpOworICAgIHZvaWQg
c2VsZWN0aW9uUmVjdHNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVj
dD4mLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHBy
aW50RmluaXNoZWRDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWludDY0
X3QpOworICAgIHZvaWQgcHJpbnRGaW5pc2hlZENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBDYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAgdm9pZCBmb2N1c2VkRnJhbWVD
aGFuZ2VkKHVpbnQ2NF90IGZyYW1lSUQpOwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgQ2FsbGJhY2tNYXAgbV9jYWxsYmFja3M7Ci0gICAgSGFzaFNldDx1aW50
NjRfdD4gbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHM7CisgICAgSGFzaFNldDxDYWxs
YmFja0lEPiBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEczsKIAogICAgIEhhc2hTZXQ8
V2ViRWRpdENvbW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKQEAgLTE5NTksNyArMTk1
OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9jb25m
aWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlczsKICAgICBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6Ok5vRmxhZ3MgfTsKICAgICBib29sIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdh
bnRzU3luY2hyb25vdXNSZXBseSB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25l
eHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOworICAgIFZlY3RvcjxDYWxsYmFja0lEPiBt
X25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fbWVkaWFTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6OklzTm90UGxheWluZyB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIxODc4NCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTE1NCwyNyArMTU0LDI3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgV2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJ
RCwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHRleHRGaWVsZFZhbHVlcywgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgQ2Fs
bGJhY2sgbWVzc2FnZXMKLSAgICBWb2lkQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKLSAg
ICBEYXRhQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGJpdG1hcEhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTdHJpbmdDYWxsYmFj
ayhTdHJpbmcgcmVzdWx0U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEludmFsaWRh
dGVTdHJpbmdDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2Fs
bGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0aW9uLCBz
dHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIENvbXB1dGVkUGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4g
cGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBi
b29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBF
ZGl0aW5nUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2so
V2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFs
UmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgVm9pZENhbGxiYWNrKFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQorICAgIERhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2Ug
cmVzdWx0RGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW1hZ2VDYWxs
YmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3Vs
dFN0cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgSW52YWxpZGF0ZVN0
cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNjcmlwdFZh
bHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIGJvb2wgaGFkRXhjZXB0
aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyBkZXRhaWxzLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmlu
dGluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBFZGl0aW5nUmFuZ2VDYWxsYmFjayhz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxS
YW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJL
aXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2Ug
YWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRm9udEF0U2VsZWN0aW9uQ2Fs
bGJhY2soU3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNN
dWx0aXBsZUZvbnRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEF0dHJpYnV0ZWRTdHJpbmdG
b3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmlu
ZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250
cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgR2VzdHVyZUNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKLSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9h
dFJlY3Q+IHRleHRSZWN0cywgU3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2
NF90IHRyYWl0cywgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBBdXRvY29ycmVjdGlvbkNvbnRl
eHRDYWxsYmFjayhTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIG1hcmtlZFRleHQsIFN0cmluZyBz
ZWxlY3RlZFRleHQsIFN0cmluZyBhZnRlclRleHQsIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRf
dCBsZW5ndGgsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uQ29udGV4dENhbGxi
YWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBTdHJpbmcgYWZ0ZXJU
ZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFRv
dWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywg
dWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEF1dG9j
b3JyZWN0aW9uRGF0YUNhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+IHRleHRSZWN0
cywgU3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIHVpbnQ2NF90IHRyYWl0cywgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQXV0b2NvcnJlY3Rpb25Db250ZXh0Q2Fs
bGJhY2soU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0
ZWRUZXh0LCBTdHJpbmcgYWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVu
Z3RoLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25Db250ZXh0
Q2FsbGJhY2soU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9yZVRleHQsIFN0cmluZyBh
ZnRlclRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludGVycHJldEtl
eUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBib29sIGlzQ2hhckV2ZW50
KSAtPiAoYm9vbCBoYW5kbGVkKQogICAgIERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0
cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9u
KQogICAgIFNhdmVJbWFnZVRvTGlicmFyeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZSwgdWludDY0X3Qgc2l6ZSkKQEAgLTE4NCwxNyArMTg0LDE3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgRGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCkKICAgICBEaWRDb21wbGV0ZVN5bnRoZXRpY0NsaWNrKCkKICAgICBEaXNhYmxlRG91
YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQpCi0g
ICAgRHJhd1RvUERGQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0aW9uUmVjdHNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6
U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IERyYXdUb1BERkNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSBwZGZEYXRhLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrKFZlY3RvcjxX
ZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0cywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIFNl
dERhdGFEZXRlY3Rpb25SZXN1bHQoc3RydWN0IFdlYktpdDo6RGF0YURldGVjdGlvblJlc3VsdCBk
YXRhRGV0ZWN0aW9uUmVzdWx0KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFByaW50
RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBj
YWxsYmFja0lEKQorICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIE1hY2hTZW5kUmlnaHRDYWxsYmFjayhXZWJDb3JlOjpNYWNoU2Vu
ZFJpZ2h0IHNlbmRSaWdodCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBNYWNoU2VuZFJpZ2h0
Q2FsbGJhY2soV2ViQ29yZTo6TWFjaFNlbmRSaWdodCBzZW5kUmlnaHQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2Uo
ZG91YmxlIHNjYWxlRmFjdG9yKQpAQCAtNDgyLDggKzQ4Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAKICAgICBEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihzdHJ1Y3QgV2ViQ29yZTo6TGlua0ljb24gaWNvbiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLSAgICBGaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpOworICAgIEdldExvYWREZWNpc2lvbkZv
ckljb24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBEaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjE4Nzg0KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURp
Y3Rpb25hcnlMb29rCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8R2VzdHVyZUNhbGxiYWNr
PihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNDIsNyArMTQyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdAogICAgIGNhbGxiYWNrLT5w
ZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJl
U3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFjayhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90
IGZsYWdzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXND
YWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMs
IHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxs
YmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAg
ICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnRvdWNoZXNDYWxsYmFjayhjb25zdAogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUocG9pbnQsIHRvdWNoZXMsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9h
dFJlY3Q+JiByZWN0cywgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZmxvYXQgZm9udFNpemUsIHVp
bnQ2NF90IGZvbnRUcmFpdHMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6YXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0
UmVjdD4mIHJlY3RzLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBmbG9hdCBmb250U2l6ZSwgdWlu
dDY0X3QgZm9udFRyYWl0cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrPihjYWxs
YmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uRGF0YUNhbAogICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVjdHMsIGZvbnROYW1lLCBmb250U2l6ZSwgZm9udFRy
YWl0cyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2so
Y29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29u
c3QgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0
LCBjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8U2VsZWN0aW9uQ29udGV4dENhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxi
YWNrKSB7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdGlvbkNv
bnRleHRDYWxsYgogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
c2VsZWN0ZWRUZXh0LCBiZWZvcmVUZXh0LCBhZnRlclRleHQpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6YXV0b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBiZWZvcmVU
ZXh0LCBjb25zdCBTdHJpbmcmIG1hcmtlZFRleHQsIGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0
LCBjb25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgdWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxl
bmd0aCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjphdXRvY29ycmVj
dGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCBTdHJpbmcmIGJlZm9yZVRleHQsIGNvbnN0IFN0cmlu
ZyYgbWFya2VkVGV4dCwgY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmluZyYg
YWZ0ZXJUZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXV0
b2NvcnJlY3Rpb25Db250ZXh0Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJh
Y2spIHsKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2NvcnJlY3Rp
b25Db250ZXh0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShi
ZWZvcmVUZXh0LCBtYXJrZWRUZXh0LCBzZWxlY3RlZFRleHQsIGFmdGVyVGV4dCwgbG9jYXRpb24s
IGxlbmd0aCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3Rpb25SZWN0c0NhbGxiYWNr
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYgc2VsZWN0aW9uUmVjdHMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0aW9uUmVjdHNDYWxs
YmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mIHNlbGVjdGlvblJlY3Rz
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJh
Y2tzLnRha2U8U2VsZWN0aW9uUmVjdHNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFj
YWxsYmFjaykgewpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RX
aXRoR2VzdHVyZShjb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJlKHBvaW50
LCAodWludDMyX3QpZ3JhbnVsYXJpdHksIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBA
IC00NDEsNyArNDQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhU
bwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMocG9pbnQsIHRv
dWNoZXMsIGJhc2VJc1N0YXJ0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogICAgIApAQCAt
NDYyLDcgKzQ2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb24K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9j
b3JyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NzMsNyArNDczLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oYwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0
ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOwogfQogCkBAIC01MDIsNyArNTAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFRl
eHRXaXRoR3JhbnVsYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVs
YXJpdHlBdFBvaW50KHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0
Qm91bmQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5v
ZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogICAgIApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZWxlY3RQb3NpdGlvbkF0UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlYwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOwogfQogCkBAIC01NTcsNyArNTU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNl
bGVjdGlvbldpdGhFeAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CiAgICAgCiB9CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KHBvaW50LCBncmFudWxhcml0eSwg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiAg
ICAgCiB9CkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REaWN0
YXRpb25Db250ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERpY3RhdGlvbkNvbnRleHQoY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNjA4
LDcgKzYwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Db250ZXh0KFcKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0
V2l0aFR3b1RvdWNoZXMoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoVHdvVG91Y2hlcyhm
cm9tLCB0bywgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIApAQCAtNzIwLDcgKzcyMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVj
dHNGb3JHcmFudWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5
V2l0aFNlbGVjdGlvbk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBv
ZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTczMSw3ICs3MzEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3RpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KG9mZnNldCwgdGV4dCwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3Zl
U2VsZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEFzc2lzdGVkTm9k
ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9jdXNOZXh0QXNzaXN0ZWROb2RlKGlzRm9yd2FyZCwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTAzNywxMyArMTAzNywxMyBAQCB1aW50
MzJfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByCiAgICAgfQogCiAgICAgdWludDMy
X3QgcGFnZUNvdW50ID0gMDsKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICB1c2luZyBNZXNzYWdlID0gTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1
dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGOwogICAgIHByb2Nlc3MoKS5zZW5kU3luYyhN
ZXNzYWdlKGZyYW1lSUQsIHByaW50SW5mbywgY2FsbGJhY2tJRCksIE1lc3NhZ2U6OlJlcGx5KHBh
Z2VDb3VudCksIG1fcGFnZUlEKTsKICAgICByZXR1cm4gcGFnZUNvdW50OwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhd1RvUERGQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBw
ZGZEYXRhLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYXdUb1BE
RkNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERyYXdU
b1BERkNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFjayk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcu
bW0JKHJldmlzaW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQ
cmludGluZ1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4MSwxMCArMjgxLDEwIEBAIC0gKHZv
aWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY28KICAgICAgICAgICAgIHZpZXctPl9w
cmludGluZ0NhbGxiYWNrQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICB9CiAgICAgfSk7
Ci0gICAgX2V4cGVjdGVkUHJpbnRDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Cisg
ICAgX2V4cGVjdGVkUHJpbnRDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCkudG9JbnRl
Z2VyKCk7CiAKICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKLSAgICBjb250ZXh0LT5jYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBjb250ZXh0LT5jYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0ludGVnZXIoKTsKIAogICAgIF93ZWJGcmFtZS0+cGFn
ZSgpLT5kcmF3UGFnZXNUb1BERihfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbywgZmlyc3RQYWdl
IC0gMSwgbGFzdFBhZ2UgLSBmaXJzdFBhZ2UgKyAxLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CkBA
IC0zNDQsNyArMzQ0LDcgQEAgLSAoQk9PTClfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0RGVsZXRlcihj
b250ZXh0KTsKICAgICAgICAgcGFnZURpZENvbXB1dGVQYWdlUmVjdHMocGFnZVJlY3RzLCB0b3Rh
bFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnRleHQpOwogICAgIH0pOwotICAgIF9leHBlY3Rl
ZENvbXB1dGVkUGFnZXNDYWxsYmFjayA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgX2V4
cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKS50b0lu
dGVnZXIoKTsKICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKICAgICBjb250ZXh0LT5jYWxsYmFj
a0lEID0gX2V4cGVjdGVkQ29tcHV0ZWRQYWdlc0NhbGxiYWNrOwogCkBAIC01MjEsMTEgKzUyMSwx
MSBAQCAtICh2b2lkKV9kcmF3UHJldmlldzooTlNSZWN0KW5zUmVjdAogICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0RGVsZXRlcihj
b250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgcGFnZURpZERyYXdUb0ltYWdlKGltYWdlSGFu
ZGxlLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBfbGF0
ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2sgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAg
ICAgICAgICAgICAgIF9sYXRlc3RFeHBlY3RlZFByZXZpZXdDYWxsYmFjayA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCkudG9JbnRlZ2VyKCk7CiAgICAgICAgICAgICAgICAgX2V4cGVjdGVkUHJldmll
d0NhbGxiYWNrcy5hZGQoX2xhdGVzdEV4cGVjdGVkUHJldmlld0NhbGxiYWNrLCBzY2FsZWRQcmlu
dGluZ1JlY3QpOwogCiAgICAgICAgICAgICAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCkudG9JbnRlZ2VyKCk7CiAKICAgICAgICAgICAgICAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+
ZHJhd1JlY3RUb0ltYWdlKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRp
b24gcHJpbnRJbmZvXSksIHNjYWxlZFByaW50aW5nUmVjdCwgaW1hZ2VTaXplLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDIxODc4NCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEsMTIgKzE4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmli
dXRlZFN1YnN0cmluZ0ZvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAKICAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxs
YmFjayhjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiBzdHJpbmcsIGNvbnN0IEVkaXRpbmdSYW5nZSYg
YWN0dWFsUmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YXR0
cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0
cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhhY3R1YWxSYW5nZS5pc1ZhbGlkKCkp
OwogCkBAIC0yMDcsMTIgKzIwNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2VsZWN0
aW9uKFdURjo6CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIAog
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb250QXRTZWxlY3Rpb24oY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVj
dGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9v
bCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8Rm9udEF0U2VsZWN0aW9uQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJh
Y2spIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc0MCw2ICszNzQw
LDggQEAKIAkJOTlDODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRD
ODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElBdXRvbWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0b21hdGlvbkRlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBD
YWxsYmFja0lELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrSUQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5
IC8qIE9wdGlvbmFsQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBPcHRpb25hbENhbGxiYWNrSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1
NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIENoaWxkUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENoaWxkUHJvY2Vzc01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblBy
b2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDkyNyw2ICs0OTI5LDggQEAKIAkJCQk0RjYwMTQzMDE1NUM1QTMyMDAx
RkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovLAogCQkJCUJDRjE4NjM3MTY3RDA3MUUw
MEExQTg1QSAvKiBDYWNoZU1vZGVsLmNwcCAqLywKIAkJCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEy
NzggLyogQ2FjaGVNb2RlbC5oICovLAorCQkJCTlCQzU5RDZDMUVGQ0NDQjYwMDFFOEQwOSAvKiBD
YWxsYmFja0lELmggKi8sCisJCQkJOUJDNTlENkQxRUZDREM2RDAwMUU4RDA5IC8qIE9wdGlvbmFs
Q2FsbGJhY2tJRC5oICovLAogCQkJCTFBMkQ5NTZFMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFBy
b2Nlc3MuY3BwICovLAogCQkJCTFBMkQ5NTZEMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nl
c3MuaCAqLywKIAkJCQk1MTY0QzA5NDFCMDVCNzU3MDA0RjEwMkEgLyogQ2hpbGRQcm9jZXNzLm1l
c3NhZ2VzLmluICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjE4Nzg0KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkNvb2tpZU1hbmFnZXI6OldlYkNvb2tpZU1h
bmFnZXIoQ2hpbGQKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CiAKLXZv
aWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0bmFtZXM7CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQpAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUFsbENvb2tpZXMoCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoKnN0b3JhZ2VT
ZXNzaW9uKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWUoU2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBDb29raWUmIGNvb2tpZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlm
IChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZShj
b29raWUpOwpAQCAtODcsMTYgKzg3LDE1IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRl
Q29va2llKFNlc3MKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6RGlkRGVsZXRlQ29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoU2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCB1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IHRpbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpCiAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKCpzdG9yYWdlU2Vzc2lvbiwgdGltZSk7CiAKLSAgICBpZiAoY2FsbGJhY2tJRCkKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRp
ZERlbGV0ZUNvb2tpZXMoY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWREZWxldGVDb29raWVzKGNhbGxiYWNrSUQp
LCAwKTsKIH0KIAotdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRBbGxDb29raWVzKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEFsbENvb2tpZXMoU2Vzc2lvbklEIHNlc3Npb25JRCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQpAQCAtMTA1LDcgKzEwNCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0QWxsQ29va2ll
cyhTZXMKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6RGlkR2V0Q29va2llcyhjb29raWVzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
Q29va2llTWFuYWdlcjo6Z2V0Q29va2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0Q29v
a2llcyhTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNz
aW9uSUQpKQpAQCAtMTE0LDIyICsxMTMsMjAgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRD
b29raWVzKFNlc3NpbwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpEaWRHZXRDb29raWVzKGNvb2tpZXMsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgQ29va2llJiBjb29raWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBDb29raWUmIGNvb2tpZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChh
dXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldENvb2tpZShjb29raWUp
OwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRDb29raWVzKGNhbGxiYWNrSUQpLCAwKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlk
U2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlcjo6
c2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29v
a2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJM
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVz
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29r
aWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3Jh
Z2VTZXNzaW9uLT5zZXRDb29raWVzKGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKTsKIAot
ICAgIGlmIChjYWxsYmFja0lEKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkU2V0Q29va2llcyhjYWxsYmFja0lEKSwgMCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZFNldENv
b2tpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6Om5vdGlm
eUNvb2tpZXNEaWRDaGFuZ2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTE1MywxNSArMTUwLDE1
IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6c3RvcE9ic2VydmluZ0Nvb2sKICAgICAgICAgV2Vi
Q29yZTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKnN0b3JhZ2VTZXNzaW9uKTsKIH0KIAot
dm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29r
aWVNYW5hZ2VyOjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgcG9saWN5LCBPcHRpb25hbENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBwbGF0Zm9y
bVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KTsKIAogICAgIGlmIChjYWxsYmFja0lE
KQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6RGlkU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjYWxsYmFja0lEKSwgMCk7CisgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpEaWRTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGNhbGxiYWNrSUQuY2FsbGJhY2tJRCgpKSwgMCk7CiB9CiAK
LXZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSh1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShwbGF0Zm9ybUdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgY2FsbGJhY2tJRCksIDApOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5oCShyZXZpc2lvbiAyMTg3ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5
ICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNp
bmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSAi
T3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPGNocm9ubz4KQEAgLTU2
LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7CiAKLSAgICB2b2lkIHNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3ksIE9wdGlvbmFsQ2FsbGJhY2tJRCk7
CiAKICNpZiBVU0UoU09VUCkKICAgICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNv
bnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKTsKQEAgLTY4LDIw
ICs3MCwyMCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKFdlYkNvcmU6OlNlc3Npb25JRCwgQ2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIGRlbGV0ZUNv
b2tpZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6Q29va2llJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9p
ZCBkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXZWJDb3JlOjpTZXNzaW9uSUQsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQsIENhbGxiYWNrSUQpOwogCi0gICAgdm9p
ZCBzZXRDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDb29raWUmLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgbWFpbkRvY3VtZW50VVJMLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIGdldEFsbENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNldENvb2tp
ZShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYsIENhbGxiYWNrSUQp
OworICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBtYWluRG9jdW1lbnRVUkwsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0QWxsQ29va2llcyhX
ZWJDb3JlOjpTZXNzaW9uSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29va2llcyhXZWJD
b3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIENhbGxiYWNrSUQpOwogCiAgICAg
dm9pZCBwbGF0Zm9ybVNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeSk7Ci0gICAgdm9pZCBnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgZ2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShDYWxsYmFja0lEKTsK
ICAgICBIVFRQQ29va2llQWNjZXB0UG9saWN5IHBsYXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBv
bGljeSgpOwogCiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6
U2Vzc2lvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAy
MTg3ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQsMTkgKzI0LDE5IEBACiAgKi8K
ICAKICBtZXNzYWdlcyAtPiBXZWJDb29raWVNYW5hZ2VyIHsKLSAgICB2b2lkIEdldEhvc3RuYW1l
c1dpdGhDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgdm9pZCBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICB2b2lkIERl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgaG9zdG5hbWUpCiAgICAgdm9pZCBEZWxldGVBbGxDb29raWVzKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiAKLSAgICB2b2lkIFNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNvb2tpZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICB2b2lkIFNldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6
VVJMIG1haW5Eb2N1bWVudFVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIEdldEFs
bENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLSAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6VVJMIHVybCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0ZUNvb2tp
ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q29va2llIGNv
b2tpZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICB2b2lk
IFNldENvb2tpZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6
Q29va2llIGNvb2tpZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgdm9pZCBT
ZXRDb29raWVzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1l
bnRVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIHZvaWQgR2V0QWxsQ29v
a2llcyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICB2b2lkIEdldENvb2tpZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
dm9pZCBEZWxldGVDb29raWUoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdl
YkNvcmU6OkNvb2tpZSBjb29raWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IHZvaWQgRGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAotICAgIHZvaWQgU2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSh1aW50MzJfdCBwb2xpY3ksIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgdm9pZCBH
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHVpbnQzMl90IHBvbGljeSwgV2ViS2l0OjpPcHRpb25h
bENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICB2b2lkIEdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgCiAgICAgdm9pZCBTdGFydE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICB2
b2lkIFN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjE4
Nzg0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTAsMTYgKzE4MTAsMTcgQEAg
Ym9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbgogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBMaW5rSWNvbiYgaWNvbiwg
dWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1fZnJh
bWUtPnBhZ2UoKSB9KQotICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbiwgY2FsbGJhY2tJRCkpOworICAgICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldExvYWREZWNpc2lvbkZvcklj
b24oaWNvbiwgQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIoY2FsbGJhY2tJRCkpKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihjYWxsYmFja0lkZW50aWZpZXIpOwogICAgIGlm
IChXZWJQYWdlKiB3ZWJQYWdlIHsgbV9mcmFtZS0+cGFnZSgpIH0pIHsKICAgICAgICAgaWYgKGRh
dGEpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
bmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSB9KSk7CisgICAgICAg
ICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGlu
Z0ljb24oY2FsbGJhY2tJRCwgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
LT5kYXRhKCkpLCBkYXRhLT5zaXplKCkgfSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24o
Y2FsbGJhY2tJZGVudGlmaWVyLCB7IG51bGxwdHIsIDAgfSkpOworICAgICAgICAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxi
YWNrSUQsIHsgbnVsbHB0ciwgMCB9KSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2lu
Z0FyZWEuY3BwCShyZXZpc2lvbiAyMTg3ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
OCw3ICsxMzgsNyBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWluCiAg
ICAgfQogfQogCi1ib29sIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCitib29sIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OmZvcmNl
UmVwYWludEFzeW5jKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICByZXR1cm4gbV9sYXll
clRyZWVIb3N0ICYmIG1fbGF5ZXJUcmVlSG9zdC0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJ
RCk7CiB9CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjpk
ZXZpY2VPclBhZwogfQogI2VuZGlmCiAKLXZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sLCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sLCBj
b25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mKQogewogICAgIGlmIChjaGFuZ2VkICYgQWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKSB7CiAgICAgICAgIGlmIChtX3dlYlBhZ2UuaXNWaXNpYmxlKCkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZERyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zy
b3plbjsgfQogICAgIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0KCk7IH0KICAgICB2b2lkIGZvcmNlUmVwYWlu
dCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJh
Y2tJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgc2V0UGFpbnRpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwog
ICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpIG92
ZXJyaWRlOwpAQCAtNjgsNyArNjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkZXN0cm95TmF0
aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKICNlbmRpZgog
Ci0gICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OkZsYWdzLCBib29sIC8qIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSAqLywgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJyaWRlOworICAgIHZvaWQgYWN0
aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCAv
KiB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUgKi8sIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lE
PiYgLyogY2FsbGJhY2tJRHMgKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgYXR0YWNoVmlld092ZXJs
YXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBsYXllckhvc3REaWRGbHVzaExheWVycygpIG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmgJKHJldmlzaW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBU
aGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgogICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFja2dy
b3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBh
aW50KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8q
Y2FsbGJhY2tJRCovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJl
cGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBs
YXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIExheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdCB7IHJldHVybiAwOyB9CkBA
IC0xMTYsNyArMTE3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQWZ0
ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYp
OwogCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICov
LCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBjYWxsYmFja0lEcyAqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MsIGJvb2wgLyogd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlICovLCBjb25zdCBWZWN0
b3I8Q2FsbGJhY2tJRD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9k
ZShMYXllckhvc3RpbmdNb2RlKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9s
YXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xNzQsNyAr
MTc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNr
SUQodWludDY0X3QgY2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RF
RF9YQ09NUE9TSVRFX1dJTkRPVykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIx
ODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBtZXNzYWdlcyAtPiBE
cmF3aW5nQXJlYSB7CiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBs
YXllcklELCBTdHJpbmcga2V5LCBkb3VibGUgc3RhcnRUaW1lKQogICAgIEFjY2VsZXJhdGVkQW5p
bWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXkpCiAgICAgCi0gICAgQWRk
VHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgQWRkVHJhbnNh
Y3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0o
WDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgJKHJldmlz
aW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogCisjaW5jbHVkZSAiQ2Fs
bGJhY2tJRC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1T
Y3JlZW4uaD4KQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
b25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBh
aW50KCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCAv
KmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZm9yY2VS
ZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpID0gMDsK
IApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMjE4Nzg0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBXZWJQ
YWdlOjplbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcgogdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxp
emVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAg
IGlmIChtX2FjdGl2aXR5U3RhdGUgIT0gcGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKQotICAgICAg
ICBzZXRBY3Rpdml0eVN0YXRlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSwgZmFsc2UsIFZlY3Rv
cjx1aW50NjRfdD4oKSk7CisgICAgICAgIHNldEFjdGl2aXR5U3RhdGUocGFyYW1ldGVycy5hY3Rp
dml0eVN0YXRlLCBmYWxzZSwgVmVjdG9yPENhbGxiYWNrSUQ+KCkpOwogICAgIGlmIChtX2xheWVy
SG9zdGluZ01vZGUgIT0gcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKQogICAgICAgICBzZXRM
YXllckhvc3RpbmdNb2RlKHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSk7CiB9CkBAIC0xOTIx
LDcgKzE5MjEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvb3RlckJhbm5lckhlaWdodEZvclRlCiAK
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCi12b2lkIFdlYlBhZ2U6OnRha2VTbmFwc2hvdChJ
bnRSZWN0IHNuYXBzaG90UmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25z
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp0YWtlU25hcHNob3QoSW50UmVj
dCBzbmFwc2hvdFJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFNuYXBzaG90T3B0aW9ucyBzbmFwc2hvdE9wdGlv
bnMgPSBzdGF0aWNfY2FzdDxTbmFwc2hvdE9wdGlvbnM+KG9wdGlvbnMpOwogICAgIHNuYXBzaG90
T3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNTaGFyZWFibGU7CkBAIC0yNDIyLDcgKzI0MjIsNyBA
QCB2b2lkIFdlYlBhZ2U6OmtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGtleWJvYXJkRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnZh
bGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGJvb2wgaXNFbmFibGVkID0gZmFs
c2U7CiAgICAgaW50MzJfdCBzdGF0ZSA9IDA7CkBAIC0yNjI1LDcgKzI2MjUsNyBAQCB2b2lkIFdl
YlBhZ2U6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiAgICAgICAgIHZpZXctPndpbGxFbmRMaXZl
UmVzaXplKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2Fy
ZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNldEluaXRpYWxGb2N1cyhi
b29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGV2ZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKQEAgLTI2OTAsNyArMjY5MCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlz
aWJpbGl0eURpZENoYW5nZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5
U3RhdGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNhbGxiYWNrSURzKQor
dm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2
aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8
Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewogICAgIEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNo
YW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwogICAgIG1fYWN0aXZpdHlT
dGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0yODQxLDcgKzI4NDEsNyBAQCBLZXlib2FyZFVJTW9k
ZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJv
YXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVs
bCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nl
c3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBk
b24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KQEAgLTI4NjIs
MTQgKzI4NjIsMTQgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoYwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRh
UmVmZXJlbmNlLCBoYWRFeGNlcHRpb24sIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSBtX21haW5GcmFtZS0+Y29udGVudHNBc1N0cmluZygp
OwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0
U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCi12b2lkIFdlYlBh
Z2U6OmdldENvbnRlbnRzQXNNSFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBidWZmZXIgPSBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKG1fcGFnZS5n
ZXQoKSk7CiAKQEAgLTI4ODAsNyArMjg4MCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNB
c01IVE1MRGF0YSh1aW4KIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldFJlbmRlclRyZWVF
eHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24oKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0cmluZ0NhbGxi
YWNrKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwpAQCAtMjg5Niw3ICsyODk2LDcgQEAgc3Rh
dGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcAogICAgIHJldHVybiAwOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gZGF0YTsKQEAgLTI5MTIsNyArMjkxMiw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGEKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZvY3VzZWRPck1haW5GcmFtZSA9IFdlYkZy
YW1lOjpmcm9tQ29yZUZyYW1lKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkpOwogICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUt
PnNlbGVjdGlvbkFzU3RyaW5nKCk7CkBAIC0yOTIxLDcgKzI5MjEsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTdHJpbmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsK
ICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJh
bWUoZnJhbWVJRCkpCkBAIC0yOTMwLDcgKzI5MzAsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJj
ZUZvckZyYW1lKHVpbnQ2NF90CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJp
bmdDYWxsYmFjayhyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAtMjk2Miw3ICsyOTYyLDcgQEAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YQogICAgIHJldHVybiAmc3VicmVz
b3VyY2UtPmRhdGEoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1l
KGZyYW1lSUQpKSB7CkBAIC0yOTgxLDcgKzI5ODEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZSh1CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRh
Q2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwpAQCAtMzAwNCw3ICszMDA0LDcgQEAgdm9pZCBXZWJQYWdl
Ojpmb3JjZVJlcGFpbnRXaXRob3V0Q2FsbGJhYwogICAgIG1fZHJhd2luZ0FyZWEtPmZvcmNlUmVw
YWludCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIGlmIChtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnRBc3luYyhjYWxsYmFja0lEKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDM4Myw3ICs0MzgzLDcgQEAgdm9pZCBXZWJQYWdlOjplbmRQ
cmludGluZygpCiAgICAgbV9wcmludENvbnRleHQgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlBh
Z2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpjb21w
dXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFZlY3RvcjxJbnRSZWN0PiBy
ZXN1bHRQYWdlUmVjdHM7CiAgICAgZG91YmxlIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmlu
dGluZyA9IDE7CkBAIC00NDEyLDcgKzQ0MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nSW1wCiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZTo6
ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNp
emUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lID8gZnJh
bWUtPmNvcmVGcmFtZSgpIDogMDsKQEAgLTQ0NjEsNyArNDQ2MSw3IEBAIHZvaWQgV2ViUGFnZTo6
ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkltYWdlQ2FsbGJhY2soaGFuZGxlLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBw
ZGZQYWdlRGF0YTsKICAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBm
aXJzdCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKQEAgLTQ1MTksNyArNDUxOSw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKHVpbnQ2NF8KIH0KIAogI2VsaWYgUExBVEZPUk0oR1RL
KQotdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBiZWdpblByaW50
aW5nKGZyYW1lSUQsIHByaW50SW5mbyk7CiAgICAgaWYgKG1fcHJpbnRDb250ZXh0ICYmIG1fcHJp
bnRPcGVyYXRpb24pIHsKQEAgLTQ1MzAsNyArNDUzMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1Bh
Z2VzRm9yUHJpbnRpbmcodWludDYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZv
aWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoUHJp
bnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQcmludEZpbmlzaGVkQ2FsbGJhY2so
ZXJyb3IsIGNhbGxiYWNrSUQpKTsKICAgICBtX3ByaW50T3BlcmF0aW9uID0gbnVsbHB0cjsKQEAg
LTQ4MzcsNyArNDgzNyw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0
cmkKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKHRleHQpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlQXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViUGFnZTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKIApAQCAtNDg1Miw3ICs0ODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRN
YXJrZWRSYW5nZUFzeW5jKHVpbnQ2NAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RWRpdGluZ1JhbmdlQ2FsbGJhY2soRWRpdGluZ1JhbmdlKGxvY2F0aW9uLCBsZW5ndGgpLCBjYWxs
YmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIApAQCAtNDg2Nyw3ICs0ODY3LDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRTZWxlY3RlZFJhbmdlQXN5bmModWludAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RWRpdGluZ1JhbmdlQ2FsbGJhY2soRWRpdGluZ1JhbmdlKGxvY2F0
aW9uLCBsZW5ndGgpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVy
SW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5j
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIHVpbnQ2NF90IGluZGV4ID0gbm90Rm91bmQ7CiAKQEAgLTQ4ODUsNyArNDg4NSw3IEBA
IHZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW4KICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soaW5kZXgsIGNhbGxiYWNrSUQpKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0
IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5n
ZSYgZWRpdGluZ1JhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAg
ICBJbnRSZWN0IHJlc3VsdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZSgwLCAwKSk7CkBAIC01Njky
LDcgKzU2OTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyCiAg
ICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRCeXRlY29kZVByb2ZpbGUoQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogewogICAgIGlmICghY29tbW9uVk0oKS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpIHsK
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdHJpbmdDYWxsYmFjayhTdHJp
bmcoKSwgY2FsbGJhY2tJRCkpOwpAQCAtNTcwNCw3ICs1NzA0LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRCeXRlY29kZVByb2ZpbGUodWludDY0XwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U3RyaW5nQ2FsbGJhY2socmVzdWx0LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICNpZiBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgU2FtcGxpbmdQcm9maWxlciog
c2FtcGxpbmdQcm9maWxlciA9IGNvbW1vblZNKCkuc2FtcGxpbmdQcm9maWxlcigpOwpAQCAtNTg4
NywxMCArNTg4NywxMCBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAj
ZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVj
aXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENh
bGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lE
KQogewogICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5k
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2Fs
bGJhY2tJRCk7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJhY2tJRC50
b0ludGVnZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQo
Ym9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjE4Nzg0KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIkVkaXRp
bmdSYW5nZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudC5oIgpAQCAt
MzksNiArNDAsNyBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAi
T3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgpAQCAtNTQyLDUwICs1
NDQsNTAgQEAgcHVibGljOgogICAgIHZvaWQgaW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAKICAgICB2b2lkIGJsdXJBc3Npc3Rl
ZE5vZGUoKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJf
dCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0
aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVzLCBib29s
IGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUJsb2NrU2VsZWN0aW9u
V2l0aFRvdWNoKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2gsIHVpbnQz
Ml90IGhhbmRsZVBvc2l0aW9uKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVp
bnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBleHRl
bmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkpOwogICAgIHZvaWQgc2VsZWN0V29yZEJh
Y2t3YXJkKCk7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0
eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlv
biwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMy
X3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9u
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwg
dWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50
MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxh
cml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0
eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBt
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlv
bkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
QXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJl
Y3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNl
bGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRl
U2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgQ2FsbGJhY2tJRCk7CiAKLSAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xk
VGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2b2lkIHJlcGxhY2VTZWxlY3RlZFRl
eHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwotICAgIHZv
aWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29y
cmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBhcHBseUF1dG9jb3JyZWN0
aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0
YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3luY0FwcGx5QXV0
b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsVGV4dCwgYm9vbCYgY29ycmVjdGlvbkFwcGxpZWQpOwotICAgIHZvaWQgcmVxdWVzdEF1dG9j
b3JyZWN0aW9uQ29udGV4dCh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlcXVlc3RB
dXRvY29ycmVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRBdXRvY29ycmVj
dGlvbkNvbnRleHQoU3RyaW5nJiBiZWZvcmVUZXh0LCBTdHJpbmcmIG1hcmtlZFRleHQsIFN0cmlu
ZyYgc2VsZWN0ZWRUZXh0LCBTdHJpbmcmIGFmdGVyVGV4dCwgdWludDY0X3QmIGxvY2F0aW9uLCB1
aW50NjRfdCYgbGVuZ3RoKTsKICAgICB2b2lkIGdldFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmLCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiYpOwogICAgIHZvaWQgcmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHN0YXJ0SW50ZXJhY3Rpb25X
aXRoRWxlbWVudEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lk
IHN0b3BJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50
MzJfdCBhY3Rpb24pOwotICAgIHZvaWQgZm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3
YXJkLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGZvY3VzTmV4dEFzc2lzdGVkTm9k
ZShib29sIGlzRm9yd2FyZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVW
YWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1i
ZXIoZG91YmxlKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWludDMy
X3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbik7CiAgICAgV2ViQ29yZTo6SW50
UmVjdCByZWN0Rm9yRWxlbWVudEF0SW50ZXJhY3Rpb25Mb2NhdGlvbigpOwogICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uQXBwZWFyYW5jZSgpOwotICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dCh1
aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKLSAgICB2b2lkIGdldFJlY3RzRm9yR3Jh
bnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90LCBpbnQzMl90LCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChp
bnQzMl90LCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdl
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90LCBpbnQzMl90
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4
dChpbnQzMl90LCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICNpZiBFTkFCTEUoSU9TX1RP
VUNIX0VWRU5UUykKICAgICB2b2lkIGRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFdmVudHMoY29u
c3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBxdWV1ZSk7CiAjZW5kaWYKIAogICAgIHZvaWQg
Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGV4
ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJpbmcmLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0lEKTsKIAogICAgIFNlY29uZHMgZXZlbnRUaHJvdHRsaW5nRGVsYXko
KSBjb25zdDsKIApAQCAtNjczLDE3ICs2NzUsMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZENv
bXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpOwogCiAgICAgdm9pZCBpbnNlcnRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50
UmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgPSBmYWxzZSwgdWludDMyX3QgZWRpdGluZ1Jh
bmdlSXNSZWxhdGl2ZVRvID0gKHVpbnQzMl90KUVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbzo6RWRp
dGFibGVSb290LCBib29sIHN1cHByZXNzU2VsZWN0aW9uVXBkYXRlID0gZmFsc2UpOwotICAgIHZv
aWQgZ2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdl
dFNlbGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGNoYXJh
Y3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhj
b25zdCBFZGl0aW5nUmFuZ2UmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldE1h
cmtlZFJhbmdlQXN5bmMoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5
bmMoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRp
dGluZ1JhbmdlJiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVu
dFJhbmdlKTsKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2Nh
dGlvbnMsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXAgPSBmYWxzZSk7Ci0gICAgdm9pZCBhdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbih1aW50NjRfdCBj
YWxsYmFja0lEKTsKKyAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZm9udEF0
U2VsZWN0aW9uKENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlYWRTZWxlY3Rpb25G
cm9tUGFzdGVib2FyZChjb25zdCBXVEY6OlN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGJvb2wmIHJl
c3VsdCk7CkBAIC03NDYsMTggKzc0OCwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2luUHJp
bnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQ
cmludGluZygpOwotICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBj
b21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbCh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IHBhZ2VSZWN0cywgZG91YmxlJiB0b3RhbFNjYWxlRmFjdG9yKTsKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9Q
REYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVp
bnQzMl90IGNvdW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMy
X3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOwogI2lm
IFBMQVRGT1JNKElPUykKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1Rv
UERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNr
SUQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3
VG9QREY6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGlu
Z0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBDYWxsYmFj
a0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJh
d1RvUERGOjpEZWxheWVkUmVwbHk+JiYpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCi0g
ICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZEZpbmlzaFByaW50T3Bl
cmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRp
b24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAK
ICAgICB2b2lkIGFkZFJlc291cmNlUmVxdWVzdCh1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTkxNSw4ICs5MTcsOCBAQCBwdWJsaWM6CiAgICAgUmVm
PFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJDb3JlOjpG
cmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJE
b2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldEJ5dGVjb2Rl
UHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFNhbXBsaW5nUHJvZmls
ZXJPdXRwdXQodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRCeXRlY29kZVByb2Zp
bGUoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KENhbGxi
YWNrSUQpOwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVM
RVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCiAgICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVOdW1iZXJD
bGljayhjb25zdCBTdHJpbmcmIG51bWJlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKQEAg
LTk2OSw3ICs5NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsK
ICNlbmRpZgogCi0gICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAg
ICB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJ
RCBsb2FkSWRlbnRpZmllciwgT3B0aW9uYWxDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldFVzZUlj
b25Mb2FkaW5nQ2xpZW50KGJvb2wpOwogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBA
IC0xMDU5LDExICsxMDYxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnb0JhY2sodWludDY0X3Qg
bmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwogICAgIHZvaWQgdHJ5UmVzdG9yZVNjcm9s
bFBvc2l0aW9uKCk7Ci0gICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29s
IGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29s
IGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxz
ZSk7CiAgICAgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBzZXRBY3Rpdml0
eVN0YXRlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWdzLCBib29sIHdhbnRzRGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpOwotICAg
IHZvaWQgdmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKKyAgICB2b2lk
IHNldEFjdGl2aXR5U3RhdGUoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MsIGJvb2wgd2Fu
dHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxi
YWNrSURzKTsKKyAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wpOwogCkBAIC0xMTA0LDIwICsxMTA2
LDIwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogICAg
IHZvaWQgdmlld1dpbGxFbmRMaXZlUmVzaXplKCk7CiAKLSAgICB2b2lkIGdldENvbnRlbnRzQXNT
dHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5n
KENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShNSFRNTCkKLSAgICB2b2lkIGdldENvbnRlbnRzQXNN
SFRNTERhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb250ZW50c0FzTUhU
TUxEYXRhKENhbGxiYWNrSUQpOwogI2VuZGlmCi0gICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lk
IGdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlVVJMLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAg
IHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmb3JjZVJl
cGFpbnQodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29y
ZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWlu
dDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDYWxsYmFja0lEKTsKKyAgICB2b2lk
IGdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlVVJMLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb3JjZVJlcGFpbnQo
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFw
c2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywg
Q2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2Uo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIx
ODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewotICAgIFNldEluaXRpYWxGb2N1
cyhib29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5
Ym9hcmRFdmVudCBldmVudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZXRBY3Rpdml0eVN0
YXRlKHVuc2lnbmVkIGFjdGl2aXR5U3RhdGUsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0
YXRlLCBWZWN0b3I8dWludDY0X3Q+IGNhbGxiYWNrSURzKQorICAgIFNldEluaXRpYWxGb2N1cyhi
b29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIFdlYktpdDo6V2ViS2V5Ym9h
cmRFdmVudCBldmVudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2V0QWN0
aXZpdHlTdGF0ZSh1bnNpZ25lZCBhY3Rpdml0eVN0YXRlLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZSwgVmVjdG9yPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRHMpCiAgICAg
U2V0TGF5ZXJIb3N0aW5nTW9kZShlbnVtIFdlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhv
c3RpbmdNb2RlKQogCiAgICAgU2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5k
KQpAQCAtNTQsMzQgKzU0LDM0IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlZFRvUG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQ
b2ludCBwb2ludCkKICAgICBJbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKFdlYkNv
cmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAgQmx1ckFzc2lzdGVkTm9kZSgpCi0gICAgU2VsZWN0
V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0
b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFNlbGVj
dFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0
eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisgICAgVXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQs
IHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaGFuZGxlUG9zaXRpb24pCi0g
ICAgU2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6
SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgU2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6
SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIEV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSkKICAgICBTZWxlY3RXb3Jk
QmFja3dhcmQoKQotICAgIE1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0
UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
dWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBNb3ZlU2VsZWN0
aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90
IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBTZWxlY3RQb3NpdGlvbkF0UG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlv
bih1aW50MzJfdCBkaXJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVk
Tm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBSZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1
aW50NjRfdCBjYWxsYmFja0lEKQorICAgIE1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9m
ZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0VGV4dFdpdGhH
cmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51
bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMy
X3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0
aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFy
eShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIFJlcGxhY2VEaWN0YXRlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdU
ZXh0KQogICAgIFJlcGxhY2VTZWxlY3RlZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdU
ZXh0KQotICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29y
cmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBBcHBseUF1dG9jb3JyZWN0aW9uKFN0
cmluZyBjb3JyZWN0aW9uLCBTdHJpbmcgb3JpZ2luYWxUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQorICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoU3RyaW5nIHRleHRGb3JBdXRvY29ycmVj
dGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQXBwbHlBdXRvY29ycmVj
dGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oU3RyaW5nIGNv
cnJlY3Rpb24sIFN0cmluZyBvcmlnaW5hbFRleHQpIC0+IChib29sIGF1dG9jb3JyZWN0aW9uQXBw
bGllZCkKLSAgICBSZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgUmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSAtPiAoU3RyaW5nIGJl
Zm9yZUNvbnRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJp
bmcgYWZ0ZXJDb250ZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKSAKICAg
ICBHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3Jt
YXRpb25SZXF1ZXN0IHJlcXVlc3QpIC0+IChzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1hdGlvbikKICAgICBSZXF1ZXN0UG9zaXRpb25JbmZvcm1h
dGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0
KQogICAgIFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxlbWVudEF0UG9zaXRpb24oV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQpCiAgICAgU3RvcEludGVyYWN0aW9uKCkKICAgICBQZXJmb3JtQWN0aW9uT25F
bGVtZW50KHVpbnQzMl90IGFjdGlvbikKLSAgICBGb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBp
c0ZvcndhcmQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRm9jdXNOZXh0QXNzaXN0ZWROb2Rl
KGJvb2wgaXNGb3J3YXJkLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRB
c3Npc3RlZE5vZGVWYWx1ZShTdHJpbmcgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlVmFsdWVB
c051bWJlcihkb3VibGUgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1
aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKQpAQCAtOTEsMTMgKzkx
LDEzIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogICAgIEFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKICAgICBDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hh
bmdlKFN0cmluZyBjb250ZW50U2l6ZUNhdGVnb3J5KQotICAgIEV4ZWN1dGVFZGl0Q29tbWFuZFdp
dGhDYWxsYmFjayhTdHJpbmcgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxl
Y3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRXhlY3V0ZUVkaXRDb21tYW5k
V2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBHZXRTZWxlY3Rpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIFNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAg
ICBIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50
NjRfdCByZXF1ZXN0SUQpCiAgICAgU2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2Vy
U2NhbGFibGUpCi0gICAgR2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQo
dWludDMyX3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQs
IFN0cmluZyB0ZXh0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBHZXRSZWN0c0ZvckdyYW51
bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBv
ZmZzZXQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyAgICBHZXRSZWN0c0F0U2Vs
ZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogICAgIFNldENvbnRyb2xsZWRCeUF1
dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQpAQCAtMTU2LDE5ICsxNTYsMTkgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzdG9yZVNlbGVjdGlvbkluRm9jdXNl
ZEVkaXRhYmxlRWxlbWVudCgpCiAKICAgICAjIENhbGxiYWNrcy4KLSAgICBHZXRDb250ZW50c0Fz
U3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgR2V0Q29udGVudHNBc1N0cmluZyhXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBFTkFCTEUoTUhUTUwpCi0gICAgR2V0Q29u
dGVudHNBc01IVE1MRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldENvbnRlbnRzQXNN
SFRNTERhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKLSAgICBHZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgcmVzb3VyY2VVUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rp
b25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgR2V0U291cmNlRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBHZXRXZWJB
cmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAg
IFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotICAgIEZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgcmVzb3VyY2VVUkwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorICAgIEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFNvdXJjZUZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFdlYkFy
Y2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAjIERpY3Rpb25hcnkg
c3VwcG9ydC4KQEAgLTE5Miw3ICsxOTIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBUcnlDbG9zZSgpCiAKICAgICBTZXRFZGl0YWJsZShib29sIGVkaXRhYmxl
KQotICAgIFZhbGlkYXRlQ29tbWFuZChTdHJpbmcgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
KyAgICBWYWxpZGF0ZUNvbW1hbmQoU3RyaW5nIG5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIEV4ZWN1dGVFZGl0Q29tbWFuZChTdHJpbmcgbmFtZSwgU3RyaW5nIGFyZ3Vt
ZW50KQogCiAgICAgRGlkUmVtb3ZlRWRpdENvbW1hbmQodWludDY0X3QgY29tbWFuZElEKQpAQCAt
MzIyLDE2ICszMjIsMTYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgIyBQcmludGluZy4KICAgICBCZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pCiAgICAgRW5kUHJpbnRpbmcoKQotICAgIENv
bXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlBy
aW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHBy
aW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgRHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50
U2l6ZSBpbWFnZVNpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRHJhd1BhZ2VzVG9QREYo
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERy
YXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUgaW1hZ2VT
aXplLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBEcmF3UGFnZXNUb1BERih1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50
MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogI2lmIFBMQVRGT1JNKElPUykKLSAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdU
b1BERih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCB1aW50NjRfdCBjYWxsYmFja0lEKSAtPiAodWludDMyX3QgcGFnZUNvdW50KSBEZWxheWVkCisg
ICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpIC0+ICh1aW50MzJfdCBwYWdlQ291bnQpIERlbGF5ZWQKICNlbmRpZgogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIERyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAjZW5kaWYKIAogICAgICMgTWVkaWEKQEAgLTM4MywxNyArMzgzLDE3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEFjY2VwdHNGaXJzdE1vdXNlKGludCBl
dmVudE51bWJlciwgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQp
CiAKICAgICBJbnNlcnRUZXh0QXN5bmMoU3RyaW5nIHRleHQsIHN0cnVjdCBXZWJLaXQ6OkVkaXRp
bmdSYW5nZSByZXBsYWNlbWVudFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwLCB1aW50MzJf
dCBlZGl0aW5nUmFuZ2VJc1JlbGF0aXZlVG8sIGJvb2wgc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUp
Ci0gICAgR2V0TWFya2VkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIEdldFNl
bGVjdGVkUmFuZ2VBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIENoYXJhY3RlckluZGV4
Rm9yUG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJ
RCk7Ci0gICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpF
ZGl0aW5nUmFuZ2UgcmFuZ2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEdldE1hcmtlZFJh
bmdlQXN5bmMoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIENoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpOworICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoc3Ry
dWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCk7CiAgICAgU2V0Q29tcG9zaXRpb25Bc3luYyhTdHJpbmcgdGV4dCwgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2Ugc2VsZWN0aW9uUmFuZ2UsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByZXBs
YWNlbWVudFJhbmdlKQogICAgIENvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICNlbmRpZgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBJbnNlcnREaWN0YXRlZFRleHRBc3luYyhTdHJpbmcgdGV4dCwg
c3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UsIFZlY3RvcjxXZWJD
b3JlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJl
Z2lzdGVyVW5kb0dyb3VwKQotICAgIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7Ci0gICAgRm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIEF0
dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHN0cnVjdCBXZWJLaXQ6OkVk
aXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOworICAgIEZv
bnRBdFNlbGVjdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAjZW5kaWYKIAog
ICAgIFNldE1pbmltdW1MYXlvdXRTaXplKFdlYkNvcmU6OkludFNpemUgbWluaW11bUxheW91dFNp
emUpCkBAIC00MTIsMTEgKzQxMiwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlubmluZykKICAg
ICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xs
YmFyU3R5bGUpCiAKLSAgICBHZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkK
KyAgICBHZXRCeXRlY29kZVByb2ZpbGUoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAK
LSAgICBHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICAKLSAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdl
YkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKKyAgICBUYWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3Qs
IFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFBlcmZvcm1JbW1l
ZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9u
KQogICAgIEltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpCkBAIC00NjIsNyArNDYyLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAotICAgIERpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2
NF90IG5ld0NhbGxiYWNrSUQpCisgICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRl
Y2lzaW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIFdlYktpdDo6T3B0aW9u
YWxDYWxsYmFja0lEIG5ld0NhbGxiYWNrSUQpCiAgICAgU2V0VXNlSWNvbkxvYWRpbmdDbGllbnQo
Ym9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCShyZXZpc2lvbiAyMTg3ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhCiAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXMoKTsKIH0KIAotYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVw
YWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCitib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIHNj
aGVkdWxlTGF5ZXJGbHVzaCgpOwogCiAgICAgLy8gV2Ugd2FudCBhIGNsZWFuIHJlcGFpbnQsIG1l
YW5pbmcgdGhhdCBpZiB3ZSdyZSBjdXJyZW50bHkgd2FpdGluZyBmb3IgdGhlIHJlbmRlcmVyCiAg
ICAgLy8gdG8gZmluaXNoIGFuIHVwZGF0ZSwgd2UnbGwgaGF2ZSB0byBzY2hlZHVsZSBhbm90aGVy
IGZsdXNoIHdoZW4gaXQncyBkb25lLgogICAgIEFTU0VSVCghbV9mb3JjZVJlcGFpbnRBc3luYy5j
YWxsYmFja0lEKTsKLSAgICBtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQgPSBjYWxsYmFj
a0lEOworICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCA9IE9wdGlvbmFsQ2FsbGJh
Y2tJRChjYWxsYmFja0lEKTsKICAgICBtX2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVz
aCA9IG1fc2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXI7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNjcsOCArMTY3LDggQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJl
bmRlck5leAogICAgICAgICAvLyBhcmVuJ3QgbmVlZGVkLiBJZiB0aGV5IGFyZSwgdGhlIGNhbGxi
YWNrIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uCiAgICAgICAgIC8vIGlzIGNh
bGxlZCBhZnRlciB0aGUgbmV4dCB1cGRhdGUuCiAgICAgICAgIGlmICghbV9mb3JjZVJlcGFpbnRB
c3luYy5uZWVkc0ZyZXNoRmx1c2gpIHsKLSAgICAgICAgICAgIG1fd2ViUGFnZS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxi
YWNrSUQpKTsKLSAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMgPSB7IH07CisgICAgICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2so
bV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lELmNhbGxiYWNrSUQoKSkpOworICAgICAgICAg
ICAgbV9mb3JjZVJlcGFpbnRBc3luYyA9IHsgT3B0aW9uYWxDYWxsYmFja0lEKCkgLCBmYWxzZSB9
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNG
cmVzaEZsdXNoID0gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgJKHJldmlzaW9uIDIxODc4NCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNpbmNsdWRlICJDb21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiTGF5
ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDcgKzUyLDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBm
b3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2
NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ2Fs
bGJhY2tJRCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIG5ld1NpemUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWQoKSBvdmVycmlkZTsKQEAgLTg1LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNXYWl0aW5nRm9yUmVuZGVyZXIgeyB0cnVlIH07CiAgICAgYm9vbCBtX3NjaGVk
dWxlZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyIHsgZmFsc2UgfTsKICAgICBzdHJ1Y3QgewotICAg
ICAgICB1aW50NjRfdCBjYWxsYmFja0lEIHsgMCB9OworICAgICAgICBPcHRpb25hbENhbGxiYWNr
SUQgY2FsbGJhY2tJRDsKICAgICAgICAgYm9vbCBuZWVkc0ZyZXNoRmx1c2ggeyBmYWxzZSB9Owog
ICAgIH0gbV9mb3JjZVJlcGFpbnRBc3luYzsKICAgICBSdW5Mb29wOjpUaW1lcjxDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q+IG1fbGF5ZXJGbHVzaFRpbWVyOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHAJKHJldmlzaW9uIDIxODc4NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzdGFydFBy
aW50KFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKSBvdmVycmlkZQorICAgIHZvaWQgc3RhcnRQcmludChXZWJDb3JlOjpQcmludENvbnRleHQq
IHByaW50Q29udGV4dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgbV9wcmludENvbnRleHQgPSBwcmludENvbnRleHQ7CiAgICAgICAgIG1fY2FsbGJhY2tJ
RCA9IGNhbGxiYWNrSUQ7CkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICB2b2lkIHN0YXJ0UHJpbnQoV2ViQ29yZTo6UHJpbnRDb250ZXh0KiBwcmludENvbnRl
eHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlCisgICAgdm9pZCBzdGFydFByaW50KFdl
YkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3ByaW50Q29udGV4dCA9IHByaW50Q29udGV4dDsK
ICAgICAgICAgbV9jYWxsYmFja0lEID0gY2FsbGJhY2tJRDsKQEAgLTM5OCw3ICszOTgsNiBAQCBX
ZWJQcmludE9wZXJhdGlvbkd0azo6V2ViUHJpbnRPcGVyYXRpb25HCiAgICAgLCBtX3BhZ2VTZXR1
cChwcmludEluZm8ucGFnZVNldHVwLmdldCgpKQogICAgICwgbV9wcmludE1vZGUocHJpbnRJbmZv
LnByaW50TW9kZSkKICAgICAsIG1fcHJpbnRDb250ZXh0KDApCi0gICAgLCBtX2NhbGxiYWNrSUQo
MCkKICAgICAsIG1feERQSSgxKQogICAgICwgbV95RFBJKDEpCiAgICAgLCBtX3ByaW50UGFnZXNJ
ZGxlSWQoMCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgJKHJldmlzaW9uIDIxODc4NCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRp
b25HdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJQcmlu
dE9wZXJhdGlvbkd0a19oCiAjZGVmaW5lIFdlYlByaW50T3BlcmF0aW9uR3RrX2gKIAorI2luY2x1
ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTc1LDcg
Kzc2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzdGFydFByaW50KFdlYkNvcmU6OlByaW50Q29udGV4dCosIHVpbnQ2NF90
IGNhbGxiYWNrSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQcmludChXZWJDb3JlOjpQ
cmludENvbnRleHQqLCBDYWxsYmFja0lEKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBXZWJQcmlu
dE9wZXJhdGlvbkd0ayhXZWJQYWdlKiwgY29uc3QgUHJpbnRJbmZvJik7CkBAIC0xMDMsNyArMTA0
LDcgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3RrUGFnZVNldHVwPiBtX3BhZ2VTZXR1cDsK
ICAgICBQcmludEluZm86OlByaW50TW9kZSBtX3ByaW50TW9kZTsKICAgICBXZWJDb3JlOjpQcmlu
dENvbnRleHQqIG1fcHJpbnRDb250ZXh0OwotICAgIHVpbnQ2NF90IG1fY2FsbGJhY2tJRDsKKyAg
ICBDYWxsYmFja0lEIG1fY2FsbGJhY2tJRDsKICAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9jYWlyb0Nv
bnRleHQ7CiAgICAgZG91YmxlIG1feERQSTsKICAgICBkb3VibGUgbV95RFBJOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQkocmV2aXNpb24gMjE4Nzg0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9v
bCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9ySwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpnZXRTZWxlY3Rpb25Db250ZXh0KHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkp
IHsKQEAgLTEwNDYsNyArMTA0Niw3IEBAIFJlZlB0cjxSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JC
bG9ja0F0UG8KICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0
aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxh
cml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25J
bkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lz
dGVkTm9kZSk7CkBAIC0xNzIyLDcgKzE3MjIsNyBAQCBib29sIFdlYlBhZ2U6OnNob3VsZFN3aXRj
aFRvQmxvY2tNb2RlRm9yCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlv
bldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9v
bCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRl
U2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3Vj
aGVzLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJh
bWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBJbnRQb2ludCBwb2ludEluRG9jdW1lbnQgPSBmcmFtZS52aWV3KCktPnJvb3RWaWV3
VG9Db250ZW50cyhwb2ludCk7CkBAIC0xNzgzLDcgKzE3ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29U
b3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBm
cm9tUG9zaXRpb24gPSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZS52aWV3KCkt
PnJvb3RWaWV3VG9Db250ZW50cyhmcm9tKSk7CkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgc3RhcnRQb3Np
dGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCB0cnVlLCBVc2VyVHJp
Z2dlcmVkKTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJf
dCBvZmZzZXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rp
b25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAgICAgCkBAIC0xODUwLDcgKzE4NTAsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkZvCiAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHN0
YXJ0SW5kZXggKyBvZmZzZXQsIHJvb3QuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJl
Y3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5
LCBpbnQzMl90IG9mZnNldCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJp
dHksIGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpOwpAQCAtMTg4Myw3ICsxODgzLDcgQEAgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VO
ZWFyUG9zaXRpb25NYQogICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2VsZWN0aW9u
UmFuZ2UuZ2V0KCksIG1hdGNoVGV4dCwgMCwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNv
bnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0
UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJp
bmcmIHRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIHVpbnQz
Ml90IGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBWaXNpYmxl
UG9zaXRpb24gV2ViUGFnZTo6dmlzaWJsZVBvc2l0aW9uCiAgICAgcmV0dXJuIGZyYW1lLnZpc2li
bGVQb3NpdGlvbkZvclBvaW50KGNvbnN0cmFpbmVkUG9pbnQpOwogfQogCi12b2lkIFdlYlBhZ2U6
OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2
b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0g
dmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTkzOCw3ICsxOTM4LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29ucwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpz
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9kZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBk
aXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0g
dmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRl
cmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUpOwpAQCAtMTk1MSw3ICsxOTUxLDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpt
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbnQzMl90IGRpcmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFt
ZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OwogICAgIApAQCAtMTk5NSw3ICsxOTk1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHJlY3RJc1Rv
b0JpZ0ZvclNlbGVjdAogICAgIHJldHVybiBibG9ja1JlY3QuaGVpZ2h0KCkgPiBmcmFtZS52aWV3
KCktPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpICogZmFjdG9yOwogfQogCi12b2lk
IFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhBc3Npc3RlZE5vZGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNl
bGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KGZyYW1lLCBwb2ludCwgZ3Jh
bnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIwMjIsMTMgKzIw
MjIsMTMgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVj
dGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25J
bkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBtX3NlbGVjdGlvbkFuY2hvciA9IChzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+
KGRpcmVjdGlvbikgPT0gRGlyZWN0aW9uTGVmdCkgPyBTdGFydCA6IEVuZDsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2sobV9zZWxlY3Rpb25BbmNob3Ig
PT0gU3RhcnQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlLCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25X
aXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2Rl
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwg
cG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsKQEAgLTIwNTcsNyArMjA1Nyw3
IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFAKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2soc2VsZWN0aW9uU3RhcnQgPT0g
bV9pbml0aWFsU2VsZWN0aW9uLT5zdGFydFBvc2l0aW9uKCksIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0
ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoQXNzaXN0ZWROb2RlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYg
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5v
ZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlKTsK
QEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgV2ViUGFnZTo6Y29udmVydFNlbGVjdGlvblJlY3Rz
VG9Sb28KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQo
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRl
eHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHN0YXJ0UG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
OwpAQCAtMjE5MCw3ICsyMTkwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0
KGNvbnN0IAogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFs
c2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3Qg
U3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9y
QXV0b2NvcnJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKSB7CkBAIC0yMjM4LDE0ICsyMjM4LDE0
IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YSgKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF1dG9jb3JyZWN0aW9uRGF0YUNhbGxiYWNrKHJlY3RzRm9y
VGV4dCwgZm9udE5hbWUuZ2V0KCksIGZvbnRTaXplLCBmb250VHJhaXRzLCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVj
dGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFRleHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBib29sIGNvcnJlY3Rpb25BcHBsaWVkOwogICAgIHN5bmNBcHBseUF1dG9jb3JyZWN0
aW9uKGNvcnJlY3Rpb24sIG9yaWdpbmFsVGV4dCwgY29ycmVjdGlvbkFwcGxpZWQpOwogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RyaW5nQ2FsbGJhY2soY29ycmVjdGlvbkFwcGxp
ZWQgPyBjb3JyZWN0aW9uIDogU3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21t
YW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBleGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIFN0cmluZygp
KTsKICAgICBpZiAoY29tbWFuZE5hbWUgPT0gInRvZ2dsZUJvbGQiIHx8IGNvbW1hbmROYW1lID09
ICJ0b2dnbGVJdGFsaWMiIHx8IGNvbW1hbmROYW1lID09ICJ0b2dnbGVVbmRlcmxpbmUiKQpAQCAt
MjM5Miw3ICsyMzkyLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4
dAogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdXRvY29ycmVjdGlv
bkNvbnRleHQoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFN0cmluZyBjb250ZXh0QmVm
b3JlOwogICAgIFN0cmluZyBjb250ZXh0QWZ0ZXI7CkBAIC0yNjc2LDcgKzI2NzYsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaGFzQXNzaXN0YWJsZUVsZW1lbnQoCiAgICAgcmV0dXJuIG5leHRBc3Np
c3RhYmxlRWxlbWVudChzdGFydE5vZGUsIHBhZ2UsIGlzRm9yd2FyZCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKGJvb2wgaXNGb3J3YXJkLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJQYWdlOjpmb2N1c05leHRBc3Npc3RlZE5vZGUoYm9vbCBpc0Zvcndh
cmQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBFbGVtZW50KiBuZXh0RWxlbWVudCA9
IG5leHRBc3Npc3RhYmxlRWxlbWVudChtX2Fzc2lzdGVkTm9kZS5nZXQoKSwgKm1fcGFnZSwgaXNG
b3J3YXJkKTsKICAgICBtX3VzZXJJc0ludGVyYWN0aW5nID0gdHJ1ZTsKQEAgLTMzMDAsNyArMzMw
MCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEUKIH0KICNlbmRp
ZgogCi12b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxs
YmFja0lELCBSZWY8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
RHJhd1RvUERGOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQ
YWdlc0ZvclByaW50aW5nQW5kRHJhd1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQsIFJlZjxNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREY6OkRlbGF5ZWRSZXBseT4m
JiByZXBseSkKIHsKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CiAgICAg
ICAgIHJlcGx5LT5zZW5kKDEpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaAkocmV2aXNpb24gMjE4Nzg0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgog
I2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBUmVtb3Rl
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCIKQEAgLTY4LDcgKzY5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1t
ZWRpYXRlbHkoKSBvdmVycmlkZTsKICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NM
YXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQp
IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBv
dmVycmlkZTsKICAgICB2b2lkIHdpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNv
cmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvciopOwpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3lu
Yyh1aW50NjRfdCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGZvcmNlUmVw
YWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4p
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGVkVmlld0V4cG9zZWRS
ZWN0OyB9CkBAIC0xMDMsNyArMTA0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWFpbkZyYW1l
Q29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJRHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29s
IHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBj
YWxsYmFja0lEcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJvdHRs
aW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjE4
Nzg0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmcKICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKIH0KIAotdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShBY3Rpdml0
eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShBY3Rpdml0eVN0YXRlOjpGbGFncywgYm9vbCB3YW50c0RpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYpCiB7CiAgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBzdXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2aXNpYmxlLCBsaWtlIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIApAQCAtNDk3LDcgKzQ5Nyw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXQKICAgICB9CiB9CiAK
LXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJ
RCh1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBt
X3BlbmRpbmdDYWxsYmFja0lEcy5hcHBlbmQoc3RhdGljX2Nhc3Q8UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OlRyYW5zYWN0aW9uQ2FsbGJhY2tJRD4oY2FsbGJhY2tJRCkpOwogICAgIHNjaGVk
dWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyMTg3ODQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzY3JvbGxEZWx0YSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJy
aWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3Zl
cnJpZGU7CisgICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7
CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZFVzZVRpbGVkQmFj
a2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpG
bGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZSwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRVcGRhdGVBY3Rpdml0eVN0YXRlVGltZXJGaXJlZCgpOwogCiAgICAgdm9pZCBh
dHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CkBAIC0xNDksNyArMTQ5LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKIAogICAgIFJ1bkxv
b3A6OlRpbWVyPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPiBtX3NlbmREaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlVGltZXI7Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBtX25leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlQ2FsbGJhY2tJRHM7CisgICAgVmVjdG9yPENhbGxiYWNrSUQ+IG1fbmV4dEFjdGl2
aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEczsKICAgICBib29sIG1fd2FudHNEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlOwogCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV92aWV3T3ZlcmxheVJv
b3RMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQkocmV2aXNpb24gMjE4Nzg0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTQ3LDcgKzE0Nyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmMK
ICAgICBbQ0FUcmFuc2FjdGlvbiBzeW5jaHJvbml6ZV07CiB9CiAKLWJvb2wgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQp
Citib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyhD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGJvb2wgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZsdXMKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoQWN0aXZpdHlTdGF0
ZTo6RmxhZ3MgY2hhbmdlZCwgYm9vbCB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3RhdGUsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tJRHMpCit2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KEFjdGl2aXR5U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlLCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIG5leHRBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tJRHMpCiB7CiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURz
LmFwcGVuZFZlY3RvcihuZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrSURzKTsKICAgICBt
X3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSB8PSB3YW50c0RpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGU7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6ZGlkVQogICAgIGlmIChtX3dhbnRzRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZSkKICAgICAgICAg
bV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZSgpKTsKIAotICAgIGZvciAodWludDY0X3QgY2FsbGJhY2tJRCA6IG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKKyAgICBmb3IgKGF1dG8gY2FsbGJhY2tJRCA6IG1fbmV4
dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcykKICAgICAgICAgbV93ZWJQYWdlLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIAogICAg
IG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja0lEcy5jbGVhcigpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQkocmV2aXNpb24gMjE4Nzg0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9p
ZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjbwogICAgIGZyYW1lLmVkaXRvcigp
Lmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywg
bnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJh
Y3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRpdGluZ1JhbmdlLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiB7CiAgICAgQXR0cmlidXRlZFN0cmluZyByZXN1bHQ7CiAKQEAgLTM3NSw3
ICszNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VDYWxsYmFjayhyZXN1bHQsIHJhbmdlVG9TZW5kLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OmZvbnRBdFNlbGVjdGlvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgU3Ry
aW5nIGZvbnROYW1lOwogICAgIGRvdWJsZSBmb250U2l6ZSA9IDA7Cg==
</data>
<flag name="review"
          id="334719"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>