<?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>226700</bug_id>
          
          <creation_ts>2021-06-06 12:58:06 -0700</creation_ts>
          <short_desc>Stop using legacy EventLoopDeferrableTask</short_desc>
          <delta_ts>2021-06-07 12:23:54 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226734</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>
          
          <blocked>226701</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767242</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 12:58:06 -0700</bug_when>
    <thetext>Stop using legacy EventLoopDeferrableTask and use the EventLoop directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767244</commentid>
    <comment_count>1</comment_count>
      <attachid>430698</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 13:09:53 -0700</bug_when>
    <thetext>Created attachment 430698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767258</commentid>
    <comment_count>2</comment_count>
      <attachid>430701</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 16:50:49 -0700</bug_when>
    <thetext>Created attachment 430701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767264</commentid>
    <comment_count>3</comment_count>
      <attachid>430701</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-06 17:53:54 -0700</bug_when>
    <thetext>Comment on attachment 430701
Patch

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

&gt; Source/WTF/wtf/CancellableTask.h:36
&gt; +class CancellableTask {

I’d find these new classes easier to read if the multi-line function bodies were not included int he class definitions. Single-line work well, or multi-line inlines after the class definitions. With this style, there’s no interface summary since it’s interspersed with the code.

&gt; Source/WTF/wtf/CancellableTask.h:72
&gt; +class CancellableTaskHandle {

I suggest this just be a public member class of CancellableTask called Handle, and not a separate namespace-level class.

&gt; Source/WTF/wtf/CancellableTask.h:80
&gt; +    void cancel()
&gt; +    {
&gt; +        if (m_taskWrapper)
&gt; +            m_taskWrapper-&gt;task = nullptr;
&gt; +    }

Seems like for most uses we want to call cancel in the destructor and the move assignment operator when overwriting an old value. Did you consider that design? It would get rid of the list of cancel function calls in all the destructors of the classes that use this.

Could result in canceling by accident, but it seems every case you are using this we want something like that. These are handles we hold onto for the lifetime of a task.

One problem with that design idea is if you copy one of these instead of moving it, because that would have a side effect of canceling. That could be fixed by deleting the copy constructor and copy assignment operator. Should be no need to copy these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767266</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 18:01:16 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 430701 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430701&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/CancellableTask.h:36
&gt; &gt; +class CancellableTask {
&gt; 
&gt; I’d find these new classes easier to read if the multi-line function bodies
&gt; were not included int he class definitions. Single-line work well, or
&gt; multi-line inlines after the class definitions. With this style, there’s no
&gt; interface summary since it’s interspersed with the code.

Ok, will do.

&gt; 
&gt; &gt; Source/WTF/wtf/CancellableTask.h:72
&gt; &gt; +class CancellableTaskHandle {
&gt; 
&gt; I suggest this just be a public member class of CancellableTask called
&gt; Handle, and not a separate namespace-level class.

I had this initially but I didn&apos;t want to make TaskWrapper public. I had trouble finding a way to make CancellableTaskHandle a public member class of CancellableTask without making TaskWrapper public, given that CancellableTaskHandle refers to TaskWrapper. I&apos;ll try again.

&gt; 
&gt; &gt; Source/WTF/wtf/CancellableTask.h:80
&gt; &gt; +    void cancel()
&gt; &gt; +    {
&gt; &gt; +        if (m_taskWrapper)
&gt; &gt; +            m_taskWrapper-&gt;task = nullptr;
&gt; &gt; +    }
&gt; 
&gt; Seems like for most uses we want to call cancel in the destructor and the
&gt; move assignment operator when overwriting an old value. Did you consider
&gt; that design? It would get rid of the list of cancel function calls in all
&gt; the destructors of the classes that use this.
&gt; 
&gt; Could result in canceling by accident, but it seems every case you are using
&gt; this we want something like that. These are handles we hold onto for the
&gt; lifetime of a task.
&gt; 
&gt; One problem with that design idea is if you copy one of these instead of
&gt; moving it, because that would have a side effect of canceling. That could be
&gt; fixed by deleting the copy constructor and copy assignment operator. Should
&gt; be no need to copy these.

I&apos;ll look into this design and see if it indeed looks better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767267</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 18:05:07 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Darin Adler from comment #3)
&gt; &gt; Comment on attachment 430701 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=430701&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/CancellableTask.h:36
&gt; &gt; &gt; +class CancellableTask {
&gt; &gt; 
&gt; &gt; I’d find these new classes easier to read if the multi-line function bodies
&gt; &gt; were not included int he class definitions. Single-line work well, or
&gt; &gt; multi-line inlines after the class definitions. With this style, there’s no
&gt; &gt; interface summary since it’s interspersed with the code.
&gt; 
&gt; Ok, will do.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/CancellableTask.h:72
&gt; &gt; &gt; +class CancellableTaskHandle {
&gt; &gt; 
&gt; &gt; I suggest this just be a public member class of CancellableTask called
&gt; &gt; Handle, and not a separate namespace-level class.
&gt; 
&gt; I had this initially but I didn&apos;t want to make TaskWrapper public. I had
&gt; trouble finding a way to make CancellableTaskHandle a public member class of
&gt; CancellableTask without making TaskWrapper public, given that
&gt; CancellableTaskHandle refers to TaskWrapper. I&apos;ll try again.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/CancellableTask.h:80
&gt; &gt; &gt; +    void cancel()
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        if (m_taskWrapper)
&gt; &gt; &gt; +            m_taskWrapper-&gt;task = nullptr;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Seems like for most uses we want to call cancel in the destructor and the
&gt; &gt; move assignment operator when overwriting an old value. Did you consider
&gt; &gt; that design? It would get rid of the list of cancel function calls in all
&gt; &gt; the destructors of the classes that use this.
&gt; &gt; 
&gt; &gt; Could result in canceling by accident, but it seems every case you are using
&gt; &gt; this we want something like that. These are handles we hold onto for the
&gt; &gt; lifetime of a task.
&gt; &gt; 
&gt; &gt; One problem with that design idea is if you copy one of these instead of
&gt; &gt; moving it, because that would have a side effect of canceling. That could be
&gt; &gt; fixed by deleting the copy constructor and copy assignment operator. Should
&gt; &gt; be no need to copy these.
&gt; 
&gt; I&apos;ll look into this design and see if it indeed looks better.

In my current patch, if you call queueCancellableTaskKeepingObjectAlive() and ignore the return value, the task will still be scheduled (as one might expect). If destroying the value returned by the function cancels the task then it wouldn&apos;t. I guess we alleviate that using a WARN_UNUSED_RETURN. I also think I would need another name than &quot;Handle&quot; for that class if destroying it would cancel the task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767269</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 18:20:02 -0700</bug_when>
    <thetext>Maybe something like this?
```
class CancellableTask : public CanMakeWeakPtr&lt;CancellableTask&gt; {
public:
    explicit CancellableTask(Function&lt;void()&gt;&amp;&amp; task) : m_task(WTFMove(task)) { }

    bool isPending() const { return !!m_task; }

    class WeakCallable {
    public:
        explicit WeakCallable(CancellableTask&amp; task) : m_task(makeWeakPtr(task)) { }
        void operator()() { if (std::exchange(m_task, nullptr)) m_task(); }
    private:
        WeakPtr&lt;CancellableTask&gt; m_task;
    };

    WeakCallable createWeakCallable() { return WeakCallable { *this }; }

private:
    Function&lt;void()&gt; m_task;
};
```

Then the user can create a CancellableTask, create a WeakCallable from it and schedule it on the event loop, and store the CancellableTask as a data member. To cancel the task, they&apos;d just null out their data member.

I guess I&apos;d rename queueCancellableTaskKeepingThisObjectAlive() to createAndQueueCancellableTaskKeepingThisObjectAlive() and use WARN_UNUSED_RETURN.

Do you think that would be better? Any better suggestion on either the pattern or naming?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767272</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-06 18:31:31 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; In my current patch, if you call queueCancellableTaskKeepingObjectAlive()
&gt; and ignore the return value, the task will still be scheduled (as one might
&gt; expect).

But you should have called the non-cancellable version in that case.

It&apos;s unusual, to get a handle for use for cancelling and then not store it anyway.

&gt; I guess we alleviate that using a WARN_UNUSED_RETURN.

Yes, one way.

&gt; I also think I would need another name than &quot;Handle&quot; for that class if
&gt; destroying it would cancel the task.

Agreed.

The way we are using it, though, a handle that we have to call cancel on is not really the right design, because we’re always calling cancel when we destroy all of these. The same reason we made the handle in the first place is the reason we want to cancel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767273</commentid>
    <comment_count>8</comment_count>
      <attachid>430701</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-06 18:36:58 -0700</bug_when>
    <thetext>Comment on attachment 430701
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5626
&gt;  void HTMLMediaElement::closeTaskQueues()

Maybe this can call cancelPendingTasks to cut down on the repetitive code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767274</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-06 18:46:38 -0700</bug_when>
    <thetext>Honestly, I don’t think you should change it. Looking more carefully it is obviously OK for the two places you are currently using it and it’s probably over-engineering to work hard on the design for something we will not use that often.

I do think it’s annoying that you have to remember to use call cancel on one of these handles before you overwrite or destroy it. It seems it would always ve a programming mistake to not do that. So you could assert in the destructor and the assignment operator that isPending is false.

In HTMLMediaElement, the destroy case never happens because of the &quot;keeping object alive&quot; feature of the queue. And the overwrite case never happens because every client checks isPending before creating a new task.

In DocumentTimelinesController, the destroy case never happens because we call cancel in the destructor, and the overwrite case never happens because it checks isPending before creating a new task.

All that seems a little &quot;manual&quot;, but it will work well enough.

If we were thinking of using this instead of capturing WeakPtr I might have a different view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767275</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 18:49:26 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Maybe something like this?
&gt; ```
&gt; class CancellableTask : public CanMakeWeakPtr&lt;CancellableTask&gt; {
&gt; public:
&gt;     explicit CancellableTask(Function&lt;void()&gt;&amp;&amp; task) :
&gt; m_task(WTFMove(task)) { }
&gt; 
&gt;     bool isPending() const { return !!m_task; }
&gt; 
&gt;     class WeakCallable {
&gt;     public:
&gt;         explicit WeakCallable(CancellableTask&amp; task) :
&gt; m_task(makeWeakPtr(task)) { }
&gt;         void operator()() { if (std::exchange(m_task, nullptr)) m_task(); }
&gt;     private:
&gt;         WeakPtr&lt;CancellableTask&gt; m_task;
&gt;     };
&gt; 
&gt;     WeakCallable createWeakCallable() { return WeakCallable { *this }; }
&gt; 
&gt; private:
&gt;     Function&lt;void()&gt; m_task;
&gt; };
&gt; ```
&gt; 
&gt; Then the user can create a CancellableTask, create a WeakCallable from it
&gt; and schedule it on the event loop, and store the CancellableTask as a data
&gt; member. To cancel the task, they&apos;d just null out their data member.
&gt; 
&gt; I guess I&apos;d rename queueCancellableTaskKeepingThisObjectAlive() to
&gt; createAndQueueCancellableTaskKeepingThisObjectAlive() and use
&gt; WARN_UNUSED_RETURN.
&gt; 
&gt; Do you think that would be better? Any better suggestion on either the
&gt; pattern or naming?

So you were not a fan of this particular proposal? It is actually less code and I have it mostly implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767278</commentid>
    <comment_count>11</comment_count>
      <attachid>430704</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 19:08:03 -0700</bug_when>
    <thetext>Created attachment 430704
Alternative proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767279</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 19:09:54 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; Created attachment 430704 [details]
&gt; Alternative proposal

I uploaded the alternative proposal based on your suggestion. Let me know if you prefer this one. I think it is nice. One limitation of this design is that you can no longer have a cancellable task that outlives its scheduler. However, this is not a use-case we have at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767280</commentid>
    <comment_count>13</comment_count>
      <attachid>430705</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 19:32:38 -0700</bug_when>
    <thetext>Created attachment 430705
Reviewed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767285</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-06 19:49:41 -0700</bug_when>
    <thetext>I like both. Your newer proposal also seems really good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767287</commentid>
    <comment_count>15</comment_count>
      <attachid>430708</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-06 20:11:54 -0700</bug_when>
    <thetext>Created attachment 430708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767296</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-06 21:22:45 -0700</bug_when>
    <thetext>Committed r278543 (238541@main): &lt;https://commits.webkit.org/238541@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430708.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767297</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-06 21:23:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78933487&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430698</attachid>
            <date>2021-06-06 13:09:53 -0700</date>
            <delta_ts>2021-06-06 16:50:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226700-20210606130952.patch</filename>
            <type>text/plain</type>
            <size>31284</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkzYTNkNDJkMDg5YzBmMDA2OTI0MjVm
NzViMmEyMjZjMDYzZTI4YmMuLmVmNDk2ODE5YmMzMzMwZjQ2YzEwMTc4NjkyOTM1MDcwMDE5MjQ5
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExvb3BEZWZlcnJh
YmxlVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlIG5ldyBXVEY6OkNhbmNlbGxhYmxlVGFzayB0eXBlIHdoaWNoIGlzIGEgd3JhcHBl
ciBhcm91bmQgYSBXVEY6OkZ1bmN0aW9uLgorICAgICAgICBJdCBjYW4gY3JlYXRlIGEgaGFuZGxl
IGZvciB0aGUgdGFzayBhbmQgdGhpcyBoYW5kbGUgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhl
CisgICAgICAgIHRhc2sgaXMgc3RpbGwgcGVuZGluZyBhbmQgdG8gY2FuY2VsIGl0LiBUaGlzIGlz
IHVzZWZ1bCB3aGVuIHNjaGVkdWxpbmcgdGFza3MgaW4gdGhlCisgICAgICAgIGV2ZW50IGxvb3Ag
Zm9yIGV4YW1wbGUgYXMgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8ga25vdyBpZiBh
IHRhc2sgd2UKKyAgICAgICAgc2NoZWR1bGVkIGlzIHN0aWxsIHBlbmRpbmcgKHRvIGF2b2lkIGRv
dWJsZSBzY2hlZHVsaW5nKSBvciB3aGVyZSB3ZSBuZWVkIHRvIGNhbmNlbAorICAgICAgICBhIHBy
ZXZpb3VzbHkgc2NoZWR1bGVkIHRhc2suCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3Rm
L0NhbmNlbGxhYmxlVGFzay5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNr
OjpDYW5jZWxsYWJsZVRhc2spOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6OmlzUGVuZGluZyBjb25zdCk6
CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6
Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxh
YmxlVGFzazo6SGFuZGxlOjppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV1RGOjpDYW5jZWxs
YWJsZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNr
OjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIHd0Zi9XZWFrUHRyLmg6CisKIDIwMjEtMDYtMDQg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlU3lzdGVtOjpy
ZWFkRnJvbUZpbGUoKSBzaG91bGQgcmV0dXJuIGRhdGEgYXMgYHZvaWQqYApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGI2MDAzNjViMTUwODVhODIwNGFiYTkwYjE4ODJmMWExZDgyNzU1ZTguLmNlMDhmODI4ZDRhNDk1
NTE3ODQyNTNiNGJlY2MyZTg3OTMwMDk0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAor
MjAyMS0wNi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0
b3AgdXNpbmcgbGVnYWN5IEV2ZW50TG9vcERlZmVycmFibGVUYXNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExv
b3BEZWZlcnJhYmxlVGFzayBhbmQgZHJvcCB0aGUgY2xhc3MgZW50aXJlbHkuIENhbGwgc2l0ZXMg
YXJlCisgICAgICAgIG5vdyB1c2luZyB0aGUgSFRNTCBldmVudCBsb29wIGRpcmVjdGx5IGFuZCB1
c2luZyBXVEY6OkNhbmNlbGxhYmxlVGFzayB0byB3cmFwIHRoZSB0YXNrCisgICAgICAgIHRoZXkg
c2NoZWR1bGUuIFRoaXMgYWNoaWV2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIEV2ZW50TG9vcERlZmVy
cmFibGVUYXNrIGJ1dCBpcyBtb3JlCisgICAgICAgIGxpZ2h0d2VpZ2h0IGFuZCBmbGV4aWJsZS4K
KworICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpEb2N1bWVudFRp
bWVsaW5lc0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyOjpkZXRhY2hGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyOjpjYWNoZUN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBhbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmg6CisgICAgICAgICogZG9tL0FjdGl2
ZURPTU9iamVjdC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlQ2hlY2tQbGF5YmFja1Rhcmdl
dENvbXBhdGFiaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vl
a1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0
Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlQ29u
ZmlndXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZU1lZGlhRW5naW5lV2FzVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQZW5kaW5nVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtD
YXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckJ1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRhdGVNZWRp
YVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EZWZlcnJhYmxlVGFz
ay5oOgorCiAyMDIxLTA2LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVkdWNlIHVzZSBvZiBsZWdhY3kgRXZlbnRMb29wRXZlbnRRdWV1ZSBhbmQgRXZlbnRM
b29wVGFza1F1ZXVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBlYTk0MWEwNzBiYzk3MjNhOTRlYzgzYzFjM2NjNjQyNTVlMzdhMzQyLi43OGM0ZmIyM2UzNTM3
YTgwNWQ0OTYyNTI5OTM3YzlhYTg4ZDI3ZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTM3OCw2ICszNzgsNyBAQAogCQk0MzBCNDc4NzFBQUFBQzFBMDAx
MjIzREEgLyogU3RyaW5nQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0cmluZ0NvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDI3QzVBOTIx
RjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBU0NJSUNUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDQ2ODU2NzIyNTA5NEZFODAwOENDQTA1IC8qIFRocmVhZFNhbml0aXplclN1cHBvcnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkU2FuaXRpemVyU3VwcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEg
LyogQ2FuY2VsbGFibGVUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbmNlbGxhYmxlVGFzay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJBOUVBQjFGNENENjFFMDA5QTJCQkMgLyog
Q29tcGxldGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
cGxldGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2RTky
MkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVm
Q291bnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwREUzNUYzMjE1QkIw
MTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY1Myw4ICs2NTQsOCBAQAogCQlBOEE0NzMyMjE1MUE4MjVCMDA0MTIz
RkYgLyogQ1N0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU3RyaW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzIzMTUxQTgyNUIwMDQxMjNG
RiAvKiBTdHJpbmdCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI0MTUxQTgy
NUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlBOEE0NzMyNTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI1MTUxQTgyNUIwMDQxMjNFRSAvKiBTdHJpbmdCdWlsZGVy
SW50ZXJuYWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1aWxk
ZXJJbnRlcm5hbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThBNDczMjUxNTFB
ODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEE0NzMyNjE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQ29uY2F0ZW5hdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjcxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0hhc2gu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSGFzaC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyODE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdJbXBs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4Myw2ICs5ODQsNyBAQAogCQkJ
CTBGRUMzQzRGMUYzMjNDNjgwMEY1OUI2QyAvKiBDYWdlZFB0ci5oICovLAogCQkJCTBGNUYzRDY4
MUYzRkVCQTYwMEIxMTVBMiAvKiBDYWdlZFVuaXF1ZVB0ci5oICovLAogCQkJCTQxM0ZFOEY1MUY4
RDJFQUIwMEY2RDdENyAvKiBDYWxsYmFja0FnZ3JlZ2F0b3IuaCAqLywKKwkJCQk0NjIwOUEyNzI2
NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2VsbGFibGVUYXNrLmggKi8sCiAJCQkJQThBNDcyNkExNTFB
ODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRBcml0aG1ldGljLmggKi8sCiAJCQkJQThBNDcyNkIxNTFB
ODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRCb29sZWFuLmggKi8sCiAJCQkJOUJCOTFGNTEyNjQ4RUE0
RDAwQTU2MjE3IC8qIENoZWNrZWRQdHIuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggN2Vh
MTNkMDExNWU3Y2YxNjZjYTA3ZTlhMzQwOTQ2OTE2MDFiMjUzOS4uYmJlOTkyYjlhYmU3Y2M2YTk1
MjRlNmUyMTI3MTc1MTM0YjQzODM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI2LDYgKzI2
LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIENhZ2VkUHRyLmgKICAgICBDYWdlZFVu
aXF1ZVB0ci5oCiAgICAgQ2FsbGJhY2tBZ2dyZWdhdG9yLmgKKyAgICBDYW5jZWxsYWJsZVRhc2su
aAogICAgIENoZWNrZWRBcml0aG1ldGljLmgKICAgICBDaGVja2VkQm9vbGVhbi5oCiAgICAgQ2hl
Y2tlZFB0ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DYW5jZWxsYWJsZVRhc2suaCBi
L1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxlVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZjVjMmU2NGQ0
ZTlkZWM3MmE5NjJlMWExYWE4MGE3M2QxYzZhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9DYW5jZWxsYWJsZVRhc2suaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgQ2FuY2VsbGFibGVUYXNrIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPENhbmNlbGxhYmxlVGFzaz4geworcHVibGljOgorICAgIGV4
cGxpY2l0IENhbmNlbGxhYmxlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKKyAgICAgICAg
OiBtX3Rhc2soV1RGTW92ZSh0YXNrKSkKKyAgICB7CisgICAgfQorCisgICAgQ2FuY2VsbGFibGVU
YXNrKENhbmNlbGxhYmxlVGFzayYmKSA9IGRlZmF1bHQ7CisgICAgQ2FuY2VsbGFibGVUYXNrJiBv
cGVyYXRvcj0oQ2FuY2VsbGFibGVUYXNrJiYpID0gZGVmYXVsdDsKKworICAgIHZvaWQgb3BlcmF0
b3IoKSgpCisgICAgeworICAgICAgICBpZiAoYXV0byB0YXNrID0gc3RkOjpleGNoYW5nZShtX3Rh
c2ssIG51bGxwdHIpKQorICAgICAgICAgICAgdGFzaygpOworICAgIH0KKworICAgIGJvb2wgaXNQ
ZW5kaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1fdGFzazsKKyAgICB9CisK
KyAgICB2b2lkIGNhbmNlbCgpCisgICAgeworICAgICAgICBtX3Rhc2sgPSBudWxscHRyOworICAg
IH0KKworICAgIGNsYXNzIEhhbmRsZSB7CisgICAgcHVibGljOgorICAgICAgICBIYW5kbGUoKSA9
IGRlZmF1bHQ7CisgICAgICAgIGV4cGxpY2l0IEhhbmRsZShDYW5jZWxsYWJsZVRhc2smIHRhc2sp
CisgICAgICAgICAgICA6IG1fdGFzayhtYWtlV2Vha1B0cih0YXNrKSkKKyAgICAgICAgeyB9Cisg
ICAgICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV90YXNrICYmIG1fdGFzay0+
aXNQZW5kaW5nKCk7IH0KKyAgICAgICAgdm9pZCBjYW5jZWwoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAobV90YXNrKQorICAgICAgICAgICAgICAgIG1fdGFzay0+Y2FuY2VsKCk7CisgICAg
ICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICBXZWFrUHRyPENhbmNlbGxhYmxlVGFzaz4gbV90
YXNrOworICAgIH07CisKKyAgICBIYW5kbGUgY3JlYXRlSGFuZGxlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBIYW5kbGUgeyAqdGhpcyB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBGdW5jdGlv
bjx2b2lkKCk+IG1fdGFzazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6
OkNhbmNlbGxhYmxlVGFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaCBi
L1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAppbmRleCAyZTlmNTY2Zjg1YTExMzNhMzcxNTFkODAx
YjM0ZTc4YWYyMjIwZTkxLi5jMzU1MWE3NzU5YzYwYWI4N2NkM2ExOGNmNjdhYWJiNTc5NGJiYWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKKysrIGIvU291cmNlL1dURi93
dGYvV2Vha1B0ci5oCkBAIC0xNTksNiArMTU5LDkgQEAgcHVibGljOgogICAgICAgICBtX2ltcGwt
PmNsZWFyKCk7CiAgICAgfQogCisgICAgV2Vha1B0ckZhY3RvcnkoV2Vha1B0ckZhY3RvcnkmJikg
PSBkZWZhdWx0OworICAgIFdlYWtQdHJGYWN0b3J5JiBvcGVyYXRvcj0oV2Vha1B0ckZhY3Rvcnkm
JikgPSBkZWZhdWx0OworCiAgICAgdm9pZCBpbml0aWFsaXplSWZOZWVkZWQoY29uc3QgVCYgb2Jq
ZWN0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1faW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKaW5k
ZXggYjU1ZDYwYjNiYzVmMGQzNzU3MDMwY2ZjMmM0MTk4OWI2MmJmMzEwYS4uZDJhZGE1NjI1MzEx
M2MxZGYzYjQ4NDIyMDJhYTAzNzc0NGYxNTU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKQEAgLTQzLDgg
KzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIoRG9jdW1lbnQmIGRvY3VtZW50KQotICAg
IDogbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzaygmZG9jdW1lbnQpCi0gICAgLCBtX2RvY3VtZW50
KGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKIHsKICAgICBpZiAoYXV0byog
cGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkgewogICAgICAgICBpZiAocGFnZS0+c2V0dGluZ3MoKS5o
aWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQoKSAmJiAhcGFnZS0+aXNWaXNp
YmxlKCkpCkBAIC03Myw3ICs3Miw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
OjpyZW1vdmVUaW1lbGluZShEb2N1bWVudFRpbWVsaW5lJiB0aW1lbGluZSkKIAogdm9pZCBEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmRldGFjaEZyb21Eb2N1bWVudCgpCiB7Ci0gICAgbV9j
dXJyZW50VGltZUNsZWFyaW5nVGFzay5jbG9zZSgpOworICAgIG1fY3VycmVudFRpbWVDbGVhcmlu
Z1Rhc2suY2FuY2VsKCk7CiAKICAgICB3aGlsZSAoIW1fdGltZWxpbmVzLmNvbXB1dGVzRW1wdHko
KSkKICAgICAgICAgbV90aW1lbGluZXMuYmVnaW4oKS0+ZGV0YWNoRnJvbURvY3VtZW50KCk7CkBA
IC0yMzMsOCArMjMyLDExIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpjYWNo
ZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBuZXdDCiAgICAgLy8gYW5pbWF0
aW9ucywgc28gd2Ugc2NoZWR1bGUgdGhlIGludmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3RlciBh
IHdoZW5JZGxlIGNhbGxiYWNrIG9uIHRoZSBWTSwgd2hpY2ggd2lsbAogICAgIC8vIGZpcmUgc3lu
Y3Jvbm91c2x5IGlmIG5vIEpTIGlzIHJ1bm5pbmcuCiAgICAgbV93YWl0aW5nT25WTUlkbGUgPSB0
cnVlOwotICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkKLSAg
ICAgICAgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5zY2hlZHVsZVRhc2soc3RkOjpiaW5kKCZE
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSwg
dGhpcykpOworICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkg
eworICAgICAgICBDYW5jZWxsYWJsZVRhc2sgdGFzayhzdGQ6OmJpbmQoJkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lLCB0aGlzKSk7CisgICAg
ICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2sgPSB0YXNrLmNyZWF0ZUhhbmRsZSgpOworICAg
ICAgICBtX2RvY3VtZW50LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5h
bEFzeW5jVGFzaywgV1RGTW92ZSh0YXNrKSk7CisgICAgfQogICAgIC8vIFdlIGV4dGVudCB0aGUg
YXNzb2NpYXRlZCBEb2N1bWVudCdzIGxpZmVjeWNsZSB1bnRpbCB0aGUgVk0gYmVjYW1lIGlkbGUg
c2luY2UgdGhlIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcgogICAgIC8vIGlzIG93bmVkIGJ5
IHRoZSBEb2N1bWVudC4KICAgICBtX2RvY3VtZW50LnZtKCkud2hlbklkbGUoW3RoaXMsIHByb3Rl
Y3RlZERvY3VtZW50ID0gbWFrZVJlZlB0cihtX2RvY3VtZW50KV0oKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKaW5k
ZXggMmExMTA0Zjc5N2Q1MDNmYzQyYTc0M2VlZGRhY2NlZTY2ODJlYWVmMS4uOTcxYmNkNjIxNjRi
M2VlN2VmZGVlYTY5NDI1ZGI1ODU3MDY0MGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaApAQCAtMjUsOSArMjUs
OSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCiAjaW5j
bHVkZSAiUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvQ2FuY2VsbGFibGVUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
QEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlQ2xlYXJDYWNoZWRDdXJy
ZW50VGltZSgpOwogCiAgICAgV2Vha0hhc2hTZXQ8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGlu
ZXM7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFz
azsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNr
OwogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29u
ZHM6Ok1hcmthYmxlVHJhaXRzPiBtX2NhY2hlZEN1cnJlbnRUaW1lOwogICAgIGJvb2wgbV9pc1N1
c3BlbmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXgg
YTY2ZmFmZTZjZGRhZjg0YjM3Y2U5YTZlNmFmMTZkOWIwNjcwZjc0NC4uNDUwNGVhMTFmOTgxOTM1
YzFiODhiZmQ5ZDEyMGU2OTllZjZiMDlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL0NhbmNlbGxhYmxlVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTExMCw2ICsxMTEsMTcgQEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBDYW5jZWxsYWJsZVRhc2s6Okhh
bmRsZSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRh
c2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKKyAgICB7CisgICAgICAg
IENhbmNlbGxhYmxlVGFzayBjYW5jZWxsYWJsZVRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgICAg
IGF1dG8gdGFza0hhbmRsZSA9IGNhbmNlbGxhYmxlVGFzay5jcmVhdGVIYW5kbGUoKTsKKyAgICAg
ICAgb2JqZWN0LnF1ZXVlVGFza0luRXZlbnRMb29wKHNvdXJjZSwgW3Byb3RlY3RlZE9iamVjdCA9
IG1ha2VSZWYob2JqZWN0KSwgYWN0aXZpdHkgPSBvYmplY3QuQWN0aXZlRE9NT2JqZWN0OjptYWtl
UGVuZGluZ0FjdGl2aXR5KG9iamVjdCksIGNhbmNlbGxhYmxlVGFzayA9IFdURk1vdmUoY2FuY2Vs
bGFibGVUYXNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbmNlbGxhYmxlVGFzaygpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHRhc2tIYW5kbGU7CisgICAgfQorCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CiAgICAg
c3RhdGljIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFy
Z2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50VHlwZT4mJiBldmVudCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAzZjQ4ZWRiMmU2ODg4
OWMxMDM2ODNkZTYzNGM1ZTBjYTA1NDU1NjIyLi44NzJiMzhiNWY2NDNjOTk0MjRhOWM3Yzg1Y2Rl
YjUzNGU3NmNkMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTM5NCwyMCArMzk0LDggQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fc2Nh
blRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAgLCBt
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhpcywg
JkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1l
cigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRp
bWVyRmlyZWQpCi0gICAgLCBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrKCZkb2N1bWVudCkKLSAg
ICAsIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrKCZkb2N1bWVudCkKLSAg
ICAsIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2soJmRvY3VtZW50KQotICAgICwgbV9tZWRpYUVuZ2lu
ZVVwZGF0ZWRUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fdXBkYXRlUGxheVN0YXRlVGFzaygmZG9j
dW1lbnQpCi0gICAgLCBtX3Jlc3VtZVRhc2soJmRvY3VtZW50KQotICAgICwgbV9zZWVrVGFzaygm
ZG9jdW1lbnQpCi0gICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRh
c2soJmRvY3VtZW50KQogICAgICwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZSgmZG9jdW1l
bnQpCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShFdmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUo
KnRoaXMpKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3ZvbHVtZVJldmVydFRh
c2soJmRvY3VtZW50KQotI2VuZGlmCiAgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRp
bWUoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQogICAgICwgbV9maXJzdFRpbWVQ
bGF5aW5nKHRydWUpCiAgICAgLCBtX3BsYXlpbmcoZmFsc2UpCkBAIC01NzksOSArNTY3LDkgQEAg
SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGlmIChtX2lzb2xhdGVk
V29ybGQpCiAgICAgICAgIG1faXNvbGF0ZWRXb3JsZC0+Y2xlYXJXcmFwcGVycygpOwogCi0gICAg
bV9zZWVrVGFzay5jbG9zZSgpOwotICAgIG1fcmVzdW1lVGFzay5jbG9zZSgpOwotICAgIG1fcGxh
eWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suY2xvc2UoKTsKKyAg
ICBtX3NlZWtUYXNrLmNhbmNlbCgpOworICAgIG1fcmVzdW1lVGFzay5jYW5jZWwoKTsKKyAgICBt
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmNhbmNlbCgp
OwogICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKIAogICAgIG1fY29t
cGxldGVseUxvYWRlZCA9IHRydWU7CkBAIC05OTYsNyArOTg0LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5KCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX2NoZWNr
UGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5zY2hlZHVsZVRhc2soW3RoaXNdIHsKKyAg
ICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzayA9IHF1ZXVlQ2FuY2VsbGFi
bGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQs
IFt0aGlzXSB7CiAgICAgICAgIGNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5KCk7CiAg
ICAgfSk7CiB9CkBAIC0yOTc1LDcgKzI5NjMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
ZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQog
ICAgIC8vIGl0IGlzIHJ1bm5pbmcgdG8gY29tcGxldGUuCiAgICAgaWYgKG1fc2Vla1Rhc2suaXNQ
ZW5kaW5nKCkpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNhbmNlbGxpbmcg
cGVuZGluZyBzZWVrcyIpOwotICAgICAgICBtX3NlZWtUYXNrLmNhbmNlbFRhc2soKTsKKyAgICAg
ICAgbV9zZWVrVGFzay5jYW5jZWwoKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWspIHsKICAg
ICAgICAgICAgIG5vdyA9IG1fcGVuZGluZ1NlZWstPm5vdzsKICAgICAgICAgICAgIG1fcGVuZGlu
Z1NlZWsgPSBudWxscHRyOwpAQCAtMjk5Nyw3ICsyOTg1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVk
aWFUaW0KICAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0
aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9t
RE9NKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBm
cm9tICIsIG5vdywgIiB0byAiLCB0aW1lKTsKLSAgICAgICAgbV9zZWVrVGFzay5zY2hlZHVsZVRh
c2soc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOworICAgICAg
ICBtX3NlZWtUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50
OjpzZWVrVGFzaywgdGhpcykpOwogICAgIH0gZWxzZQogICAgICAgICBzZWVrVGFzaygpOwogCkBA
IC0zNzEyLDcgKzM3MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICBpZiAobV92b2x1bWVSZXZlcnRUYXNrLmlzUGVu
ZGluZygpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgbV92b2x1bWVSZXZlcnRUYXNrLnNj
aGVkdWxlVGFzayhbdGhpcywgb2xkVm9sdW1lXSB7CisgICAgbV92b2x1bWVSZXZlcnRUYXNrID0g
cXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
Ok1lZGlhRWxlbWVudCwgW3RoaXMsIG9sZFZvbHVtZV0gewogICAgICAgICBtX3ZvbHVtZSA9IG9s
ZFZvbHVtZTsKICAgICB9KTsKIApAQCAtNDUwMiw3ICs0NDkwLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MoKQogCiAgICAgYXV0byBsb2dTaXRl
SWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRp
ZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5z
Y2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV9jb25maWd1cmVU
ZXh0VHJhY2tzVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0g
ewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdB
WVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAg
ICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25maWd1
cmVUZXh0VHJhY2tzIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9N
IG11dGF0aW9ucy4KQEAgLTUwNTAsNyArNTAzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRp
ZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
InRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLnNjaGVkdWxl
VGFzayhbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBtX21lZGlhRW5naW5lVXBkYXRl
ZFRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAg
ICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhs
b2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxI
VE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gbWVkaWFFbmdpbmVXYXNV
cGRhdGVkIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0
aW9ucy4KQEAgLTUzNDMsNyArNTMzMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1
bGVVcGRhdGVQbGF5U3RhdGUoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1
bGVkIik7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywgbG9n
U2l0ZUlkZW50aWZpZXJdIHsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2sgPSBxdWV1ZUNhbmNl
bGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGxv
Z1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
ImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gdXBkYXRlUGxheVN0YXRlIGNhbGxzIG1ldGhvZHMgdGhh
dCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTU0NzUsMTMgKzU0NjMs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wUGVyaW9kaWNUaW1lcnMoKQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdUYXNrcygpCiB7Ci0gICAgbV9jb25maWd1
cmVUZXh0VHJhY2tzVGFzay5jYW5jZWxUYXNrKCk7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0
Q29tcGF0aWJpbGl0eVRhc2suY2FuY2VsVGFzaygpOwotICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRh
c2suY2FuY2VsVGFzaygpOwotICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzay5jYW5jZWxUYXNr
KCk7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrLmNhbmNlbFRhc2soKTsKKyAgICBtX2NvbmZp
Z3VyZVRleHRUcmFja3NUYXNrLmNhbmNlbCgpOworICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENv
bXBhdGliaWxpdHlUYXNrLmNhbmNlbCgpOworICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2suY2Fu
Y2VsKCk7CisgICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmNhbmNlbCgpOworICAgIG1fdXBk
YXRlUGxheVN0YXRlVGFzay5jYW5jZWwoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IG1fdm9sdW1lUmV2ZXJ0VGFzay5jYW5jZWxUYXNrKCk7CisgICAgbV92b2x1bWVSZXZlcnRUYXNr
LmNhbmNlbCgpOwogI2VuZGlmCiB9CiAKQEAgLTU2MzcsMjAgKzU2MjUsMTggQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpCiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKCkKIHsKLSAgICBtX2NvbmZpZ3VyZVRl
eHRUcmFja3NUYXNrLmNsb3NlKCk7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJp
bGl0eVRhc2suY2xvc2UoKTsKLSAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNsb3NlKCk7Ci0g
ICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmNsb3NlKCk7Ci0gICAgbV91cGRhdGVQbGF5U3Rh
dGVUYXNrLmNsb3NlKCk7Ci0gICAgbV9yZXN1bWVUYXNrLmNsb3NlKCk7Ci0gICAgbV9zZWVrVGFz
ay5jbG9zZSgpOwotICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0
aW9uc1Rhc2suY2xvc2UoKTsKLSAgICBtX3NlZWtUYXNrLmNsb3NlKCk7Ci0gICAgbV9yZXN1bWVU
YXNrLmNsb3NlKCk7CisgICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5jYW5jZWwoKTsKKyAg
ICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5jYW5jZWwoKTsKKyAgICBt
X3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNhbmNlbCgpOworICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVk
VGFzay5jYW5jZWwoKTsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2suY2FuY2VsKCk7CisgICAg
bV9yZXN1bWVUYXNrLmNhbmNlbCgpOworICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7CisgICAgbV9w
bGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5jYW5jZWwoKTsK
ICAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmNsb3NlKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3ZvbHVt
ZVJldmVydFRhc2suY2xvc2UoKTsKKyAgICBtX3ZvbHVtZVJldmVydFRhc2suY2FuY2VsKCk7CiAj
ZW5kaWYKIH0KIApAQCAtNTY4NSw3ICs1NjcxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
dXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCi0gICAgbV9yZXN1bWVUYXNrLmNhbmNlbFRhc2soKTsKKyAgICBtX3Jlc3VtZVRhc2suY2Fu
Y2VsKCk7CiAKICAgICBzd2l0Y2ggKHJlYXNvbikgewogICAgIGNhc2UgUmVhc29uRm9yU3VzcGVu
c2lvbjo6QmFja0ZvcndhcmRDYWNoZToKQEAgLTU3MjQsNyArNTcxMCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cmVzdW1lKCkKICAgICAgICAgLy8gIE1FRElBX0VSUl9BQk9SVEVEIHdoaWxl
IHRoZSBhYm9ydEV2ZW50IGlzIGJlaW5nIHNlbnQsIGJ1dCBjbGVhcmVkIGltbWVkaWF0ZWx5IGFm
dGVyd2FyZHMpLgogICAgICAgICAvLyBUaGlzIGJlaGF2aW9yIGlzIG5vdCBzcGVjaWZpZWQgYnV0
IGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSB0aGluZyB0byBkby4KICAgICAgICAgLy8gQXMgaXQg
aXMgbm90IHNhZmUgdG8gaW1tZWRhdGVseSBzdGFydCBsb2FkaW5nIG5vdywgbGV0J3Mgc2NoZWR1
bGUgYSBsb2FkLgotICAgICAgICBtX3Jlc3VtZVRhc2suc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgm
SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQsIHRoaXMpKTsKKyAgICAgICAgbV9yZXN1
bWVUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpwcmVw
YXJlRm9yTG9hZCwgdGhpcykpOwogICAgIH0KIAogICAgIHVwZGF0ZVJlbmRlcmVyKCk7CkBAIC02
NjM2LDcgKzY2MjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3Vi
dGl0bGVUcmFja3NBc1VuY29uZmlndXJlZChSZWNvbmZpZ3VyZU1vZAogICAgIH0KIAogICAgIG1f
cHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwotICAgIG1fY29uZmlndXJlVGV4dFRy
YWNrc1Rhc2suY2FuY2VsVGFzaygpOworICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suY2Fu
Y2VsKCk7CiAgICAgaWYgKG1vZGUgPT0gSW1tZWRpYXRlbHkpIHsKICAgICAgICAgUmVmPEhUTUxN
ZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25maWd1cmVUZXh0VHJhY2tz
IGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4K
ICAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOwpAQCAtNzE1Nyw3ICs3MTQzLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckJ1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWQo
KQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxX
QVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9idWZm
ZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVu
dGlmaWVyXSB7CisgICAgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzayA9IHF1ZXVlQ2Fu
Y2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVs
ZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0o
bG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVy
LCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgaWYgKCFtX3BsYXllciB8fCAhbV90
ZXh0VHJhY2tzKQpAQCAtNzc4OCw3ICs3Nzc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9
IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sg
c2NoZWR1bGVkIik7Ci0gICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzay5zY2hlZHVsZVRhc2soW3Ro
aXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzayA9IHF1
ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpN
ZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURf
UEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVu
dGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVs
ZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyB1cGRhdGVNZWRpYVN0YXRlIGNhbGxzIG1l
dGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTgwNjIs
MTQgKzgwNDgsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFu
YWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCgpCiAgICAgaWYgKCFtZWRpYVNlc3Np
b24oKS5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVV
c2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlcikpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIG1f
cGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suc2NoZWR1bGVU
YXNrKFtwcm90ZWN0ZWRUaGlzXSAoKSB7Ci0gICAgICAgIGF1dG8mIG1lZGlhRWxlbWVudFNlc3Np
b24gPSBwcm90ZWN0ZWRUaGlzLT5tZWRpYVNlc3Npb24oKTsKLSAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPmlzUGxheWluZygpIHx8IG1lZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QXV0b3BsYXlpbmcgfHwgbWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0
ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKQorICAgIG1fcGxheWJhY2tDb250
cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhp
c10gKCkgeworICAgICAgICBhdXRvJiBtZWRpYUVsZW1lbnRTZXNzaW9uID0gbWVkaWFTZXNzaW9u
KCk7CisgICAgICAgIGlmIChpc1BsYXlpbmcoKSB8fCBtZWRpYUVsZW1lbnRTZXNzaW9uLnN0YXRl
KCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1dG9wbGF5aW5nIHx8IG1lZGlhRWxlbWVudFNl
c3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBtZWRpYUVsZW1lbnRTZXNzaW9uLmFkZEJlaGF2aW9yUmVz
dHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29u
dHJvbHNNYW5hZ2VyKTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2NoZWR1bGVQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlclVwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyVXBkYXRlKCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggMDkyYjhhZjljOGEzMmRhZTE3YjJmNmFmMjFiYzJhZDRhM2I2YzRhZC4u
ODBjZjY4ZTZhNGYzMGZjNzdhMzRjNTRlY2YwNjhlMjIwYmUyNWY2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBdWRp
b1RyYWNrLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJEZWZlcnJhYmxlVGFzay5oIgogI2luY2x1ZGUg
IkV2ZW50TG9vcEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgpAQCAtOTQxLDIwICs5NDAsMjAgQEAgcHJpdmF0
ZToKICAgICBUaW1lciBtX3NjYW5UaW1lcjsKICAgICBUaW1lciBtX3BsYXliYWNrQ29udHJvbHNN
YW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcjsKICAgICBUaW1lciBtX3NlZWtUb1BsYXli
YWNrUG9zaXRpb25FbmRlZFRpbWVyOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fY29u
ZmlndXJlVGV4dFRyYWNrc1Rhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9jaGVj
a1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJs
ZVRhc2sgbV91cGRhdGVNZWRpYVN0YXRlVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFz
ayBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sg
bV91cGRhdGVQbGF5U3RhdGVUYXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fcmVz
dW1lVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX3NlZWtUYXNrOwotICAgIEV2
ZW50TG9vcERlZmVycmFibGVUYXNrIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJl
c3RyaWN0aW9uc1Rhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9idWZmZXJlZFRp
bWVSYW5nZXNDaGFuZ2VkVGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2NvbmZp
Z3VyZVRleHRUcmFja3NUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fY2hlY2tQ
bGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFu
ZGxlIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUg
bV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1f
dXBkYXRlUGxheVN0YXRlVGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3Jlc3Vt
ZVRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9zZWVrVGFzazsKKyAgICBDYW5j
ZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fYnVmZmVyZWRUaW1l
UmFuZ2VzQ2hhbmdlZFRhc2s7CiAgICAgRXZlbnRMb29wVGFza1F1ZXVlIG1fcmVzb3VyY2VTZWxl
Y3Rpb25UYXNrUXVldWU7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdl
czsKICAgICBVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBt
X3ZvbHVtZVJldmVydFRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV92b2x1bWVS
ZXZlcnRUYXNrOwogI2VuZGlmCiAKICAgICBQbGF5UHJvbWlzZVZlY3RvciBtX3BlbmRpbmdQbGF5
UHJvbWlzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZlcnJhYmxl
VGFzay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaAppbmRleCAz
NTVhNzdkN2Q2YjhhNDI0NzJlM2EyNDkzYmQwODJiMThhOTdjMDcwLi44ZTg4OTIyODA1YTI4OWVk
OGNhYzkxN2Y4YjQ3YTAyZjkzYjA0ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EZWZlcnJhYmxlVGFzay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmVy
cmFibGVUYXNrLmgKQEAgLTI1LDE1ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRXZlbnRMb29wLmgi
CiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZWZlcnJhYmxlVGFz
a0Jhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGVmZXJyYWJsZVRhc2tCYXNlPiB7CitjbGFz
cyBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWFpblRo
cmVhZERlZmVycmFibGVUYXNrPiB7CiBwdWJsaWM6CisgICAgTWFpblRocmVhZERlZmVycmFibGVU
YXNrKCkgPSBkZWZhdWx0OworCiAgICAgdm9pZCBjbG9zZSgpCiAgICAgewogICAgICAgICBjYW5j
ZWxUYXNrKCk7CkBAIC00OCw2NyArNDcsMjcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BlbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGVuZGluZzsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgfkRl
ZmVycmFibGVUYXNrQmFzZSgpID0gZGVmYXVsdDsKLSAgICBib29sIGlzQ2xvc2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Nsb3NlZDsgfQotICAgIHZvaWQgc2V0SXNQZW5kaW5nKGJvb2wgaXNQZW5k
aW5nKSB7IG1faXNQZW5kaW5nID0gaXNQZW5kaW5nOyB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBt
X2lzUGVuZGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKLX07
Ci0KLWNsYXNzIE1haW5UaHJlYWREZWZlcnJhYmxlVGFzayA6IHB1YmxpYyBEZWZlcnJhYmxlVGFz
a0Jhc2UgewotcHVibGljOgotICAgIE1haW5UaHJlYWREZWZlcnJhYmxlVGFzaygpCi0gICAgICAg
IDogbV9kaXNwYXRjaGVyKCkKLSAgICB7IH0KLQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKEZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQogICAgIHsKLSAgICAgICAgaWYgKGlzQ2xvc2VkKCkpCisgICAg
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhbmNl
bFRhc2soKTsKIAotICAgICAgICBzZXRJc1BlbmRpbmcodHJ1ZSk7CisgICAgICAgIG1faXNQZW5k
aW5nID0gdHJ1ZTsKICAgICAgICAgbV9kaXNwYXRjaGVyLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQVNTRVJU
KHdlYWtUaGlzLT5pc1BlbmRpbmcoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2V0SXNQZW5k
aW5nKGZhbHNlKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2lzUGVuZGluZyA9IGZhbHNlOwog
ICAgICAgICAgICAgdGFzaygpOwogICAgICAgICB9KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAg
TWFpblRocmVhZFRhc2tEaXNwYXRjaGVyIG1fZGlzcGF0Y2hlcjsKKyAgICBib29sIG1faXNQZW5k
aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwogfTsKIAotLy8g
U2ltaWxhciB0byBEZWZlcnJhYmxlVGFzayBidXQgYmFzZWQgb24gdGhlIEhUTUwgZXZlbnQgbG9v
cC4KLWNsYXNzIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIDogcHVibGljIERlZmVycmFibGVUYXNr
QmFzZSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAg
RXZlbnRMb29wRGVmZXJyYWJsZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
LSAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQotICAgIHsgfQot
Ci0gICAgLy8gRklYTUU6IFBhc3MgVGFza1NvdXJjZSBpbnN0ZWFkIG9mIGFzc3VtaW5nIFRhc2tT
b3VyY2U6Ok1lZGlhRWxlbWVudC4KLSAgICB2b2lkIHNjaGVkdWxlVGFzayhGdW5jdGlvbjx2b2lk
KCk+JiYgdGFzaykKLSAgICB7Ci0gICAgICAgIGlmIChpc0Nsb3NlZCgpIHx8ICFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FuY2VsVGFz
aygpOwotCi0gICAgICAgIHNldElzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2sp
XSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIEFTU0VSVCh3ZWFrVGhpcy0+aXNQZW5kaW5nKCkpOwotICAgICAgICAgICAg
d2Vha1RoaXMtPnNldElzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgICAgICB0YXNrKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0KLX07Ci0KLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430701</attachid>
            <date>2021-06-06 16:50:49 -0700</date>
            <delta_ts>2021-06-06 19:32:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226700-20210606165048.patch</filename>
            <type>text/plain</type>
            <size>31512</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkzYTNkNDJkMDg5YzBmMDA2OTI0MjVm
NzViMmEyMjZjMDYzZTI4YmMuLmMwODQyYTI1ZmYyZjQ0NjY2NWMxZTQ0MjYwZmVjM2NiYzI2ZGY4
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExvb3BEZWZlcnJh
YmxlVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlIG5ldyBXVEY6OkNhbmNlbGxhYmxlVGFzayB0eXBlIHdoaWNoIGlzIGEgd3JhcHBl
ciBhcm91bmQgYSBXVEY6OkZ1bmN0aW9uLgorICAgICAgICBJdCBjYW4gY3JlYXRlIGEgaGFuZGxl
IGZvciB0aGUgdGFzayBhbmQgdGhpcyBoYW5kbGUgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhl
CisgICAgICAgIHRhc2sgaXMgc3RpbGwgcGVuZGluZyBhbmQgdG8gY2FuY2VsIGl0LiBUaGlzIGlz
IHVzZWZ1bCB3aGVuIHNjaGVkdWxpbmcgdGFza3MgaW4gdGhlCisgICAgICAgIGV2ZW50IGxvb3Ag
Zm9yIGV4YW1wbGUgYXMgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8ga25vdyBpZiBh
IHRhc2sgd2UKKyAgICAgICAgc2NoZWR1bGVkIGlzIHN0aWxsIHBlbmRpbmcgKHRvIGF2b2lkIGRv
dWJsZSBzY2hlZHVsaW5nKSBvciB3aGVyZSB3ZSBuZWVkIHRvIGNhbmNlbAorICAgICAgICBhIHBy
ZXZpb3VzbHkgc2NoZWR1bGVkIHRhc2suCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3Rm
L0NhbmNlbGxhYmxlVGFzay5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNr
OjpDYW5jZWxsYWJsZVRhc2spOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6OmlzUGVuZGluZyBjb25zdCk6
CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6
Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxh
YmxlVGFzazo6SGFuZGxlOjppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV1RGOjpDYW5jZWxs
YWJsZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNr
OjpjcmVhdGVIYW5kbGUpOgorCiAyMDIxLTA2LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKCkgc2hvdWxkIHJldHVy
biBkYXRhIGFzIGB2b2lkKmAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNjAwMzY1YjE1MDg1YTgyMDRhYmE5MGIx
ODgyZjFhMWQ4Mjc1NWU4Li5jZTA4ZjgyOGQ0YTQ5NTUxNzg0MjUzYjRiZWNjMmU4NzkzMDA5NGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExvb3BE
ZWZlcnJhYmxlVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3RvcCB1c2luZyBsZWdhY3kgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgYW5kIGRyb3Ag
dGhlIGNsYXNzIGVudGlyZWx5LiBDYWxsIHNpdGVzIGFyZQorICAgICAgICBub3cgdXNpbmcgdGhl
IEhUTUwgZXZlbnQgbG9vcCBkaXJlY3RseSBhbmQgdXNpbmcgV1RGOjpDYW5jZWxsYWJsZVRhc2sg
dG8gd3JhcCB0aGUgdGFzaworICAgICAgICB0aGV5IHNjaGVkdWxlLiBUaGlzIGFjaGlldmVzIHRo
ZSBzYW1lIHJlc3VsdCBhcyBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBidXQgaXMgbW9yZQorICAg
ICAgICBsaWdodHdlaWdodCBhbmQgZmxleGlibGUuCisKKyAgICAgICAgKiBhbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGltZWxpbmVzQ29udHJvbGxlcjo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6ZGV0YWNoRnJvbURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y2Fj
aGVDdXJyZW50VGltZSk6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRhdGVQ
bGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVu
ZGluZ1Rhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFz
a1F1ZXVlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNV
bmNvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJCdWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJp
Y3Rpb25zVGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaDoKKwogMjAyMS0wNi0wNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgbGVnYWN5
IEV2ZW50TG9vcEV2ZW50UXVldWUgYW5kIEV2ZW50TG9vcFRhc2tRdWV1ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWE5NDFhMDcwYmM5NzIzYTk0ZWM4M2Mx
YzNjYzY0MjU1ZTM3YTM0Mi4uNzhjNGZiMjNlMzUzN2E4MDVkNDk2MjUyOTkzN2M5YWE4OGQyN2Q2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzgsNiAr
Mzc4LDcgQEAKIAkJNDMwQjQ3ODcxQUFBQUMxQTAwMTIyM0RBIC8qIFN0cmluZ0NvbW1vbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb21tb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyN0M1QTkyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVNDSUlDVHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Njg1NjcyMjUwOTRGRTgwMDhDQ0Ew
NSAvKiBUaHJlYWRTYW5pdGl6ZXJTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZFNhbml0aXplclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxhYmxlVGFzay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYW5jZWxsYWJsZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkU5MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3Vu
dGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJp
bmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFs
U3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTMsOCArNjU0
LDggQEAKIAkJQThBNDczMjIxNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzMyMzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzMyNDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczMjUxNTFBODI1QjAwNDEy
M0ZGIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyNTE1
MUE4MjVCMDA0MTIzRUUgLyogU3RyaW5nQnVpbGRlckludGVybmFscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVySW50ZXJuYWxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4QTQ3MzI1MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWls
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjYxNTFBODI1QjAwNDEyM0ZGIC8q
IFN0cmluZ0NvbmNhdGVuYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmluZ0NvbmNhdGVuYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI3
MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0hhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThB
NDczMjgxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05ODMsNiArOTg0LDcgQEAKIAkJCQkwRkVDM0M0RjFGMzIzQzY4MDBGNTlCNkMg
LyogQ2FnZWRQdHIuaCAqLywKIAkJCQkwRjVGM0Q2ODFGM0ZFQkE2MDBCMTE1QTIgLyogQ2FnZWRV
bmlxdWVQdHIuaCAqLywKIAkJCQk0MTNGRThGNTFGOEQyRUFCMDBGNkQ3RDcgLyogQ2FsbGJhY2tB
Z2dyZWdhdG9yLmggKi8sCisJCQkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxh
YmxlVGFzay5oICovLAogCQkJCUE4QTQ3MjZBMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQXJp
dGhtZXRpYy5oICovLAogCQkJCUE4QTQ3MjZCMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQm9v
bGVhbi5oICovLAogCQkJCTlCQjkxRjUxMjY0OEVBNEQwMEE1NjIxNyAvKiBDaGVja2VkUHRyLmgg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDdlYTEzZDAxMTVlN2NmMTY2Y2EwN2U5YTM0MDk0
NjkxNjAxYjI1MzkuLmJiZTk5MmI5YWJlN2NjNmE5NTI0ZTZlMjEyNzE3NTEzNGI0MzgzNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIHNldChXVEZfUFVCTElDX0hFQURF
UlMKICAgICBDYWdlZFB0ci5oCiAgICAgQ2FnZWRVbmlxdWVQdHIuaAogICAgIENhbGxiYWNrQWdn
cmVnYXRvci5oCisgICAgQ2FuY2VsbGFibGVUYXNrLmgKICAgICBDaGVja2VkQXJpdGhtZXRpYy5o
CiAgICAgQ2hlY2tlZEJvb2xlYW4uaAogICAgIENoZWNrZWRQdHIuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmggYi9Tb3VyY2UvV1RGL3d0Zi9DYW5jZWxsYWJs
ZVRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZjI3MTQyMjI5ZmIwM2IwNDBlOTc3YTEzOGQ3NzlhMzg3YTQ5
YjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgK
QEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBDYW5jZWxsYWJsZVRhc2tI
YW5kbGU7CisKK2NsYXNzIENhbmNlbGxhYmxlVGFzayB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
Q2FuY2VsbGFibGVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQorICAgICAgICA6IG1fdGFz
a1dyYXBwZXIobWFrZVVuaXF1ZVJlZjxUYXNrV3JhcHBlcj4oV1RGTW92ZSh0YXNrKSkpCisgICAg
eworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3IoKSgpCisgICAgeworICAgICAgICBpZiAoYXV0
byB0YXNrID0gc3RkOjpleGNoYW5nZShtX3Rhc2tXcmFwcGVyLT50YXNrLCBudWxscHRyKSkKKyAg
ICAgICAgICAgIHRhc2soKTsKKyAgICB9CisKKyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gISFtX3Rhc2tXcmFwcGVyLT50YXNrOworICAgIH0KKworICAg
IHZvaWQgY2FuY2VsKCkKKyAgICB7CisgICAgICAgIG1fdGFza1dyYXBwZXItPnRhc2sgPSBudWxs
cHRyOworICAgIH0KKworICAgIHVzaW5nIEhhbmRsZSA9IENhbmNlbGxhYmxlVGFza0hhbmRsZTsK
KyAgICBIYW5kbGUgY3JlYXRlSGFuZGxlKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IENhbmNlbGxhYmxlVGFza0hhbmRsZTsKKyAgICBzdHJ1Y3QgVGFza1dyYXBwZXIgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8VGFza1dyYXBwZXI+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOworICAgICAgICBleHBsaWNpdCBUYXNrV3JhcHBlcihGdW5jdGlvbjx2b2lk
KCk+JiYgdGFzaykgOiB0YXNrKFdURk1vdmUodGFzaykpIHsgfQorICAgICAgICBGdW5jdGlvbjx2
b2lkKCk+IHRhc2s7CisgICAgfTsKKyAgICBVbmlxdWVSZWY8VGFza1dyYXBwZXI+IG1fdGFza1dy
YXBwZXI7Cit9OworCitjbGFzcyBDYW5jZWxsYWJsZVRhc2tIYW5kbGUgeworcHVibGljOgorICAg
IENhbmNlbGxhYmxlVGFza0hhbmRsZSgpID0gZGVmYXVsdDsKKyAgICBib29sIGlzUGVuZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fdGFza1dyYXBwZXIgJiYgbV90YXNrV3JhcHBlci0+dGFzazsgfQor
ICAgIHZvaWQgY2FuY2VsKCkKKyAgICB7CisgICAgICAgIGlmIChtX3Rhc2tXcmFwcGVyKQorICAg
ICAgICAgICAgbV90YXNrV3JhcHBlci0+dGFzayA9IG51bGxwdHI7CisgICAgfQorcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNrOworICAgIGV4cGxpY2l0IENhbmNlbGxh
YmxlVGFza0hhbmRsZShDYW5jZWxsYWJsZVRhc2s6OlRhc2tXcmFwcGVyJiB0YXNrKQorICAgICAg
ICA6IG1fdGFza1dyYXBwZXIobWFrZVdlYWtQdHIodGFzaykpCisgICAgeyB9CisKKyAgICBXZWFr
UHRyPENhbmNlbGxhYmxlVGFzazo6VGFza1dyYXBwZXI+IG1fdGFza1dyYXBwZXI7Cit9OworCitp
bmxpbmUgYXV0byBDYW5jZWxsYWJsZVRhc2s6OmNyZWF0ZUhhbmRsZSgpIC0+IEhhbmRsZQorewor
ICAgIHJldHVybiBIYW5kbGUgeyBtX3Rhc2tXcmFwcGVyLmdldCgpIH07Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNhbmNlbGxhYmxlVGFzazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAK
aW5kZXggYjU1ZDYwYjNiYzVmMGQzNzU3MDMwY2ZjMmM0MTk4OWI2MmJmMzEwYS4uYTJjNjY1OTVm
NDYwZTg2YmIxNDY2OTM2OTU1Yjk1NWQ4YTkwNmExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKQEAgLTQz
LDggKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRG9jdW1lbnRUaW1lbGluZXNDb250
cm9sbGVyOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIoRG9jdW1lbnQmIGRvY3VtZW50KQot
ICAgIDogbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzaygmZG9jdW1lbnQpCi0gICAgLCBtX2RvY3Vt
ZW50KGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKIHsKICAgICBpZiAoYXV0
byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkgewogICAgICAgICBpZiAocGFnZS0+c2V0dGluZ3Mo
KS5oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQoKSAmJiAhcGFnZS0+aXNW
aXNpYmxlKCkpCkBAIC01NCw2ICs1Myw3IEBAIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6
RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKERvY3VtZW50JiBkb2N1bWVudCkKIAogRG9jdW1l
bnRUaW1lbGluZXNDb250cm9sbGVyOjp+RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKCkKIHsK
KyAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmNhbmNlbCgpOwogfQogCiB2b2lkIERvY3Vt
ZW50VGltZWxpbmVzQ29udHJvbGxlcjo6YWRkVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYgdGlt
ZWxpbmUpCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
OjpyZW1vdmVUaW1lbGluZShEb2N1bWVudFRpbWVsaW5lJiB0aW1lbGluZSkKIAogdm9pZCBEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmRldGFjaEZyb21Eb2N1bWVudCgpCiB7Ci0gICAgbV9j
dXJyZW50VGltZUNsZWFyaW5nVGFzay5jbG9zZSgpOworICAgIG1fY3VycmVudFRpbWVDbGVhcmlu
Z1Rhc2suY2FuY2VsKCk7CiAKICAgICB3aGlsZSAoIW1fdGltZWxpbmVzLmNvbXB1dGVzRW1wdHko
KSkKICAgICAgICAgbV90aW1lbGluZXMuYmVnaW4oKS0+ZGV0YWNoRnJvbURvY3VtZW50KCk7CkBA
IC0yMzMsOCArMjMzLDExIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpjYWNo
ZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBuZXdDCiAgICAgLy8gYW5pbWF0
aW9ucywgc28gd2Ugc2NoZWR1bGUgdGhlIGludmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3RlciBh
IHdoZW5JZGxlIGNhbGxiYWNrIG9uIHRoZSBWTSwgd2hpY2ggd2lsbAogICAgIC8vIGZpcmUgc3lu
Y3Jvbm91c2x5IGlmIG5vIEpTIGlzIHJ1bm5pbmcuCiAgICAgbV93YWl0aW5nT25WTUlkbGUgPSB0
cnVlOwotICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkKLSAg
ICAgICAgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5zY2hlZHVsZVRhc2soc3RkOjpiaW5kKCZE
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGltZSwg
dGhpcykpOworICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkg
eworICAgICAgICBDYW5jZWxsYWJsZVRhc2sgdGFzayhzdGQ6OmJpbmQoJkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lLCB0aGlzKSk7CisgICAg
ICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2sgPSB0YXNrLmNyZWF0ZUhhbmRsZSgpOworICAg
ICAgICBtX2RvY3VtZW50LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5h
bEFzeW5jVGFzaywgV1RGTW92ZSh0YXNrKSk7CisgICAgfQogICAgIC8vIFdlIGV4dGVudCB0aGUg
YXNzb2NpYXRlZCBEb2N1bWVudCdzIGxpZmVjeWNsZSB1bnRpbCB0aGUgVk0gYmVjYW1lIGlkbGUg
c2luY2UgdGhlIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcgogICAgIC8vIGlzIG93bmVkIGJ5
IHRoZSBEb2N1bWVudC4KICAgICBtX2RvY3VtZW50LnZtKCkud2hlbklkbGUoW3RoaXMsIHByb3Rl
Y3RlZERvY3VtZW50ID0gbWFrZVJlZlB0cihtX2RvY3VtZW50KV0oKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKaW5k
ZXggMmExMTA0Zjc5N2Q1MDNmYzQyYTc0M2VlZGRhY2NlZTY2ODJlYWVmMS4uOTcxYmNkNjIxNjRi
M2VlN2VmZGVlYTY5NDI1ZGI1ODU3MDY0MGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaApAQCAtMjUsOSArMjUs
OSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCiAjaW5j
bHVkZSAiUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvQ2FuY2VsbGFibGVUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4K
QEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlQ2xlYXJDYWNoZWRDdXJy
ZW50VGltZSgpOwogCiAgICAgV2Vha0hhc2hTZXQ8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGlu
ZXM7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFz
azsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNr
OwogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNlY29u
ZHM6Ok1hcmthYmxlVHJhaXRzPiBtX2NhY2hlZEN1cnJlbnRUaW1lOwogICAgIGJvb2wgbV9pc1N1
c3BlbmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXgg
YTY2ZmFmZTZjZGRhZjg0YjM3Y2U5YTZlNmFmMTZkOWIwNjcwZjc0NC4uNDUwNGVhMTFmOTgxOTM1
YzFiODhiZmQ5ZDEyMGU2OTllZjZiMDlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL0NhbmNlbGxhYmxlVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTExMCw2ICsxMTEsMTcgQEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBDYW5jZWxsYWJsZVRhc2s6Okhh
bmRsZSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRh
c2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKKyAgICB7CisgICAgICAg
IENhbmNlbGxhYmxlVGFzayBjYW5jZWxsYWJsZVRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgICAg
IGF1dG8gdGFza0hhbmRsZSA9IGNhbmNlbGxhYmxlVGFzay5jcmVhdGVIYW5kbGUoKTsKKyAgICAg
ICAgb2JqZWN0LnF1ZXVlVGFza0luRXZlbnRMb29wKHNvdXJjZSwgW3Byb3RlY3RlZE9iamVjdCA9
IG1ha2VSZWYob2JqZWN0KSwgYWN0aXZpdHkgPSBvYmplY3QuQWN0aXZlRE9NT2JqZWN0OjptYWtl
UGVuZGluZ0FjdGl2aXR5KG9iamVjdCksIGNhbmNlbGxhYmxlVGFzayA9IFdURk1vdmUoY2FuY2Vs
bGFibGVUYXNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbmNlbGxhYmxlVGFzaygpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHRhc2tIYW5kbGU7CisgICAgfQorCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CiAgICAg
c3RhdGljIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFy
Z2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50VHlwZT4mJiBldmVudCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAzZjQ4ZWRiMmU2ODg4
OWMxMDM2ODNkZTYzNGM1ZTBjYTA1NDU1NjIyLi44NzJiMzhiNWY2NDNjOTk0MjRhOWM3Yzg1Y2Rl
YjUzNGU3NmNkMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTM5NCwyMCArMzk0LDggQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fc2Nh
blRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAgLCBt
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhpcywg
JkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1l
cigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRp
bWVyRmlyZWQpCi0gICAgLCBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrKCZkb2N1bWVudCkKLSAg
ICAsIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrKCZkb2N1bWVudCkKLSAg
ICAsIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2soJmRvY3VtZW50KQotICAgICwgbV9tZWRpYUVuZ2lu
ZVVwZGF0ZWRUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fdXBkYXRlUGxheVN0YXRlVGFzaygmZG9j
dW1lbnQpCi0gICAgLCBtX3Jlc3VtZVRhc2soJmRvY3VtZW50KQotICAgICwgbV9zZWVrVGFzaygm
ZG9jdW1lbnQpCi0gICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRh
c2soJmRvY3VtZW50KQogICAgICwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZSgmZG9jdW1l
bnQpCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShFdmVudExvb3BFdmVudFF1ZXVlOjpjcmVhdGUo
KnRoaXMpKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3ZvbHVtZVJldmVydFRh
c2soJmRvY3VtZW50KQotI2VuZGlmCiAgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRp
bWUoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQogICAgICwgbV9maXJzdFRpbWVQ
bGF5aW5nKHRydWUpCiAgICAgLCBtX3BsYXlpbmcoZmFsc2UpCkBAIC01NzksOSArNTY3LDkgQEAg
SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGlmIChtX2lzb2xhdGVk
V29ybGQpCiAgICAgICAgIG1faXNvbGF0ZWRXb3JsZC0+Y2xlYXJXcmFwcGVycygpOwogCi0gICAg
bV9zZWVrVGFzay5jbG9zZSgpOwotICAgIG1fcmVzdW1lVGFzay5jbG9zZSgpOwotICAgIG1fcGxh
eWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suY2xvc2UoKTsKKyAg
ICBtX3NlZWtUYXNrLmNhbmNlbCgpOworICAgIG1fcmVzdW1lVGFzay5jYW5jZWwoKTsKKyAgICBt
X3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmNhbmNlbCgp
OwogICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKIAogICAgIG1fY29t
cGxldGVseUxvYWRlZCA9IHRydWU7CkBAIC05OTYsNyArOTg0LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5KCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX2NoZWNr
UGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5zY2hlZHVsZVRhc2soW3RoaXNdIHsKKyAg
ICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzayA9IHF1ZXVlQ2FuY2VsbGFi
bGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQs
IFt0aGlzXSB7CiAgICAgICAgIGNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5KCk7CiAg
ICAgfSk7CiB9CkBAIC0yOTc1LDcgKzI5NjMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
ZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQog
ICAgIC8vIGl0IGlzIHJ1bm5pbmcgdG8gY29tcGxldGUuCiAgICAgaWYgKG1fc2Vla1Rhc2suaXNQ
ZW5kaW5nKCkpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNhbmNlbGxpbmcg
cGVuZGluZyBzZWVrcyIpOwotICAgICAgICBtX3NlZWtUYXNrLmNhbmNlbFRhc2soKTsKKyAgICAg
ICAgbV9zZWVrVGFzay5jYW5jZWwoKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWspIHsKICAg
ICAgICAgICAgIG5vdyA9IG1fcGVuZGluZ1NlZWstPm5vdzsKICAgICAgICAgICAgIG1fcGVuZGlu
Z1NlZWsgPSBudWxscHRyOwpAQCAtMjk5Nyw3ICsyOTg1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVk
aWFUaW0KICAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0
aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9t
RE9NKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBm
cm9tICIsIG5vdywgIiB0byAiLCB0aW1lKTsKLSAgICAgICAgbV9zZWVrVGFzay5zY2hlZHVsZVRh
c2soc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOworICAgICAg
ICBtX3NlZWtUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50
OjpzZWVrVGFzaywgdGhpcykpOwogICAgIH0gZWxzZQogICAgICAgICBzZWVrVGFzaygpOwogCkBA
IC0zNzEyLDcgKzM3MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICBpZiAobV92b2x1bWVSZXZlcnRUYXNrLmlzUGVu
ZGluZygpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgbV92b2x1bWVSZXZlcnRUYXNrLnNj
aGVkdWxlVGFzayhbdGhpcywgb2xkVm9sdW1lXSB7CisgICAgbV92b2x1bWVSZXZlcnRUYXNrID0g
cXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
Ok1lZGlhRWxlbWVudCwgW3RoaXMsIG9sZFZvbHVtZV0gewogICAgICAgICBtX3ZvbHVtZSA9IG9s
ZFZvbHVtZTsKICAgICB9KTsKIApAQCAtNDUwMiw3ICs0NDkwLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MoKQogCiAgICAgYXV0byBsb2dTaXRl
SWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRp
ZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5z
Y2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV9jb25maWd1cmVU
ZXh0VHJhY2tzVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0g
ewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdB
WVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAg
ICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25maWd1
cmVUZXh0VHJhY2tzIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9N
IG11dGF0aW9ucy4KQEAgLTUwNTAsNyArNTAzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRp
ZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
InRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLnNjaGVkdWxl
VGFzayhbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBtX21lZGlhRW5naW5lVXBkYXRl
ZFRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAg
ICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhs
b2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxI
VE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gbWVkaWFFbmdpbmVXYXNV
cGRhdGVkIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0
aW9ucy4KQEAgLTUzNDMsNyArNTMzMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1
bGVVcGRhdGVQbGF5U3RhdGUoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lE
RU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1
bGVkIik7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywgbG9n
U2l0ZUlkZW50aWZpZXJdIHsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2sgPSBxdWV1ZUNhbmNl
bGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGxv
Z1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
ImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gdXBkYXRlUGxheVN0YXRlIGNhbGxzIG1ldGhvZHMgdGhh
dCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTU0NzUsMTMgKzU0NjMs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wUGVyaW9kaWNUaW1lcnMoKQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdUYXNrcygpCiB7Ci0gICAgbV9jb25maWd1
cmVUZXh0VHJhY2tzVGFzay5jYW5jZWxUYXNrKCk7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0
Q29tcGF0aWJpbGl0eVRhc2suY2FuY2VsVGFzaygpOwotICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRh
c2suY2FuY2VsVGFzaygpOwotICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzay5jYW5jZWxUYXNr
KCk7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrLmNhbmNlbFRhc2soKTsKKyAgICBtX2NvbmZp
Z3VyZVRleHRUcmFja3NUYXNrLmNhbmNlbCgpOworICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENv
bXBhdGliaWxpdHlUYXNrLmNhbmNlbCgpOworICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2suY2Fu
Y2VsKCk7CisgICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmNhbmNlbCgpOworICAgIG1fdXBk
YXRlUGxheVN0YXRlVGFzay5jYW5jZWwoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IG1fdm9sdW1lUmV2ZXJ0VGFzay5jYW5jZWxUYXNrKCk7CisgICAgbV92b2x1bWVSZXZlcnRUYXNr
LmNhbmNlbCgpOwogI2VuZGlmCiB9CiAKQEAgLTU2MzcsMjAgKzU2MjUsMTggQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpCiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKCkKIHsKLSAgICBtX2NvbmZpZ3VyZVRl
eHRUcmFja3NUYXNrLmNsb3NlKCk7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJp
bGl0eVRhc2suY2xvc2UoKTsKLSAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNsb3NlKCk7Ci0g
ICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmNsb3NlKCk7Ci0gICAgbV91cGRhdGVQbGF5U3Rh
dGVUYXNrLmNsb3NlKCk7Ci0gICAgbV9yZXN1bWVUYXNrLmNsb3NlKCk7Ci0gICAgbV9zZWVrVGFz
ay5jbG9zZSgpOwotICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0
aW9uc1Rhc2suY2xvc2UoKTsKLSAgICBtX3NlZWtUYXNrLmNsb3NlKCk7Ci0gICAgbV9yZXN1bWVU
YXNrLmNsb3NlKCk7CisgICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5jYW5jZWwoKTsKKyAg
ICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5jYW5jZWwoKTsKKyAgICBt
X3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNhbmNlbCgpOworICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVk
VGFzay5jYW5jZWwoKTsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2suY2FuY2VsKCk7CisgICAg
bV9yZXN1bWVUYXNrLmNhbmNlbCgpOworICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7CisgICAgbV9w
bGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5jYW5jZWwoKTsK
ICAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmNsb3NlKCk7CiAgICAgbV9hc3luY0V2
ZW50UXVldWUtPmNsb3NlKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBtX3ZvbHVt
ZVJldmVydFRhc2suY2xvc2UoKTsKKyAgICBtX3ZvbHVtZVJldmVydFRhc2suY2FuY2VsKCk7CiAj
ZW5kaWYKIH0KIApAQCAtNTY4NSw3ICs1NjcxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
dXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCi0gICAgbV9yZXN1bWVUYXNrLmNhbmNlbFRhc2soKTsKKyAgICBtX3Jlc3VtZVRhc2suY2Fu
Y2VsKCk7CiAKICAgICBzd2l0Y2ggKHJlYXNvbikgewogICAgIGNhc2UgUmVhc29uRm9yU3VzcGVu
c2lvbjo6QmFja0ZvcndhcmRDYWNoZToKQEAgLTU3MjQsNyArNTcxMCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cmVzdW1lKCkKICAgICAgICAgLy8gIE1FRElBX0VSUl9BQk9SVEVEIHdoaWxl
IHRoZSBhYm9ydEV2ZW50IGlzIGJlaW5nIHNlbnQsIGJ1dCBjbGVhcmVkIGltbWVkaWF0ZWx5IGFm
dGVyd2FyZHMpLgogICAgICAgICAvLyBUaGlzIGJlaGF2aW9yIGlzIG5vdCBzcGVjaWZpZWQgYnV0
IGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSB0aGluZyB0byBkby4KICAgICAgICAgLy8gQXMgaXQg
aXMgbm90IHNhZmUgdG8gaW1tZWRhdGVseSBzdGFydCBsb2FkaW5nIG5vdywgbGV0J3Mgc2NoZWR1
bGUgYSBsb2FkLgotICAgICAgICBtX3Jlc3VtZVRhc2suc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgm
SFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQsIHRoaXMpKTsKKyAgICAgICAgbV9yZXN1
bWVUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpwcmVw
YXJlRm9yTG9hZCwgdGhpcykpOwogICAgIH0KIAogICAgIHVwZGF0ZVJlbmRlcmVyKCk7CkBAIC02
NjM2LDcgKzY2MjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3Vi
dGl0bGVUcmFja3NBc1VuY29uZmlndXJlZChSZWNvbmZpZ3VyZU1vZAogICAgIH0KIAogICAgIG1f
cHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2UgPSB0cnVlOwotICAgIG1fY29uZmlndXJlVGV4dFRy
YWNrc1Rhc2suY2FuY2VsVGFzaygpOworICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suY2Fu
Y2VsKCk7CiAgICAgaWYgKG1vZGUgPT0gSW1tZWRpYXRlbHkpIHsKICAgICAgICAgUmVmPEhUTUxN
ZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25maWd1cmVUZXh0VHJhY2tz
IGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4K
ICAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOwpAQCAtNzE1Nyw3ICs3MTQzLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckJ1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWQo
KQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxX
QVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9idWZm
ZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVu
dGlmaWVyXSB7CisgICAgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzayA9IHF1ZXVlQ2Fu
Y2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVs
ZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0o
bG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVy
LCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgaWYgKCFtX3BsYXllciB8fCAhbV90
ZXh0VHJhY2tzKQpAQCAtNzc4OCw3ICs3Nzc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9
IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sg
c2NoZWR1bGVkIik7Ci0gICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzay5zY2hlZHVsZVRhc2soW3Ro
aXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzayA9IHF1
ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpN
ZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURf
UEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVu
dGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVs
ZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyB1cGRhdGVNZWRpYVN0YXRlIGNhbGxzIG1l
dGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTgwNjIs
MTQgKzgwNDgsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFu
YWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCgpCiAgICAgaWYgKCFtZWRpYVNlc3Np
b24oKS5oYXNCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVV
c2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlcikpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIG1f
cGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suc2NoZWR1bGVU
YXNrKFtwcm90ZWN0ZWRUaGlzXSAoKSB7Ci0gICAgICAgIGF1dG8mIG1lZGlhRWxlbWVudFNlc3Np
b24gPSBwcm90ZWN0ZWRUaGlzLT5tZWRpYVNlc3Npb24oKTsKLSAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPmlzUGxheWluZygpIHx8IG1lZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6QXV0b3BsYXlpbmcgfHwgbWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0
ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKQorICAgIG1fcGxheWJhY2tDb250
cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhp
c10gKCkgeworICAgICAgICBhdXRvJiBtZWRpYUVsZW1lbnRTZXNzaW9uID0gbWVkaWFTZXNzaW9u
KCk7CisgICAgICAgIGlmIChpc1BsYXlpbmcoKSB8fCBtZWRpYUVsZW1lbnRTZXNzaW9uLnN0YXRl
KCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1dG9wbGF5aW5nIHx8IG1lZGlhRWxlbWVudFNl
c3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBtZWRpYUVsZW1lbnRTZXNzaW9uLmFkZEJlaGF2aW9yUmVz
dHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29u
dHJvbHNNYW5hZ2VyKTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2NoZWR1bGVQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlclVwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyVXBkYXRlKCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggMDkyYjhhZjljOGEzMmRhZTE3YjJmNmFmMjFiYzJhZDRhM2I2YzRhZC4u
ODBjZjY4ZTZhNGYzMGZjNzdhMzRjNTRlY2YwNjhlMjIwYmUyNWY2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJBdWRp
b1RyYWNrLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkNhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJEZWZlcnJhYmxlVGFzay5oIgogI2luY2x1ZGUg
IkV2ZW50TG9vcEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgpAQCAtOTQxLDIwICs5NDAsMjAgQEAgcHJpdmF0
ZToKICAgICBUaW1lciBtX3NjYW5UaW1lcjsKICAgICBUaW1lciBtX3BsYXliYWNrQ29udHJvbHNN
YW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcjsKICAgICBUaW1lciBtX3NlZWtUb1BsYXli
YWNrUG9zaXRpb25FbmRlZFRpbWVyOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fY29u
ZmlndXJlVGV4dFRyYWNrc1Rhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9jaGVj
a1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJs
ZVRhc2sgbV91cGRhdGVNZWRpYVN0YXRlVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFz
ayBtX21lZGlhRW5naW5lVXBkYXRlZFRhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sg
bV91cGRhdGVQbGF5U3RhdGVUYXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fcmVz
dW1lVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX3NlZWtUYXNrOwotICAgIEV2
ZW50TG9vcERlZmVycmFibGVUYXNrIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJl
c3RyaWN0aW9uc1Rhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9idWZmZXJlZFRp
bWVSYW5nZXNDaGFuZ2VkVGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2NvbmZp
Z3VyZVRleHRUcmFja3NUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fY2hlY2tQ
bGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFu
ZGxlIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUg
bV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1f
dXBkYXRlUGxheVN0YXRlVGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3Jlc3Vt
ZVRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9zZWVrVGFzazsKKyAgICBDYW5j
ZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fYnVmZmVyZWRUaW1l
UmFuZ2VzQ2hhbmdlZFRhc2s7CiAgICAgRXZlbnRMb29wVGFza1F1ZXVlIG1fcmVzb3VyY2VTZWxl
Y3Rpb25UYXNrUXVldWU7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdl
czsKICAgICBVbmlxdWVSZWY8RXZlbnRMb29wRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBt
X3ZvbHVtZVJldmVydFRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV92b2x1bWVS
ZXZlcnRUYXNrOwogI2VuZGlmCiAKICAgICBQbGF5UHJvbWlzZVZlY3RvciBtX3BlbmRpbmdQbGF5
UHJvbWlzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZlcnJhYmxl
VGFzay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaAppbmRleCAz
NTVhNzdkN2Q2YjhhNDI0NzJlM2EyNDkzYmQwODJiMThhOTdjMDcwLi44ZTg4OTIyODA1YTI4OWVk
OGNhYzkxN2Y4YjQ3YTAyZjkzYjA0ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EZWZlcnJhYmxlVGFzay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmVy
cmFibGVUYXNrLmgKQEAgLTI1LDE1ICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiRXZlbnRMb29wLmgi
CiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEZWZlcnJhYmxlVGFz
a0Jhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGVmZXJyYWJsZVRhc2tCYXNlPiB7CitjbGFz
cyBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWFpblRo
cmVhZERlZmVycmFibGVUYXNrPiB7CiBwdWJsaWM6CisgICAgTWFpblRocmVhZERlZmVycmFibGVU
YXNrKCkgPSBkZWZhdWx0OworCiAgICAgdm9pZCBjbG9zZSgpCiAgICAgewogICAgICAgICBjYW5j
ZWxUYXNrKCk7CkBAIC00OCw2NyArNDcsMjcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BlbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGVuZGluZzsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgfkRl
ZmVycmFibGVUYXNrQmFzZSgpID0gZGVmYXVsdDsKLSAgICBib29sIGlzQ2xvc2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Nsb3NlZDsgfQotICAgIHZvaWQgc2V0SXNQZW5kaW5nKGJvb2wgaXNQZW5k
aW5nKSB7IG1faXNQZW5kaW5nID0gaXNQZW5kaW5nOyB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBt
X2lzUGVuZGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKLX07
Ci0KLWNsYXNzIE1haW5UaHJlYWREZWZlcnJhYmxlVGFzayA6IHB1YmxpYyBEZWZlcnJhYmxlVGFz
a0Jhc2UgewotcHVibGljOgotICAgIE1haW5UaHJlYWREZWZlcnJhYmxlVGFzaygpCi0gICAgICAg
IDogbV9kaXNwYXRjaGVyKCkKLSAgICB7IH0KLQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKEZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQogICAgIHsKLSAgICAgICAgaWYgKGlzQ2xvc2VkKCkpCisgICAg
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhbmNl
bFRhc2soKTsKIAotICAgICAgICBzZXRJc1BlbmRpbmcodHJ1ZSk7CisgICAgICAgIG1faXNQZW5k
aW5nID0gdHJ1ZTsKICAgICAgICAgbV9kaXNwYXRjaGVyLnBvc3RUYXNrKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQVNTRVJU
KHdlYWtUaGlzLT5pc1BlbmRpbmcoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2V0SXNQZW5k
aW5nKGZhbHNlKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2lzUGVuZGluZyA9IGZhbHNlOwog
ICAgICAgICAgICAgdGFzaygpOwogICAgICAgICB9KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAg
TWFpblRocmVhZFRhc2tEaXNwYXRjaGVyIG1fZGlzcGF0Y2hlcjsKKyAgICBib29sIG1faXNQZW5k
aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwogfTsKIAotLy8g
U2ltaWxhciB0byBEZWZlcnJhYmxlVGFzayBidXQgYmFzZWQgb24gdGhlIEhUTUwgZXZlbnQgbG9v
cC4KLWNsYXNzIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIDogcHVibGljIERlZmVycmFibGVUYXNr
QmFzZSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7Ci1wdWJsaWM6Ci0gICAg
RXZlbnRMb29wRGVmZXJyYWJsZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
LSAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQotICAgIHsgfQot
Ci0gICAgLy8gRklYTUU6IFBhc3MgVGFza1NvdXJjZSBpbnN0ZWFkIG9mIGFzc3VtaW5nIFRhc2tT
b3VyY2U6Ok1lZGlhRWxlbWVudC4KLSAgICB2b2lkIHNjaGVkdWxlVGFzayhGdW5jdGlvbjx2b2lk
KCk+JiYgdGFzaykKLSAgICB7Ci0gICAgICAgIGlmIChpc0Nsb3NlZCgpIHx8ICFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FuY2VsVGFz
aygpOwotCi0gICAgICAgIHNldElzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TWVkaWFFbGVt
ZW50LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2sp
XSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIEFTU0VSVCh3ZWFrVGhpcy0+aXNQZW5kaW5nKCkpOwotICAgICAgICAgICAg
d2Vha1RoaXMtPnNldElzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgICAgICB0YXNrKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0KLX07Ci0KLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430704</attachid>
            <date>2021-06-06 19:08:03 -0700</date>
            <delta_ts>2021-06-06 20:52:40 -0700</delta_ts>
            <desc>Alternative proposal</desc>
            <filename>bug-226700-20210606190803.patch</filename>
            <type>text/plain</type>
            <size>33808</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkzYTNkNDJkMDg5YzBmMDA2OTI0MjVm
NzViMmEyMjZjMDYzZTI4YmMuLmMwODQyYTI1ZmYyZjQ0NjY2NWMxZTQ0MjYwZmVjM2NiYzI2ZGY4
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExvb3BEZWZlcnJh
YmxlVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlIG5ldyBXVEY6OkNhbmNlbGxhYmxlVGFzayB0eXBlIHdoaWNoIGlzIGEgd3JhcHBl
ciBhcm91bmQgYSBXVEY6OkZ1bmN0aW9uLgorICAgICAgICBJdCBjYW4gY3JlYXRlIGEgaGFuZGxl
IGZvciB0aGUgdGFzayBhbmQgdGhpcyBoYW5kbGUgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhl
CisgICAgICAgIHRhc2sgaXMgc3RpbGwgcGVuZGluZyBhbmQgdG8gY2FuY2VsIGl0LiBUaGlzIGlz
IHVzZWZ1bCB3aGVuIHNjaGVkdWxpbmcgdGFza3MgaW4gdGhlCisgICAgICAgIGV2ZW50IGxvb3Ag
Zm9yIGV4YW1wbGUgYXMgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8ga25vdyBpZiBh
IHRhc2sgd2UKKyAgICAgICAgc2NoZWR1bGVkIGlzIHN0aWxsIHBlbmRpbmcgKHRvIGF2b2lkIGRv
dWJsZSBzY2hlZHVsaW5nKSBvciB3aGVyZSB3ZSBuZWVkIHRvIGNhbmNlbAorICAgICAgICBhIHBy
ZXZpb3VzbHkgc2NoZWR1bGVkIHRhc2suCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3Rm
L0NhbmNlbGxhYmxlVGFzay5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNr
OjpDYW5jZWxsYWJsZVRhc2spOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6Om9wZXJh
dG9yKCkpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6OmlzUGVuZGluZyBjb25zdCk6
CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6
Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxh
YmxlVGFzazo6SGFuZGxlOjppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV1RGOjpDYW5jZWxs
YWJsZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNr
OjpjcmVhdGVIYW5kbGUpOgorCiAyMDIxLTA2LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKCkgc2hvdWxkIHJldHVy
biBkYXRhIGFzIGB2b2lkKmAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNjAwMzY1YjE1MDg1YTgyMDRhYmE5MGIx
ODgyZjFhMWQ4Mjc1NWU4Li5jZTA4ZjgyOGQ0YTQ5NTUxNzg0MjUzYjRiZWNjMmU4NzkzMDA5NGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExvb3BE
ZWZlcnJhYmxlVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3RvcCB1c2luZyBsZWdhY3kgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgYW5kIGRyb3Ag
dGhlIGNsYXNzIGVudGlyZWx5LiBDYWxsIHNpdGVzIGFyZQorICAgICAgICBub3cgdXNpbmcgdGhl
IEhUTUwgZXZlbnQgbG9vcCBkaXJlY3RseSBhbmQgdXNpbmcgV1RGOjpDYW5jZWxsYWJsZVRhc2sg
dG8gd3JhcCB0aGUgdGFzaworICAgICAgICB0aGV5IHNjaGVkdWxlLiBUaGlzIGFjaGlldmVzIHRo
ZSBzYW1lIHJlc3VsdCBhcyBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBidXQgaXMgbW9yZQorICAg
ICAgICBsaWdodHdlaWdodCBhbmQgZmxleGlibGUuCisKKyAgICAgICAgKiBhbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGltZWxpbmVzQ29udHJvbGxlcjo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6ZGV0YWNoRnJvbURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y2Fj
aGVDdXJyZW50VGltZSk6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRhdGVQ
bGF5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVu
ZGluZ1Rhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFz
a1F1ZXVlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNV
bmNvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJCdWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJp
Y3Rpb25zVGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaDoKKwogMjAyMS0wNi0wNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgbGVnYWN5
IEV2ZW50TG9vcEV2ZW50UXVldWUgYW5kIEV2ZW50TG9vcFRhc2tRdWV1ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWE5NDFhMDcwYmM5NzIzYTk0ZWM4M2Mx
YzNjYzY0MjU1ZTM3YTM0Mi4uNzhjNGZiMjNlMzUzN2E4MDVkNDk2MjUyOTkzN2M5YWE4OGQyN2Q2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzgsNiAr
Mzc4LDcgQEAKIAkJNDMwQjQ3ODcxQUFBQUMxQTAwMTIyM0RBIC8qIFN0cmluZ0NvbW1vbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb21tb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQyN0M1QTkyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVNDSUlDVHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Njg1NjcyMjUwOTRGRTgwMDhDQ0Ew
NSAvKiBUaHJlYWRTYW5pdGl6ZXJTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZFNhbml0aXplclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxhYmxlVGFzay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYW5jZWxsYWJsZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkU5MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3Vu
dGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJp
bmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFs
U3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTMsOCArNjU0
LDggQEAKIAkJQThBNDczMjIxNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBOEE0NzMyMzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBOEE0NzMyNDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczMjUxNTFBODI1QjAwNDEy
M0ZGIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyNTE1
MUE4MjVCMDA0MTIzRUUgLyogU3RyaW5nQnVpbGRlckludGVybmFscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVySW50ZXJuYWxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4QTQ3MzI1MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWls
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjYxNTFBODI1QjAwNDEyM0ZGIC8q
IFN0cmluZ0NvbmNhdGVuYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmluZ0NvbmNhdGVuYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI3
MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0hhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThB
NDczMjgxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05ODMsNiArOTg0LDcgQEAKIAkJCQkwRkVDM0M0RjFGMzIzQzY4MDBGNTlCNkMg
LyogQ2FnZWRQdHIuaCAqLywKIAkJCQkwRjVGM0Q2ODFGM0ZFQkE2MDBCMTE1QTIgLyogQ2FnZWRV
bmlxdWVQdHIuaCAqLywKIAkJCQk0MTNGRThGNTFGOEQyRUFCMDBGNkQ3RDcgLyogQ2FsbGJhY2tB
Z2dyZWdhdG9yLmggKi8sCisJCQkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxh
YmxlVGFzay5oICovLAogCQkJCUE4QTQ3MjZBMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQXJp
dGhtZXRpYy5oICovLAogCQkJCUE4QTQ3MjZCMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQm9v
bGVhbi5oICovLAogCQkJCTlCQjkxRjUxMjY0OEVBNEQwMEE1NjIxNyAvKiBDaGVja2VkUHRyLmgg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDdlYTEzZDAxMTVlN2NmMTY2Y2EwN2U5YTM0MDk0
NjkxNjAxYjI1MzkuLmJiZTk5MmI5YWJlN2NjNmE5NTI0ZTZlMjEyNzE3NTEzNGI0MzgzNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIHNldChXVEZfUFVCTElDX0hFQURF
UlMKICAgICBDYWdlZFB0ci5oCiAgICAgQ2FnZWRVbmlxdWVQdHIuaAogICAgIENhbGxiYWNrQWdn
cmVnYXRvci5oCisgICAgQ2FuY2VsbGFibGVUYXNrLmgKICAgICBDaGVja2VkQXJpdGhtZXRpYy5o
CiAgICAgQ2hlY2tlZEJvb2xlYW4uaAogICAgIENoZWNrZWRQdHIuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmggYi9Tb3VyY2UvV1RGL3d0Zi9DYW5jZWxsYWJs
ZVRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZTVlOTE3MmFlMmY3OTJjMTk2MDI4OWI2ZGVmOWJkM2QzNGY0
OTZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK2NsYXNzIENhbmNlbGxhYmxlVGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDYW5j
ZWxsYWJsZVRhc2s+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBDYW5jZWxsYWJsZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spIDogbV90
YXNrKFdURk1vdmUodGFzaykpIHsgfQorCisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJl
dHVybiAhIW1fdGFzazsgfQorCisgICAgY2xhc3MgV2Vha0NhbGxhYmxlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIGV4cGxpY2l0IFdlYWtDYWxsYWJsZShDYW5jZWxsYWJsZVRhc2smIHRhc2spIDog
bV90YXNrKG1ha2VXZWFrUHRyKHRhc2spKSB7IH0KKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKCk7
CisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vha1B0cjxDYW5jZWxsYWJsZVRhc2s+IG1fdGFzazsK
KyAgICB9OworCisgICAgV2Vha0NhbGxhYmxlIGNyZWF0ZVdlYWtDYWxsYWJsZSgpIHsgcmV0dXJu
IFdlYWtDYWxsYWJsZSB7ICp0aGlzIH07IH0KKworcHJpdmF0ZToKKyAgICBGdW5jdGlvbjx2b2lk
KCk+IG1fdGFzazsKK307CisKK2lubGluZSB2b2lkIENhbmNlbGxhYmxlVGFzazo6V2Vha0NhbGxh
YmxlOjpvcGVyYXRvcigpKCkKK3sKKyAgICBpZiAoYXV0byB0YXNrID0gc3RkOjpleGNoYW5nZSht
X3Rhc2stPm1fdGFzaywgbnVsbHB0cikpCisgICAgICAgIHRhc2soKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q2FuY2VsbGFibGVUYXNrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcApp
bmRleCBiNTVkNjBiM2JjNWYwZDM3NTcwMzBjZmMyYzQxOTg5YjYyYmYzMTBhLi42N2RkNDBhMTJm
MTk2ZDM4MGJlNTI2MjEyMzUzNzlhNzY0ZDk3M2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcApAQCAtNDMs
OCArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBEb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXI6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcihEb2N1bWVudCYgZG9jdW1lbnQpCi0g
ICAgOiBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fZG9jdW1l
bnQoZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogewogICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWdlLT5zZXR0aW5ncygp
LmhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9uRW5hYmxlZCgpICYmICFwYWdlLT5pc1Zp
c2libGUoKSkKQEAgLTUyLDkgKzUxLDcgQEAgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpE
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIH0KIH0K
IAotRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjp+RG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyKCkKLXsKLX0KK0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6fkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcigpID0gZGVmYXVsdDsKIAogdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRy
b2xsZXI6OmFkZFRpbWVsaW5lKERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKQogewpAQCAtNzMs
NyArNzAsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6cmVtb3ZlVGltZWxp
bmUoRG9jdW1lbnRUaW1lbGluZSYgdGltZWxpbmUpCiAKIHZvaWQgRG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyOjpkZXRhY2hGcm9tRG9jdW1lbnQoKQogewotICAgIG1fY3VycmVudFRpbWVDbGVh
cmluZ1Rhc2suY2xvc2UoKTsKKyAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrID0gbnVsbHB0
cjsKIAogICAgIHdoaWxlICghbV90aW1lbGluZXMuY29tcHV0ZXNFbXB0eSgpKQogICAgICAgICBt
X3RpbWVsaW5lcy5iZWdpbigpLT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsKQEAgLTIzMyw4ICsyMzAs
MTAgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmNhY2hlQ3VycmVudFRpbWUo
UmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIG5ld0MKICAgICAvLyBhbmltYXRpb25zLCBzbyB3ZSBz
Y2hlZHVsZSB0aGUgaW52YWxpZGF0aW9uIHRhc2sgYW5kIHJlZ2lzdGVyIGEgd2hlbklkbGUgY2Fs
bGJhY2sgb24gdGhlIFZNLCB3aGljaCB3aWxsCiAgICAgLy8gZmlyZSBzeW5jcm9ub3VzbHkgaWYg
bm8gSlMgaXMgcnVubmluZy4KICAgICBtX3dhaXRpbmdPblZNSWRsZSA9IHRydWU7Ci0gICAgaWYg
KCFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmlzUGVuZGluZygpKQotICAgICAgICBtX2N1cnJl
bnRUaW1lQ2xlYXJpbmdUYXNrLnNjaGVkdWxlVGFzayhzdGQ6OmJpbmQoJkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lLCB0aGlzKSk7CisgICAg
aWYgKCFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrIHx8ICFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdU
YXNrLT5pc1BlbmRpbmcoKSkgeworICAgICAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrID0g
bWFrZVVuaXF1ZTxDYW5jZWxsYWJsZVRhc2s+KHN0ZDo6YmluZCgmRG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyOjptYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUsIHRoaXMpKTsKKyAgICAgICAg
bV9kb2N1bWVudC5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3lu
Y1Rhc2ssIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2stPmNyZWF0ZVdlYWtDYWxsYWJsZSgpKTsK
KyAgICB9CiAgICAgLy8gV2UgZXh0ZW50IHRoZSBhc3NvY2lhdGVkIERvY3VtZW50J3MgbGlmZWN5
Y2xlIHVudGlsIHRoZSBWTSBiZWNhbWUgaWRsZSBzaW5jZSB0aGUgRG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyCiAgICAgLy8gaXMgb3duZWQgYnkgdGhlIERvY3VtZW50LgogICAgIG1fZG9jdW1l
bnQudm0oKS53aGVuSWRsZShbdGhpcywgcHJvdGVjdGVkRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1f
ZG9jdW1lbnQpXSgpIHsKQEAgLTI0OSw3ICsyNDgsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmVz
Q29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCkKICAgICAvLyBKUyBvciB3
YWl0aW5nIG9uIGFsbCBjdXJyZW50IGFuaW1hdGlvbiB1cGRhdGluZyBjb2RlIHRvIGhhdmUgY29t
cGxldGVkLiBUaGlzIGlzIHNvIHRoYXQKICAgICAvLyB3ZSdyZSBndWFyYW50ZWVkIHRvIGhhdmUg
YSBjb25zaXN0ZW50IGN1cnJlbnQgdGltZSByZXBvcnRlZCBmb3IgYWxsIHdvcmsgaGFwcGVuaW5n
IGluIGEgZ2l2ZW4KICAgICAvLyBKUyBmcmFtZSBvciB0aHJvdWdob3V0IHVwZGF0aW5nIGFuaW1h
dGlvbnMgaW4gV2ViQ29yZS4KLSAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ09u
Vk1JZGxlICYmICFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmlzUGVuZGluZygpKQorICAgIGlm
ICghbV9pc1N1c3BlbmRlZCAmJiAhbV93YWl0aW5nT25WTUlkbGUgJiYgKCFtX2N1cnJlbnRUaW1l
Q2xlYXJpbmdUYXNrIHx8ICFtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLT5pc1BlbmRpbmcoKSkp
CiAgICAgICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXIuaAppbmRleCAyYTExMDRmNzk3ZDUwM2ZjNDJhNzQzZWVkZGFjY2VlNjY4MmVhZWYxLi4yM2Qz
OTZhN2Q3N2ViOWY4YWU2OTIyYTM5ZTQxNDcxMzgwOWE3M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCkBAIC0y
NSw5ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2su
aCIKICNpbmNsdWRlICJSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgorI2luY2x1ZGUgPHd0Zi9DYW5jZWxsYWJsZVRhc2suaD4KICNpbmNsdWRlIDx3dGYvTWFy
a2FibGUuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF5YmVDbGVhckNh
Y2hlZEN1cnJlbnRUaW1lKCk7CiAKICAgICBXZWFrSGFzaFNldDxEb2N1bWVudFRpbWVsaW5lPiBt
X3RpbWVsaW5lczsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX2N1cnJlbnRUaW1lQ2xl
YXJpbmdUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYW5jZWxsYWJsZVRhc2s+IG1fY3VycmVu
dFRpbWVDbGVhcmluZ1Rhc2s7CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgTWFya2Fi
bGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVUcmFpdHM+IG1fY2FjaGVkQ3VycmVudFRpbWU7
CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuaAppbmRleCBhNjZmYWZlNmNkZGFmODRiMzdjZTlhNmU2YWYxNmQ5YjA2NzBmNzQ0
Li4yNmQzNDlhZjFkN2UwMzAzY2IyMzkxZmU0NGQ3NGNjZjRlMDZmMzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJUYXNrU291cmNlLmgiCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQ2FuY2VsbGFibGVUYXNrLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTEwLDYgKzExMSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIH0pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxDYW5jZWxsYWJsZVRhc2s+IGNyZWF0ZUFuZFF1ZXVlQ2FuY2VsbGFibGVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKFQmIG9iamVjdCwgVGFza1NvdXJjZSBzb3VyY2UsIEZ1bmN0
aW9uPHZvaWQoKT4mJiB0YXNrKQorICAgIHsKKyAgICAgICAgYXV0byBjYW5jZWxsYWJsZVRhc2sg
PSBtYWtlVW5pcXVlPENhbmNlbGxhYmxlVGFzaz4oV1RGTW92ZSh0YXNrKSk7CisgICAgICAgIG9i
amVjdC5xdWV1ZVRhc2tJbkV2ZW50TG9vcChzb3VyY2UsIFtwcm90ZWN0ZWRPYmplY3QgPSBtYWtl
UmVmKG9iamVjdCksIGFjdGl2aXR5ID0gb2JqZWN0LkFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRp
bmdBY3Rpdml0eShvYmplY3QpLCB3ZWFrQ2FsbGFibGUgPSBjYW5jZWxsYWJsZVRhc2stPmNyZWF0
ZVdlYWtDYWxsYWJsZSgpXSgpIG11dGFibGUgeworICAgICAgICAgICAgd2Vha0NhbGxhYmxlKCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gY2FuY2VsbGFibGVUYXNrOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV2ZW50VGFyZ2V0VHlwZSwgdHlwZW5hbWUgRXZlbnRUeXBl
PgogICAgIHN0YXRpYyB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudChFdmVudFRhcmdldFR5
cGUmIHRhcmdldCwgVGFza1NvdXJjZSBzb3VyY2UsIFJlZjxFdmVudFR5cGU+JiYgZXZlbnQpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2Y0OGVk
YjJlNjg4ODljMTAzNjgzZGU2MzRjNWUwY2EwNTQ1NTYyMi4uMTI4ZjgxMGMyNjRkNjc5MDBkYWZi
OTc3MDM5NmFhYjQxYzU5OGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0zOTQsMjAgKzM5NCw4IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAg
LCBtX3NjYW5UaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVkKQog
ICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXIo
KnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9y
UmVzdHJpY3Rpb25zVGltZXJGaXJlZCkKICAgICAsIG1fc2Vla1RvUGxheWJhY2tQb3NpdGlvbkVu
ZGVkVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVG9QbGF5YmFja1Bvc2l0aW9u
RW5kZWRUaW1lckZpcmVkKQotICAgICwgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzaygmZG9jdW1l
bnQpCi0gICAgLCBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzaygmZG9jdW1l
bnQpCi0gICAgLCBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fbWVk
aWFFbmdpbmVVcGRhdGVkVGFzaygmZG9jdW1lbnQpCi0gICAgLCBtX3VwZGF0ZVBsYXlTdGF0ZVRh
c2soJmRvY3VtZW50KQotICAgICwgbV9yZXN1bWVUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fc2Vl
a1Rhc2soJmRvY3VtZW50KQotICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9y
UmVzdHJpY3Rpb25zVGFzaygmZG9jdW1lbnQpCi0gICAgLCBtX2J1ZmZlcmVkVGltZVJhbmdlc0No
YW5nZWRUYXNrKCZkb2N1bWVudCkKICAgICAsIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUo
JmRvY3VtZW50KQogICAgICwgbV9hc3luY0V2ZW50UXVldWUoRXZlbnRMb29wRXZlbnRRdWV1ZTo6
Y3JlYXRlKCp0aGlzKSkKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV92b2x1bWVS
ZXZlcnRUYXNrKCZkb2N1bWVudCkKLSNlbmRpZgogICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50
TW92aWVUaW1lKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAsIG1fZmly
c3RUaW1lUGxheWluZyh0cnVlKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQpAQCAtNTc5LDkgKzU2
Nyw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBpZiAobV9p
c29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xhdGVkV29ybGQtPmNsZWFyV3JhcHBlcnMoKTsK
IAotICAgIG1fc2Vla1Rhc2suY2xvc2UoKTsKLSAgICBtX3Jlc3VtZVRhc2suY2xvc2UoKTsKLSAg
ICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmNsb3Nl
KCk7CiAgICAgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZS5jbG9zZSgpOwogCiAgICAgbV9j
b21wbGV0ZWx5TG9hZGVkID0gdHJ1ZTsKQEAgLTk5MiwxMSArOTc3LDExIEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nKCkgY29uc3QKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5
KCkKIHsKLSAgICBpZiAobV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2suaXNQ
ZW5kaW5nKCkpCisgICAgaWYgKG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNr
ICYmIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrLT5pc1BlbmRpbmcoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBt
X2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5zY2hlZHVsZVRhc2soW3RoaXNd
IHsKKyAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzayA9IGNyZWF0ZUFu
ZFF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpNZWRpYUVsZW1lbnQsIFt0aGlzXSB7CiAgICAgICAgIGNoZWNrUGxheWJhY2tUYXJnZXRDb21w
YXRpYmlsaXR5KCk7CiAgICAgfSk7CiB9CkBAIC0yOTczLDkgKzI5NTgsOSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBj
b25zdCBNZWRpYVRpbQogICAgIC8vIDMgLSBJZiB0aGUgZWxlbWVudCdzIHNlZWtpbmcgSURMIGF0
dHJpYnV0ZSBpcyB0cnVlLCB0aGVuIGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhpcyBhbGdvcml0aG0g
aXMKICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0IHRoYXQgb3RoZXIgaW5zdGFuY2Ugb2Yg
dGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBzdGVwIHRoYXQKICAgICAvLyBp
dCBpcyBydW5uaW5nIHRvIGNvbXBsZXRlLgotICAgIGlmIChtX3NlZWtUYXNrLmlzUGVuZGluZygp
KSB7CisgICAgaWYgKG1fc2Vla1Rhc2sgJiYgbV9zZWVrVGFzay0+aXNQZW5kaW5nKCkpIHsKICAg
ICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNhbmNlbGxpbmcgcGVuZGluZyBzZWVrcyIp
OwotICAgICAgICBtX3NlZWtUYXNrLmNhbmNlbFRhc2soKTsKKyAgICAgICAgbV9zZWVrVGFzayA9
IG51bGxwdHI7CiAgICAgICAgIGlmIChtX3BlbmRpbmdTZWVrKSB7CiAgICAgICAgICAgICBub3cg
PSBtX3BlbmRpbmdTZWVrLT5ub3c7CiAgICAgICAgICAgICBtX3BlbmRpbmdTZWVrID0gbnVsbHB0
cjsKQEAgLTI5OTcsNyArMjk4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhU
b2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRpbWUsIGNvbnN0IE1lZGlhVGltCiAgICAgbV9w
ZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVU
b2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBpZiAoZnJvbURPTSkgewogICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3csICIg
dG8gIiwgdGltZSk7Ci0gICAgICAgIG1fc2Vla1Rhc2suc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgm
SFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKKyAgICAgICAgbV9zZWVrVGFzayA9
IGNyZWF0ZUFuZFF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vl
a1Rhc2ssIHRoaXMpKTsKICAgICB9IGVsc2UKICAgICAgICAgc2Vla1Rhc2soKTsKIApAQCAtMzcw
OSwxMCArMzY5NCwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MTWVkaWFFbGVtZW50OjpzZXRW
b2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICBhdXRvIG9sZFZvbHVtZSA9IG1fdm9sdW1lOwogICAg
IG1fdm9sdW1lID0gdm9sdW1lOwogCi0gICAgaWYgKG1fdm9sdW1lUmV2ZXJ0VGFzay5pc1BlbmRp
bmcoKSkKKyAgICBpZiAobV92b2x1bWVSZXZlcnRUYXNrICYmIG1fdm9sdW1lUmV2ZXJ0VGFzay0+
aXNQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBtX3ZvbHVtZVJldmVydFRh
c2suc2NoZWR1bGVUYXNrKFt0aGlzLCBvbGRWb2x1bWVdIHsKKyAgICBtX3ZvbHVtZVJldmVydFRh
c2sgPSBjcmVhdGVBbmRRdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgb2xkVm9sdW1lXSB7CiAgICAgICAg
IG1fdm9sdW1lID0gb2xkVm9sdW1lOwogICAgIH0pOwogCkBAIC00NDk3LDEyICs0NDgyLDEyIEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2soVGV4dFRyYWNrKiB0
cmFja1RvU2VsZWN0KQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlQ29uZmlndXJl
VGV4dFRyYWNrcygpCiB7Ci0gICAgaWYgKG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suaXNQZW5k
aW5nKCkpCisgICAgaWYgKG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2sgJiYgbV9jb25maWd1cmVU
ZXh0VHJhY2tzVGFzay0+aXNQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
bG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0
ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fY29uZmlndXJlVGV4dFRyYWNr
c1Rhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIG1fY29u
ZmlndXJlVGV4dFRyYWNrc1Rhc2sgPSBjcmVhdGVBbmRRdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9n
U2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVy
KTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNr
IGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsgLy8gY29uZmlndXJlVGV4dFRyYWNrcyBjYWxscyBtZXRob2RzIHRoYXQgY2FuIHRyaWdn
ZXIgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCkBAIC01MDQ1LDEyICs1MDMwLDEyIEBAIEdyYXBo
aWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0Rl
dmljZUFkYXB0ZXIoKSBjb25zCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVNZWRp
YUVuZ2luZVdhc1VwZGF0ZWQoKQogewotICAgIGlmIChtX21lZGlhRW5naW5lVXBkYXRlZFRhc2su
aXNQZW5kaW5nKCkpCisgICAgaWYgKG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzayAmJiBtX21lZGlh
RW5naW5lVXBkYXRlZFRhc2stPmlzUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIGxvZ1NpdGVJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGxv
Z1NpdGVJZGVudGlmaWVyLCAidGFzayBzY2hlZHVsZWQiKTsKLSAgICBtX21lZGlhRW5naW5lVXBk
YXRlZFRhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIG1f
bWVkaWFFbmdpbmVVcGRhdGVkVGFzayA9IGNyZWF0ZUFuZFF1ZXVlQ2FuY2VsbGFibGVUYXNrS2Vl
cGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBs
b2dTaXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZp
ZXIpOwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRh
c2sgZmlyZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOyAvLyBtZWRpYUVuZ2luZVdhc1VwZGF0ZWQgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0
cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgpAQCAtNTMzOCwxMiArNTMyMywxMiBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2NoZWR1bGVVcGRhdGVQbGF5U3RhdGUoKQogewotICAgIGlmIChtX3VwZGF0ZVBsYXlT
dGF0ZVRhc2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fdXBkYXRlUGxheVN0YXRlVGFzayAmJiBt
X3VwZGF0ZVBsYXlTdGF0ZVRhc2stPmlzUGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9H
KGxvZ1NpdGVJZGVudGlmaWVyLCAidGFzayBzY2hlZHVsZWQiKTsKLSAgICBtX3VwZGF0ZVBsYXlT
dGF0ZVRhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBsb2dTaXRlSWRlbnRpZmllcl0geworICAgIG1f
dXBkYXRlUGxheVN0YXRlVGFzayA9IGNyZWF0ZUFuZFF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dT
aXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIp
OwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sg
ZmlyZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOyAvLyB1cGRhdGVQbGF5U3RhdGUgY2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFy
Yml0cmFyeSBET00gbXV0YXRpb25zLgpAQCAtNTQ3NSwxMyArNTQ2MCwxNiBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnN0b3BQZXJpb2RpY1RpbWVycygpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2FuY2VsUGVuZGluZ1Rhc2tzKCkKIHsKLSAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNr
LmNhbmNlbFRhc2soKTsKLSAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFz
ay5jYW5jZWxUYXNrKCk7Ci0gICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzay5jYW5jZWxUYXNrKCk7
Ci0gICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmNhbmNlbFRhc2soKTsKLSAgICBtX3VwZGF0
ZVBsYXlTdGF0ZVRhc2suY2FuY2VsVGFzaygpOworICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rh
c2sgPSBudWxscHRyOworICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNr
ID0gbnVsbHB0cjsKKyAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrID0gbnVsbHB0cjsKKyAgICBt
X21lZGlhRW5naW5lVXBkYXRlZFRhc2sgPSBudWxscHRyOworICAgIG1fdXBkYXRlUGxheVN0YXRl
VGFzayA9IG51bGxwdHI7CisgICAgbV9yZXN1bWVUYXNrID0gbnVsbHB0cjsKKyAgICBtX3NlZWtU
YXNrID0gbnVsbHB0cjsKKyAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUYXNrID0gbnVsbHB0cjsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1f
dm9sdW1lUmV2ZXJ0VGFzay5jYW5jZWxUYXNrKCk7CisgICAgbV92b2x1bWVSZXZlcnRUYXNrID0g
bnVsbHB0cjsKICNlbmRpZgogfQogCkBAIC01NjM3LDIxICs1NjI1LDkgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpCiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVldWVzKCkKIHsKLSAgICBtX2NvbmZpZ3VyZVRleHRU
cmFja3NUYXNrLmNsb3NlKCk7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0
eVRhc2suY2xvc2UoKTsKLSAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNsb3NlKCk7Ci0gICAg
bV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmNsb3NlKCk7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVU
YXNrLmNsb3NlKCk7Ci0gICAgbV9yZXN1bWVUYXNrLmNsb3NlKCk7Ci0gICAgbV9zZWVrVGFzay5j
bG9zZSgpOwotICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9u
c1Rhc2suY2xvc2UoKTsKLSAgICBtX3NlZWtUYXNrLmNsb3NlKCk7Ci0gICAgbV9yZXN1bWVUYXNr
LmNsb3NlKCk7CisgICAgY2FuY2VsUGVuZGluZ1Rhc2tzKCk7CiAgICAgbV9yZXNvdXJjZVNlbGVj
dGlvblRhc2tRdWV1ZS5jbG9zZSgpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9zZSgpOwot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgbV92b2x1bWVSZXZlcnRUYXNrLmNsb3NlKCk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb250ZXh0RGVzdHJveWVkKCkK
QEAgLTU2ODUsNyArNTY2MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwog
ICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIG1f
cmVzdW1lVGFzay5jYW5jZWxUYXNrKCk7CisgICAgbV9yZXN1bWVUYXNrID0gbnVsbHB0cjsKIAog
ICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpCYWNr
Rm9yd2FyZENhY2hlOgpAQCAtNTcxOCwxMyArNTY5NCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnJlc3VtZSgpCiAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT51cGRhdGVCdWZmZXJpbmdQb2xp
Y3koKTsKICAgICB9CiAKLSAgICBpZiAobV9lcnJvciAmJiBtX2Vycm9yLT5jb2RlKCkgPT0gTWVk
aWFFcnJvcjo6TUVESUFfRVJSX0FCT1JURUQgJiYgIW1fcmVzdW1lVGFzay5pc1BlbmRpbmcoKSkg
eworICAgIGlmIChtX2Vycm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSBNZWRpYUVycm9yOjpNRURJ
QV9FUlJfQUJPUlRFRCAmJiAoIW1fcmVzdW1lVGFzayB8fCAhbV9yZXN1bWVUYXNrLT5pc1BlbmRp
bmcoKSkpIHsKICAgICAgICAgLy8gUmVzdGFydCB0aGUgbG9hZCBpZiBpdCB3YXMgYWJvcnRlZCBp
biB0aGUgbWlkZGxlIGJ5IG1vdmluZyB0aGUgZG9jdW1lbnQgdG8gdGhlIGJhY2svZm9yd2FyZCBj
YWNoZS4KICAgICAgICAgLy8gbV9lcnJvciBpcyBvbmx5IGxlZnQgYXQgTUVESUFfRVJSX0FCT1JU
RUQgd2hlbiB0aGUgZG9jdW1lbnQgYmVjb21lcyBpbmFjdGl2ZSAoaXQgaXMgc2V0IHRvCiAgICAg
ICAgIC8vICBNRURJQV9FUlJfQUJPUlRFRCB3aGlsZSB0aGUgYWJvcnRFdmVudCBpcyBiZWluZyBz
ZW50LCBidXQgY2xlYXJlZCBpbW1lZGlhdGVseSBhZnRlcndhcmRzKS4KICAgICAgICAgLy8gVGhp
cyBiZWhhdmlvciBpcyBub3Qgc3BlY2lmaWVkIGJ1dCBpdCBzZWVtcyBsaWtlIGEgc2Vuc2libGUg
dGhpbmcgdG8gZG8uCiAgICAgICAgIC8vIEFzIGl0IGlzIG5vdCBzYWZlIHRvIGltbWVkYXRlbHkg
c3RhcnQgbG9hZGluZyBub3csIGxldCdzIHNjaGVkdWxlIGEgbG9hZC4KLSAgICAgICAgbV9yZXN1
bWVUYXNrLnNjaGVkdWxlVGFzayhzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVG
b3JMb2FkLCB0aGlzKSk7CisgICAgICAgIG1fcmVzdW1lVGFzayA9IGNyZWF0ZUFuZFF1ZXVlQ2Fu
Y2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVs
ZW1lbnQsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQsIHRoaXMp
KTsKICAgICB9CiAKICAgICB1cGRhdGVSZW5kZXJlcigpOwpAQCAtNjYzNiw3ICs2NjEyLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNv
bmZpZ3VyZWQoUmVjb25maWd1cmVNb2QKICAgICB9CiAKICAgICBtX3Byb2Nlc3NpbmdQcmVmZXJl
bmNlQ2hhbmdlID0gdHJ1ZTsKLSAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrLmNhbmNlbFRh
c2soKTsKKyAgICBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrID0gbnVsbHB0cjsKICAgICBpZiAo
bW9kZSA9PSBJbW1lZGlhdGVseSkgewogICAgICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7IC8vIGNvbmZpZ3VyZVRleHRUcmFja3MgY2FsbHMgbWV0aG9kcyB0
aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgICAgICBjb25maWd1
cmVUZXh0VHJhY2tzKCk7CkBAIC03MTUyLDEyICs3MTI4LDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJTaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJCdWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2Vk
KCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcyB8fCBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5n
ZWRUYXNrLmlzUGVuZGluZygpKQorICAgIGlmICghbV90ZXh0VHJhY2tzIHx8IChtX2J1ZmZlcmVk
VGltZVJhbmdlc0NoYW5nZWRUYXNrICYmIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2st
PmlzUGVuZGluZygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRp
ZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
InRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzay5z
Y2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV9idWZmZXJlZFRp
bWVSYW5nZXNDaGFuZ2VkVGFzayA9IGNyZWF0ZUFuZFF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dT
aXRlSWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIp
OwogICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sg
ZmlyZWQiKTsKICAgICAgICAgaWYgKCFtX3BsYXllciB8fCAhbV90ZXh0VHJhY2tzKQpAQCAtNzc4
MywxMiArNzc1OSwxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlUGF1
c2VEdXJpbmdSb3V0ZUNoYW5nZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2No
ZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCkKIHsKLSAgICBpZiAobV91cGRhdGVNZWRpYVN0YXRlVGFz
ay5pc1BlbmRpbmcoKSkKKyAgICBpZiAobV91cGRhdGVNZWRpYVN0YXRlVGFzayAmJiBtX3VwZGF0
ZU1lZGlhU3RhdGVUYXNrLT5pc1BlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dT
aXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV91cGRhdGVNZWRpYVN0YXRl
VGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV91cGRh
dGVNZWRpYVN0YXRlVGFzayA9IGNyZWF0ZUFuZFF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRl
SWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwog
ICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmly
ZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyB1cGRhdGVNZWRpYVN0YXRlIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJp
dHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTgwNTYsMjAgKzgwMzIsMTkgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlKCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJp
Y3Rpb25zVGltZXJGaXJlZCgpCiB7Ci0gICAgaWYgKG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJC
ZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suaXNQZW5kaW5nKCkpCisgICAgaWYgKG1fcGxheWJhY2tD
b250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2sgJiYgbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay0+aXNQZW5kaW5nKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbWVkaWFTZXNzaW9uKCkuaGFzQmVoYXZpb3JSZXN0cmljdGlv
bihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9s
c01hbmFnZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVo
YXZpb3JSZXN0cmljdGlvbnNUYXNrLnNjaGVkdWxlVGFzayhbcHJvdGVjdGVkVGhpc10gKCkgewot
ICAgICAgICBhdXRvJiBtZWRpYUVsZW1lbnRTZXNzaW9uID0gcHJvdGVjdGVkVGhpcy0+bWVkaWFT
ZXNzaW9uKCk7Ci0gICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5pc1BsYXlpbmcoKSB8fCBtZWRp
YUVsZW1lbnRTZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1dG9wbGF5
aW5nIHx8IG1lZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UGxheWluZykKKyAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUYXNrID0gY3JlYXRlQW5kUXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXNdICgpIHsKKyAgICAgICAg
YXV0byYgbWVkaWFFbGVtZW50U2Vzc2lvbiA9IG1lZGlhU2Vzc2lvbigpOworICAgICAgICBpZiAo
aXNQbGF5aW5nKCkgfHwgbWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpBdXRvcGxheWluZyB8fCBtZWRpYUVsZW1lbnRTZXNzaW9uLnN0YXRlKCkgPT0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgbWVkaWFFbGVtZW50U2Vzc2lvbi5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxl
bWVudFNlc3Npb246OlJlcXVpcmVQbGF5YmFja1RvQ29udHJvbENvbnRyb2xzTWFuYWdlcik7Ci0g
ICAgICAgIHByb3RlY3RlZFRoaXMtPnNjaGVkdWxlUGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRh
dGUoKTsKKyAgICAgICAgc2NoZWR1bGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZSgpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDA5
MmI4YWY5YzhhMzJkYWUxN2IyZjZhZjIxYmMyYWQ0YTNiNmM0YWQuLjNlOGQ0MmEzYjMwOWEwYmM4
MjdiYzM3ZDllNmMyOTA0NWRkNTEzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1
ZGUgIkF1dG9wbGF5RXZlbnQuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgi
Ci0jaW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKICNpbmNsdWRlICJFdmVudExvb3BFdmVudFF1
ZXVlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50RW51bXMuaCIKQEAgLTk0MSwyMCArOTQwLDIwIEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9z
Y2FuVGltZXI7CiAgICAgVGltZXIgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVz
dHJpY3Rpb25zVGltZXI7CiAgICAgVGltZXIgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRU
aW1lcjsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX2NvbmZpZ3VyZVRleHRUcmFja3NU
YXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fY2hlY2tQbGF5YmFja1RhcmdldENv
bXBhdGliaWxpdHlUYXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fdXBkYXRlTWVk
aWFTdGF0ZVRhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9tZWRpYUVuZ2luZVVw
ZGF0ZWRUYXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fdXBkYXRlUGxheVN0YXRl
VGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX3Jlc3VtZVRhc2s7Ci0gICAgRXZl
bnRMb29wRGVmZXJyYWJsZVRhc2sgbV9zZWVrVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxl
VGFzayBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrOwot
ICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRh
c2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPENhbmNlbGxhYmxlVGFzaz4gbV9jb25maWd1cmVUZXh0
VHJhY2tzVGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FuY2VsbGFibGVUYXNrPiBtX2NoZWNr
UGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fu
Y2VsbGFibGVUYXNrPiBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDYW5jZWxsYWJsZVRhc2s+IG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzazsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q2FuY2VsbGFibGVUYXNrPiBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2s7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhbmNlbGxhYmxlVGFzaz4gbV9yZXN1bWVUYXNrOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDYW5jZWxsYWJsZVRhc2s+IG1fc2Vla1Rhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRy
PENhbmNlbGxhYmxlVGFzaz4gbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJp
Y3Rpb25zVGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FuY2VsbGFibGVUYXNrPiBtX2J1ZmZl
cmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrOwogICAgIEV2ZW50TG9vcFRhc2tRdWV1ZSBtX3Jlc291
cmNlU2VsZWN0aW9uVGFza1F1ZXVlOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRp
bWVSYW5nZXM7CiAgICAgVW5pcXVlUmVmPEV2ZW50TG9vcEV2ZW50UXVldWU+IG1fYXN5bmNFdmVu
dFF1ZXVlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRXZlbnRMb29wRGVmZXJyYWJs
ZVRhc2sgbV92b2x1bWVSZXZlcnRUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYW5jZWxsYWJs
ZVRhc2s+IG1fdm9sdW1lUmV2ZXJ0VGFzazsKICNlbmRpZgogCiAgICAgUGxheVByb21pc2VWZWN0
b3IgbV9wZW5kaW5nUGxheVByb21pc2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGVmZXJyYWJsZVRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmVycmFi
bGVUYXNrLmgKaW5kZXggMzU1YTc3ZDdkNmI4YTQyNDcyZTNhMjQ5M2JkMDgyYjE4YTk3YzA3MC4u
OGU4ODkyMjgwNWEyODllZDhjYWM5MTdmOGI0N2EwMmY5M2IwNGQyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EZWZlcnJhYmxlVGFzay5oCkBAIC0yNSwxNSArMjUsMTQgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgotI2luY2x1
ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNUYXNrUXVldWUuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRGVmZXJyYWJsZVRhc2tCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERlZmVycmFibGVU
YXNrQmFzZT4geworY2xhc3MgTWFpblRocmVhZERlZmVycmFibGVUYXNrIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPE1haW5UaHJlYWREZWZlcnJhYmxlVGFzaz4gewogcHVibGljOgorICAgIE1haW5U
aHJlYWREZWZlcnJhYmxlVGFzaygpID0gZGVmYXVsdDsKKwogICAgIHZvaWQgY2xvc2UoKQogICAg
IHsKICAgICAgICAgY2FuY2VsVGFzaygpOwpAQCAtNDgsNjcgKzQ3LDI3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BlbmRpbmc7IH0KIAotcHJv
dGVjdGVkOgotICAgIH5EZWZlcnJhYmxlVGFza0Jhc2UoKSA9IGRlZmF1bHQ7Ci0gICAgYm9vbCBp
c0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KLSAgICB2b2lkIHNldElzUGVu
ZGluZyhib29sIGlzUGVuZGluZykgeyBtX2lzUGVuZGluZyA9IGlzUGVuZGluZzsgfQotCi1wcml2
YXRlOgotICAgIGJvb2wgbV9pc1BlbmRpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0Nsb3Nl
ZCB7IGZhbHNlIH07Ci19OwotCi1jbGFzcyBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2sgOiBwdWJs
aWMgRGVmZXJyYWJsZVRhc2tCYXNlIHsKLXB1YmxpYzoKLSAgICBNYWluVGhyZWFkRGVmZXJyYWJs
ZVRhc2soKQotICAgICAgICA6IG1fZGlzcGF0Y2hlcigpCi0gICAgeyB9Ci0KICAgICB2b2lkIHNj
aGVkdWxlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICB7Ci0gICAgICAgIGlmIChp
c0Nsb3NlZCgpKQorICAgICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBjYW5jZWxUYXNrKCk7CiAKLSAgICAgICAgc2V0SXNQZW5kaW5nKHRydWUpOwor
ICAgICAgICBtX2lzUGVuZGluZyA9IHRydWU7CiAgICAgICAgIG1fZGlzcGF0Y2hlci5wb3N0VGFz
ayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7
CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIEFTU0VSVCh3ZWFrVGhpcy0+aXNQZW5kaW5nKCkpOwotICAgICAgICAgICAgd2Vh
a1RoaXMtPnNldElzUGVuZGluZyhmYWxzZSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9pc1Bl
bmRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIHRhc2soKTsKICAgICAgICAgfSk7CiAgICAgfQog
CiBwcml2YXRlOgogICAgIE1haW5UaHJlYWRUYXNrRGlzcGF0Y2hlciBtX2Rpc3BhdGNoZXI7Cisg
ICAgYm9vbCBtX2lzUGVuZGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFs
c2UgfTsKIH07CiAKLS8vIFNpbWlsYXIgdG8gRGVmZXJyYWJsZVRhc2sgYnV0IGJhc2VkIG9uIHRo
ZSBIVE1MIGV2ZW50IGxvb3AuCi1jbGFzcyBFdmVudExvb3BEZWZlcnJhYmxlVGFzayA6IHB1Ymxp
YyBEZWZlcnJhYmxlVGFza0Jhc2UsIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
ewotcHVibGljOgotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCi0gICAgICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29u
dGV4dCkKLSAgICB7IH0KLQotICAgIC8vIEZJWE1FOiBQYXNzIFRhc2tTb3VyY2UgaW5zdGVhZCBv
ZiBhc3N1bWluZyBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQuCi0gICAgdm9pZCBzY2hlZHVsZVRh
c2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi0gICAgewotICAgICAgICBpZiAoaXNDbG9zZWQo
KSB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGNhbmNlbFRhc2soKTsKLQotICAgICAgICBzZXRJc1BlbmRpbmcodHJ1ZSk7Ci0gICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tT
b3VyY2U6Ok1lZGlhRWxlbWVudCwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0YXNr
ID0gV1RGTW92ZSh0YXNrKV0gewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBBU1NFUlQod2Vha1RoaXMtPmlzUGVuZGluZygp
KTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZXRJc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICAg
ICAgdGFzaygpOwotICAgICAgICB9KTsKLSAgICB9Ci19OwotCi19Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>
<flag name="commit-queue"
          id="452266"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430705</attachid>
            <date>2021-06-06 19:32:38 -0700</date>
            <delta_ts>2021-06-06 20:14:31 -0700</delta_ts>
            <desc>Reviewed patch</desc>
            <filename>226700_CancellableTask_reviewed.patch</filename>
            <type>text/plain</type>
            <size>30689</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOTNhM2Q0MmQwODljLi5lMGQ4ZmYzMDdhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MjEtMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9w
IHVzaW5nIGxlZ2FjeSBFdmVudExvb3BEZWZlcnJhYmxlVGFzaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBXVEY6OkNhbmNlbGxhYmxl
VGFzayB0eXBlIHdoaWNoIGlzIGEgd3JhcHBlciBhcm91bmQgYSBXVEY6OkZ1bmN0aW9uLgorICAg
ICAgICBJdCBjYW4gY3JlYXRlIGEgaGFuZGxlIGZvciB0aGUgdGFzayBhbmQgdGhpcyBoYW5kbGUg
Y2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlCisgICAgICAgIHRhc2sgaXMgc3RpbGwgcGVuZGlu
ZyBhbmQgdG8gY2FuY2VsIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHNjaGVkdWxpbmcgdGFza3Mg
aW4gdGhlCisgICAgICAgIGV2ZW50IGxvb3AgZm9yIGV4YW1wbGUgYXMgdGhlcmUgYXJlIGNhc2Vz
IHdoZXJlIHdlIG5lZWQgdG8ga25vdyBpZiBhIHRhc2sgd2UKKyAgICAgICAgc2NoZWR1bGVkIGlz
IHN0aWxsIHBlbmRpbmcgKHRvIGF2b2lkIGRvdWJsZSBzY2hlZHVsaW5nKSBvciB3aGVyZSB3ZSBu
ZWVkIHRvIGNhbmNlbAorICAgICAgICBhIHByZXZpb3VzbHkgc2NoZWR1bGVkIHRhc2suCisKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0NhbmNlbGxhYmxlVGFzay5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpDYW5jZWxsYWJsZVRhc2spOgorICAgICAgICAo
V1RGOjpDYW5jZWxsYWJsZVRhc2s6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV1RGOjpDYW5jZWxs
YWJsZVRhc2s6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFz
azo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGU6OkhhbmRs
ZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6SGFuZGxlOjppc1BlbmRpbmcgY29u
c3QpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKToKKyAg
ICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpjcmVhdGVIYW5kbGUpOgorCiAyMDIxLTA2LTA0
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRmlsZVN5c3RlbTo6
cmVhZEZyb21GaWxlKCkgc2hvdWxkIHJldHVybiBkYXRhIGFzIGB2b2lkKmAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhOTQxYTA3MGJjOS4uNzhjNGZiMjNl
MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3OCw2
ICszNzgsNyBAQAogCQk0MzBCNDc4NzFBQUFBQzFBMDAxMjIzREEgLyogU3RyaW5nQ29tbW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0NvbW1vbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NDI3QzVBOTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlD
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBU0NJSUNUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ2ODU2NzIyNTA5NEZFODAwOEND
QTA1IC8qIFRocmVhZFNhbml0aXplclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGhyZWFkU2FuaXRpemVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2VsbGFibGVUYXNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhbmNlbGxhYmxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkJBOUVBQjFGNENENjFFMDA5QTJCQkMgLyogQ29tcGxldGlvbkhhbmRsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbkhhbmRsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNv
dW50ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUwREUzNUYzMjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0
cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZXJu
YWxTdHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1Myw4ICs2
NTQsOCBAQAogCQlBOEE0NzMyMjE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3MzIzMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWZmZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWls
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0J1aWxk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0NzMyNTE1MUE4MjVCMDA0
MTIzRkYgLyogU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI1
MTUxQTgyNUIwMDQxMjNFRSAvKiBTdHJpbmdCdWlsZGVySW50ZXJuYWxzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1aWxkZXJJbnRlcm5hbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThBNDczMjUxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1
aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyNjE1MUE4MjVCMDA0MTIzRkYg
LyogU3RyaW5nQ29uY2F0ZW5hdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyaW5nQ29uY2F0ZW5hdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcz
MjcxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0hhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RyaW5nSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEE0NzMyODE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTk4Myw2ICs5ODQsNyBAQAogCQkJCTBGRUMzQzRGMUYzMjNDNjgwMEY1OUI2
QyAvKiBDYWdlZFB0ci5oICovLAogCQkJCTBGNUYzRDY4MUYzRkVCQTYwMEIxMTVBMiAvKiBDYWdl
ZFVuaXF1ZVB0ci5oICovLAogCQkJCTQxM0ZFOEY1MUY4RDJFQUIwMEY2RDdENyAvKiBDYWxsYmFj
a0FnZ3JlZ2F0b3IuaCAqLywKKwkJCQk0NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2Vs
bGFibGVUYXNrLmggKi8sCiAJCQkJQThBNDcyNkExNTFBODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRB
cml0aG1ldGljLmggKi8sCiAJCQkJQThBNDcyNkIxNTFBODI1QTAwNDEyM0ZGIC8qIENoZWNrZWRC
b29sZWFuLmggKi8sCiAJCQkJOUJCOTFGNTEyNjQ4RUE0RDAwQTU2MjE3IC8qIENoZWNrZWRQdHIu
aCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggN2VhMTNkMDExNWU3Li5iYmU5OTJiOWFiZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIHNldChXVEZfUFVCTElDX0hF
QURFUlMKICAgICBDYWdlZFB0ci5oCiAgICAgQ2FnZWRVbmlxdWVQdHIuaAogICAgIENhbGxiYWNr
QWdncmVnYXRvci5oCisgICAgQ2FuY2VsbGFibGVUYXNrLmgKICAgICBDaGVja2VkQXJpdGhtZXRp
Yy5oCiAgICAgQ2hlY2tlZEJvb2xlYW4uaAogICAgIENoZWNrZWRQdHIuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmggYi9Tb3VyY2UvV1RGL3d0Zi9DYW5jZWxs
YWJsZVRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5NGEz
M2Y3NDVjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NhbmNlbGxhYmxlVGFz
ay5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIERldGFpbCB7
CitzdHJ1Y3QgQ2FuY2VsbGFibGVUYXNrSW1wbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDYW5j
ZWxsYWJsZVRhc2tJbXBsPiB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIGV4cGxpY2l0IENhbmNlbGxhYmxlVGFza0ltcGwoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
IDogdGFzayhXVEZNb3ZlKHRhc2spKSB7IH0KKyAgICBGdW5jdGlvbjx2b2lkKCk+IHRhc2s7Cit9
OworfQorCitjbGFzcyBDYW5jZWxsYWJsZVRhc2sgeworcHVibGljOgorICAgIGV4cGxpY2l0IENh
bmNlbGxhYmxlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAgdm9pZCBvcGVyYXRvcigp
KCk7CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhIW1fdGFza1dyYXBwZXIt
PnRhc2s7IH0KKyAgICB2b2lkIGNhbmNlbCgpIHsgbV90YXNrV3JhcHBlci0+dGFzayA9IG51bGxw
dHI7IH0KKworICAgIGNsYXNzIEhhbmRsZSB7CisgICAgcHVibGljOgorICAgICAgICBIYW5kbGUo
KSA9IGRlZmF1bHQ7CisgICAgICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV90
YXNrV3JhcHBlciAmJiBtX3Rhc2tXcmFwcGVyLT50YXNrOyB9CisgICAgICAgIHZvaWQgY2FuY2Vs
KCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIENhbmNlbGxhYmxlVGFzazsK
KyAgICAgICAgZXhwbGljaXQgSGFuZGxlKERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1wbCYpOwor
ICAgICAgICBXZWFrUHRyPERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1wbD4gbV90YXNrV3JhcHBl
cjsKKyAgICB9OworCisgICAgSGFuZGxlIGNyZWF0ZUhhbmRsZSgpIHsgcmV0dXJuIEhhbmRsZSB7
IG1fdGFza1dyYXBwZXIuZ2V0KCkgfTsgfQorCitwcml2YXRlOgorICAgIFVuaXF1ZVJlZjxEZXRh
aWw6OkNhbmNlbGxhYmxlVGFza0ltcGw+IG1fdGFza1dyYXBwZXI7Cit9OworCitpbmxpbmUgQ2Fu
Y2VsbGFibGVUYXNrOjpDYW5jZWxsYWJsZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCisg
ICAgOiBtX3Rhc2tXcmFwcGVyKG1ha2VVbmlxdWVSZWY8RGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJ
bXBsPihXVEZNb3ZlKHRhc2spKSkKK3sgfQorCitpbmxpbmUgdm9pZCBDYW5jZWxsYWJsZVRhc2s6
Om9wZXJhdG9yKCkoKQoreworICAgIGlmIChhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFz
a1dyYXBwZXItPnRhc2ssIG51bGxwdHIpKQorICAgICAgICB0YXNrKCk7Cit9CisKK2lubGluZSBD
YW5jZWxsYWJsZVRhc2s6OkhhbmRsZTo6SGFuZGxlKERldGFpbDo6Q2FuY2VsbGFibGVUYXNrSW1w
bCYgdGFzaykKKyAgICA6IG1fdGFza1dyYXBwZXIobWFrZVdlYWtQdHIodGFzaykpCit7IH0KKwor
dm9pZCBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKCkKK3sKKyAgICBpZiAobV90YXNr
V3JhcHBlcikKKyAgICAgICAgbV90YXNrV3JhcHBlci0+dGFzayA9IG51bGxwdHI7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNhbmNlbGxhYmxlVGFzazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBiNjAwMzY1YjE1MDguLmNlNTI5OTU2MDgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDIxLTA2LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCB1c2luZyBsZWdhY3kgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjcwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFN0b3AgdXNpbmcgbGVnYWN5IEV2ZW50
TG9vcERlZmVycmFibGVUYXNrIGFuZCBkcm9wIHRoZSBjbGFzcyBlbnRpcmVseS4gQ2FsbCBzaXRl
cyBhcmUKKyAgICAgICAgbm93IHVzaW5nIHRoZSBIVE1MIGV2ZW50IGxvb3AgZGlyZWN0bHkgYW5k
IHVzaW5nIFdURjo6Q2FuY2VsbGFibGVUYXNrIHRvIHdyYXAgdGhlIHRhc2sKKyAgICAgICAgdGhl
eSBzY2hlZHVsZS4gVGhpcyBhY2hpZXZlcyB0aGUgc2FtZSByZXN1bHQgYXMgRXZlbnRMb29wRGVm
ZXJyYWJsZVRhc2sgYnV0IGlzIG1vcmUKKyAgICAgICAgbGlnaHR3ZWlnaHQgYW5kIGZsZXhpYmxl
LgorCisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OkRvY3VtZW50
VGltZWxpbmVzQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXI6OmRldGFjaEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmNhY2hlQ3VycmVudFRpbWUpOgorICAgICAgICAqIGFu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBkb20vQWN0
aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVDaGVja1BsYXliYWNrVGFy
Z2V0Q29tcGF0YWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRWb2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVD
b25maWd1cmVUZXh0VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlTWVkaWFFbmdpbmVXYXNVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdUYXNrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpjbG9zZVRhc2tRdWV1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFy
a0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1l
ZGlhU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tD
b250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1RpbWVyRmlyZWQpOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL0RlZmVycmFibGVU
YXNrLmg6CisKIDIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWR1Y2UgdXNlIG9mIGxlZ2FjeSBFdmVudExvb3BFdmVudFF1ZXVlIGFuZCBFdmVu
dExvb3BUYXNrUXVldWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKaW5kZXggYjU1ZDYwYjNiYzVmLi5hMmM2NjU5
NWY0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lc0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCkBAIC00Myw4ICs0Myw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6RG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyKERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IG1fY3VycmVudFRpbWVDbGVhcmlu
Z1Rhc2soJmRvY3VtZW50KQotICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkp
IHsKICAgICAgICAgaWYgKHBhZ2UtPnNldHRpbmdzKCkuaGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1
c3BlbnNpb25FbmFibGVkKCkgJiYgIXBhZ2UtPmlzVmlzaWJsZSgpKQpAQCAtNTQsNiArNTMsNyBA
QCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
cihEb2N1bWVudCYgZG9jdW1lbnQpCiAKIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6fkRv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlcigpCiB7CisgICAgbV9jdXJyZW50VGltZUNsZWFyaW5n
VGFzay5jYW5jZWwoKTsKIH0KIAogdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmFk
ZFRpbWVsaW5lKERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKQpAQCAtNzMsNyArNzMsNyBAQCB2
b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6cmVtb3ZlVGltZWxpbmUoRG9jdW1lbnRU
aW1lbGluZSYgdGltZWxpbmUpCiAKIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpk
ZXRhY2hGcm9tRG9jdW1lbnQoKQogewotICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2suY2xv
c2UoKTsKKyAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmNhbmNlbCgpOwogCiAgICAgd2hp
bGUgKCFtX3RpbWVsaW5lcy5jb21wdXRlc0VtcHR5KCkpCiAgICAgICAgIG1fdGltZWxpbmVzLmJl
Z2luKCktPmRldGFjaEZyb21Eb2N1bWVudCgpOwpAQCAtMjMzLDggKzIzMywxMSBAQCB2b2lkIERv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y2FjaGVDdXJyZW50VGltZShSZWR1Y2VkUmVzb2x1
dGlvblNlY29uZHMgbmV3QwogICAgIC8vIGFuaW1hdGlvbnMsIHNvIHdlIHNjaGVkdWxlIHRoZSBp
bnZhbGlkYXRpb24gdGFzayBhbmQgcmVnaXN0ZXIgYSB3aGVuSWRsZSBjYWxsYmFjayBvbiB0aGUg
Vk0sIHdoaWNoIHdpbGwKICAgICAvLyBmaXJlIHN5bmNyb25vdXNseSBpZiBubyBKUyBpcyBydW5u
aW5nLgogICAgIG1fd2FpdGluZ09uVk1JZGxlID0gdHJ1ZTsKLSAgICBpZiAoIW1fY3VycmVudFRp
bWVDbGVhcmluZ1Rhc2suaXNQZW5kaW5nKCkpCi0gICAgICAgIG1fY3VycmVudFRpbWVDbGVhcmlu
Z1Rhc2suc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgmRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
OjptYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUsIHRoaXMpKTsKKyAgICBpZiAoIW1fY3VycmVu
dFRpbWVDbGVhcmluZ1Rhc2suaXNQZW5kaW5nKCkpIHsKKyAgICAgICAgQ2FuY2VsbGFibGVUYXNr
IHRhc2soc3RkOjpiaW5kKCZEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJD
YWNoZWRDdXJyZW50VGltZSwgdGhpcykpOworICAgICAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdU
YXNrID0gdGFzay5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgbV9kb2N1bWVudC5ldmVudExvb3Ao
KS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6SW50ZXJuYWxBc3luY1Rhc2ssIFdURk1vdmUodGFzaykp
OworICAgIH0KICAgICAvLyBXZSBleHRlbnQgdGhlIGFzc29jaWF0ZWQgRG9jdW1lbnQncyBsaWZl
Y3ljbGUgdW50aWwgdGhlIFZNIGJlY2FtZSBpZGxlIHNpbmNlIHRoZSBEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXIKICAgICAvLyBpcyBvd25lZCBieSB0aGUgRG9jdW1lbnQuCiAgICAgbV9kb2N1
bWVudC52bSgpLndoZW5JZGxlKFt0aGlzLCBwcm90ZWN0ZWREb2N1bWVudCA9IG1ha2VSZWZQdHIo
bV9kb2N1bWVudCldKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCmluZGV4IDJhMTEwNGY3OTdkNS4uOTcxYmNkNjIx
NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZXNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlci5oCkBAIC0yNSw5ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiRGVmZXJyYWJsZVRhc2suaCIKICNpbmNsdWRlICJSZWR1Y2VkUmVzb2x1dGlvblNl
Y29uZHMuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9DYW5jZWxsYWJsZVRh
c2suaD4KICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lKCk7CiAKICAgICBXZWFrSGFz
aFNldDxEb2N1bWVudFRpbWVsaW5lPiBtX3RpbWVsaW5lczsKLSAgICBFdmVudExvb3BEZWZlcnJh
YmxlVGFzayBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6
SGFuZGxlIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2s7CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1l
bnQ7CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVUcmFpdHM+IG1fY2Fj
aGVkQ3VycmVudFRpbWU7CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCBhNjZmYWZlNmNkZGEuLjQ1MDRlYTExZjk4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiVGFza1Nv
dXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0NhbmNl
bGxhYmxlVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTExMCw2ICsxMTEsMTcg
QEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIHN0YXRpYyBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBxdWV1ZUNhbmNlbGxhYmxlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZShUJiBvYmplY3QsIFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlv
bjx2b2lkKCk+JiYgdGFzaykKKyAgICB7CisgICAgICAgIENhbmNlbGxhYmxlVGFzayBjYW5jZWxs
YWJsZVRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAgICAgIGF1dG8gdGFza0hhbmRsZSA9IGNhbmNl
bGxhYmxlVGFzay5jcmVhdGVIYW5kbGUoKTsKKyAgICAgICAgb2JqZWN0LnF1ZXVlVGFza0luRXZl
bnRMb29wKHNvdXJjZSwgW3Byb3RlY3RlZE9iamVjdCA9IG1ha2VSZWYob2JqZWN0KSwgYWN0aXZp
dHkgPSBvYmplY3QuQWN0aXZlRE9NT2JqZWN0OjptYWtlUGVuZGluZ0FjdGl2aXR5KG9iamVjdCks
IGNhbmNlbGxhYmxlVGFzayA9IFdURk1vdmUoY2FuY2VsbGFibGVUYXNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNhbmNlbGxhYmxlVGFzaygpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuIHRhc2tIYW5kbGU7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJn
ZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CiAgICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9E
aXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYgdGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwg
UmVmPEV2ZW50VHlwZT4mJiBldmVudCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAzZjQ4ZWRiMmU2ODguLjFhNGQzMzRkNjgwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zOTQsMjAgKzM5NCw4IEBAIEhU
TUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3NjYW5UaW1lcigqdGhpcywgJkhUTUxNZWRp
YUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVkKQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdl
ckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpwbGF5
YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCkKICAgICAs
IG1fc2Vla1RvUGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lckZpcmVkKQotICAgICwgbV9jb25m
aWd1cmVUZXh0VHJhY2tzVGFzaygmZG9jdW1lbnQpCi0gICAgLCBtX2NoZWNrUGxheWJhY2tUYXJn
ZXRDb21wYXRpYmlsaXR5VGFzaygmZG9jdW1lbnQpCi0gICAgLCBtX3VwZGF0ZU1lZGlhU3RhdGVU
YXNrKCZkb2N1bWVudCkKLSAgICAsIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzaygmZG9jdW1lbnQp
Ci0gICAgLCBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2soJmRvY3VtZW50KQotICAgICwgbV9yZXN1bWVU
YXNrKCZkb2N1bWVudCkKLSAgICAsIG1fc2Vla1Rhc2soJmRvY3VtZW50KQotICAgICwgbV9wbGF5
YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzaygmZG9jdW1lbnQpCi0g
ICAgLCBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrKCZkb2N1bWVudCkKICAgICAsIG1f
cmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUoJmRvY3VtZW50KQogICAgICwgbV9hc3luY0V2ZW50
UXVldWUoRXZlbnRMb29wRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICwgbV92b2x1bWVSZXZlcnRUYXNrKCZkb2N1bWVudCkKLSNlbmRpZgog
ICAgICwgbV9sYXN0VGltZVVwZGF0ZUV2ZW50TW92aWVUaW1lKE1lZGlhVGltZTo6cG9zaXRpdmVJ
bmZpbml0ZVRpbWUoKSkKICAgICAsIG1fZmlyc3RUaW1lUGxheWluZyh0cnVlKQogICAgICwgbV9w
bGF5aW5nKGZhbHNlKQpAQCAtNTc5LDkgKzU2Nyw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1M
TWVkaWFFbGVtZW50KCkKICAgICBpZiAobV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xh
dGVkV29ybGQtPmNsZWFyV3JhcHBlcnMoKTsKIAotICAgIG1fc2Vla1Rhc2suY2xvc2UoKTsKLSAg
ICBtX3Jlc3VtZVRhc2suY2xvc2UoKTsKLSAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVo
YXZpb3JSZXN0cmljdGlvbnNUYXNrLmNsb3NlKCk7CisgICAgbV9zZWVrVGFzay5jYW5jZWwoKTsK
KyAgICBtX3Jlc3VtZVRhc2suY2FuY2VsKCk7CisgICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdl
ckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5jYW5jZWwoKTsKICAgICBtX3Jlc291cmNlU2VsZWN0
aW9uVGFza1F1ZXVlLmNsb3NlKCk7CiAKICAgICBtX2NvbXBsZXRlbHlMb2FkZWQgPSB0cnVlOwpA
QCAtOTk2LDcgKzk4NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVDaGVja1Bs
YXliYWNrVGFyZ2V0Q29tcGF0YWJpbGl0eSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJp
bGl0eVRhc2suc2NoZWR1bGVUYXNrKFt0aGlzXSB7CisgICAgbV9jaGVja1BsYXliYWNrVGFyZ2V0
Q29tcGF0aWJpbGl0eVRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpc10gewogICAgICAgICBjaGVj
a1BsYXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eSgpOwogICAgIH0pOwogfQpAQCAtMjk3NSw3ICsy
OTYzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBN
ZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KICAgICAvLyBpdCBpcyBydW5uaW5nIHRv
IGNvbXBsZXRlLgogICAgIGlmIChtX3NlZWtUYXNrLmlzUGVuZGluZygpKSB7CiAgICAgICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJjYW5jZWxsaW5nIHBlbmRpbmcgc2Vla3MiKTsKLSAgICAg
ICAgbV9zZWVrVGFzay5jYW5jZWxUYXNrKCk7CisgICAgICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7
CiAgICAgICAgIGlmIChtX3BlbmRpbmdTZWVrKSB7CiAgICAgICAgICAgICBub3cgPSBtX3BlbmRp
bmdTZWVrLT5ub3c7CiAgICAgICAgICAgICBtX3BlbmRpbmdTZWVrID0gbnVsbHB0cjsKQEAgLTI5
OTcsNyArMjk4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2Uo
Y29uc3QgTWVkaWFUaW1lJiBpblRpbWUsIGNvbnN0IE1lZGlhVGltCiAgICAgbV9wZW5kaW5nU2Vl
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2Us
IHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBpZiAoZnJvbURPTSkgewogICAgICAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3csICIgdG8gIiwgdGlt
ZSk7Ci0gICAgICAgIG1fc2Vla1Rhc2suc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlh
RWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKKyAgICAgICAgbV9zZWVrVGFzayA9IHF1ZXVlQ2Fu
Y2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVs
ZW1lbnQsIHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgc2Vla1Rhc2soKTsKIApAQCAtMzcxMiw3ICszNzAwLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gSFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUp
CiAgICAgaWYgKG1fdm9sdW1lUmV2ZXJ0VGFzay5pc1BlbmRpbmcoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIG1fdm9sdW1lUmV2ZXJ0VGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIG9sZFZv
bHVtZV0geworICAgIG1fdm9sdW1lUmV2ZXJ0VGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2Vl
cGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBv
bGRWb2x1bWVdIHsKICAgICAgICAgbV92b2x1bWUgPSBvbGRWb2x1bWU7CiAgICAgfSk7CiAKQEAg
LTQ1MDIsNyArNDQ5MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVDb25maWd1
cmVUZXh0VHJhY2tzKCkKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElG
SUVSOwogICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIp
OwotICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suc2NoZWR1bGVUYXNrKFt0aGlzLCBsb2dT
aXRlSWRlbnRpZmllcl0geworICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2sgPSBxdWV1ZUNh
bmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFF
bGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFN
KGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmll
ciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gY29uZmlndXJlVGV4dFRyYWNrcyBjYWxscyBtZXRo
b2RzIHRoYXQgY2FuIHRyaWdnZXIgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCkBAIC01MDUwLDcg
KzUwMzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTWVkaWFFbmdpbmVXYXNV
cGRhdGVkKCkKIAogICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwog
ICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwotICAg
IG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVu
dGlmaWVyXSB7CisgICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrID0gcXVldWVDYW5jZWxsYWJs
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwg
W3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShsb2dTaXRl
SWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJsYW1i
ZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7IC8vIG1lZGlhRW5naW5lV2FzVXBkYXRlZCBjYWxscyBtZXRob2RzIHRo
YXQgY2FuIHRyaWdnZXIgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCkBAIC01MzQzLDcgKzUzMzEs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVXBkYXRlUGxheVN0YXRlKCkKIAog
ICAgIGF1dG8gbG9nU2l0ZUlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwogICAgIEFMV0FZU19M
T0cobG9nU2l0ZUlkZW50aWZpZXIsICJ0YXNrIHNjaGVkdWxlZCIpOwotICAgIG1fdXBkYXRlUGxh
eVN0YXRlVGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAg
bV91cGRhdGVQbGF5U3RhdGVUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgW3RoaXMsIGxvZ1NpdGVJZGVu
dGlmaWVyXSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAg
ICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIp
OwogICAgICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8v
IHVwZGF0ZVBsYXlTdGF0ZSBjYWxscyBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIgYXJiaXRyYXJ5
IERPTSBtdXRhdGlvbnMuCkBAIC01NDc1LDEzICs1NDYzLDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c3RvcFBlcmlvZGljVGltZXJzKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYW5j
ZWxQZW5kaW5nVGFza3MoKQogewotICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suY2FuY2Vs
VGFzaygpOwotICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrLmNhbmNl
bFRhc2soKTsKLSAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNhbmNlbFRhc2soKTsKLSAgICBt
X21lZGlhRW5naW5lVXBkYXRlZFRhc2suY2FuY2VsVGFzaygpOwotICAgIG1fdXBkYXRlUGxheVN0
YXRlVGFzay5jYW5jZWxUYXNrKCk7CisgICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5jYW5j
ZWwoKTsKKyAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5jYW5jZWwo
KTsKKyAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLmNhbmNlbCgpOworICAgIG1fbWVkaWFFbmdp
bmVVcGRhdGVkVGFzay5jYW5jZWwoKTsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2suY2FuY2Vs
KCk7CisgICAgbV9yZXN1bWVUYXNrLmNhbmNlbCgpOworICAgIG1fc2Vla1Rhc2suY2FuY2VsKCk7
CisgICAgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5j
YW5jZWwoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fdm9sdW1lUmV2ZXJ0VGFz
ay5jYW5jZWxUYXNrKCk7CisgICAgbV92b2x1bWVSZXZlcnRUYXNrLmNhbmNlbCgpOwogI2VuZGlm
CiB9CiAKQEAgLTU2MzcsMjEgKzU2MjgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BX
aXRob3V0RGVzdHJveWluZ01lZGlhUGxheWVyKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpj
bG9zZVRhc2tRdWV1ZXMoKQogewotICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suY2xvc2Uo
KTsKLSAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5jbG9zZSgpOwot
ICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2suY2xvc2UoKTsKLSAgICBtX21lZGlhRW5naW5lVXBk
YXRlZFRhc2suY2xvc2UoKTsKLSAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2suY2xvc2UoKTsKLSAg
ICBtX3Jlc3VtZVRhc2suY2xvc2UoKTsKLSAgICBtX3NlZWtUYXNrLmNsb3NlKCk7Ci0gICAgbV9w
bGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5jbG9zZSgpOwot
ICAgIG1fc2Vla1Rhc2suY2xvc2UoKTsKLSAgICBtX3Jlc3VtZVRhc2suY2xvc2UoKTsKKyAgICBj
YW5jZWxQZW5kaW5nVGFza3MoKTsKICAgICBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmNs
b3NlKCk7CiAgICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7Ci0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBtX3ZvbHVtZVJldmVydFRhc2suY2xvc2UoKTsKLSNlbmRpZgogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRleHREZXN0cm95ZWQoKQpAQCAtNTY4NSw3ICs1NjY0
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24g
cmVhc29uKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgUmVmPEhUTUxNZWRp
YUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgbV9yZXN1bWVUYXNrLmNhbmNl
bFRhc2soKTsKKyAgICBtX3Jlc3VtZVRhc2suY2FuY2VsKCk7CiAKICAgICBzd2l0Y2ggKHJlYXNv
bikgewogICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6QmFja0ZvcndhcmRDYWNoZToKQEAg
LTU3MjQsNyArNTcwMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKICAgICAg
ICAgLy8gIE1FRElBX0VSUl9BQk9SVEVEIHdoaWxlIHRoZSBhYm9ydEV2ZW50IGlzIGJlaW5nIHNl
bnQsIGJ1dCBjbGVhcmVkIGltbWVkaWF0ZWx5IGFmdGVyd2FyZHMpLgogICAgICAgICAvLyBUaGlz
IGJlaGF2aW9yIGlzIG5vdCBzcGVjaWZpZWQgYnV0IGl0IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSB0
aGluZyB0byBkby4KICAgICAgICAgLy8gQXMgaXQgaXMgbm90IHNhZmUgdG8gaW1tZWRhdGVseSBz
dGFydCBsb2FkaW5nIG5vdywgbGV0J3Mgc2NoZWR1bGUgYSBsb2FkLgotICAgICAgICBtX3Jlc3Vt
ZVRhc2suc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZv
ckxvYWQsIHRoaXMpKTsKKyAgICAgICAgbV9yZXN1bWVUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3Rk
OjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCwgdGhpcykpOwogICAgIH0K
IAogICAgIHVwZGF0ZVJlbmRlcmVyKCk7CkBAIC02NjM2LDcgKzY2MTUsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZChS
ZWNvbmZpZ3VyZU1vZAogICAgIH0KIAogICAgIG1fcHJvY2Vzc2luZ1ByZWZlcmVuY2VDaGFuZ2Ug
PSB0cnVlOwotICAgIG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suY2FuY2VsVGFzaygpOworICAg
IG1fY29uZmlndXJlVGV4dFRyYWNrc1Rhc2suY2FuY2VsKCk7CiAgICAgaWYgKG1vZGUgPT0gSW1t
ZWRpYXRlbHkpIHsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOyAvLyBjb25maWd1cmVUZXh0VHJhY2tzIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJp
Z2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICAgICAgY29uZmlndXJlVGV4dFRyYWNr
cygpOwpAQCAtNzE1Nyw3ICs3MTM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckJ1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWQoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRp
ZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwg
InRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9idWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkVGFzay5z
Y2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV9idWZmZXJlZFRp
bWVSYW5nZXNDaGFuZ2VkVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRp
Zmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAg
ICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsK
ICAgICAgICAgaWYgKCFtX3BsYXllciB8fCAhbV90ZXh0VHJhY2tzKQpAQCAtNzc4OCw3ICs3NzY3
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKQog
CiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlT
X0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV91cGRhdGVN
ZWRpYVN0YXRlVGFzay5zY2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7Cisg
ICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRl
SWRlbnRpZmllcl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwog
ICAgICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmly
ZWQiKTsKICAgICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyB1cGRhdGVNZWRpYVN0YXRlIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJp
dHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTgwNjIsMTQgKzgwNDEsMTMgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGlt
ZXJGaXJlZCgpCiAgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5oYXNCZWhhdmlvclJlc3RyaWN0aW9u
KE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xz
TWFuYWdlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhh
dmlvclJlc3RyaWN0aW9uc1Rhc2suc2NoZWR1bGVUYXNrKFtwcm90ZWN0ZWRUaGlzXSAoKSB7Ci0g
ICAgICAgIGF1dG8mIG1lZGlhRWxlbWVudFNlc3Npb24gPSBwcm90ZWN0ZWRUaGlzLT5tZWRpYVNl
c3Npb24oKTsKLSAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmlzUGxheWluZygpIHx8IG1lZGlh
RWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXV0b3BsYXlp
bmcgfHwgbWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQbGF5aW5nKQorICAgIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0
aW9uc1Rhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpc10gKCkgeworICAgICAgICBhdXRvJiBtZWRp
YUVsZW1lbnRTZXNzaW9uID0gbWVkaWFTZXNzaW9uKCk7CisgICAgICAgIGlmIChpc1BsYXlpbmco
KSB8fCBtZWRpYUVsZW1lbnRTZXNzaW9uLnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246
OkF1dG9wbGF5aW5nIHx8IG1lZGlhRWxlbWVudFNlc3Npb24uc3RhdGUoKSA9PSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGxheWluZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtZWRp
YUVsZW1lbnRTZXNzaW9uLmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lv
bjo6UmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKTsKLSAgICAgICAgcHJv
dGVjdGVkVGhpcy0+c2NoZWR1bGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZSgpOworICAg
ICAgICBzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlKCk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMDkyYjhhZjljOGEz
Li44MGNmNjhlNmE0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkF1dG9w
bGF5RXZlbnQuaCIKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgiCi0jaW5jbHVk
ZSAiRGVmZXJyYWJsZVRhc2suaCIKICNpbmNsdWRlICJFdmVudExvb3BFdmVudFF1ZXVlLmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMu
aCIKQEAgLTk0MSwyMCArOTQwLDIwIEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV9zY2FuVGltZXI7
CiAgICAgVGltZXIgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25z
VGltZXI7CiAgICAgVGltZXIgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lcjsKLSAg
ICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrOwotICAg
IEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxp
dHlUYXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fdXBkYXRlTWVkaWFTdGF0ZVRh
c2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNr
OwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fdXBkYXRlUGxheVN0YXRlVGFzazsKLSAg
ICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX3Jlc3VtZVRhc2s7Ci0gICAgRXZlbnRMb29wRGVm
ZXJyYWJsZVRhc2sgbV9zZWVrVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX3Bs
YXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrOwotICAgIEV2ZW50
TG9vcERlZmVycmFibGVUYXNrIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZFRhc2s7CisgICAg
Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzazsKKyAgICBD
YW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5
VGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNr
OworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzazsK
KyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2s7CisgICAg
Q2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9yZXN1bWVUYXNrOworICAgIENhbmNlbGxhYmxlVGFz
azo6SGFuZGxlIG1fc2Vla1Rhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9wbGF5
YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzazsKKyAgICBDYW5jZWxs
YWJsZVRhc2s6OkhhbmRsZSBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrOwogICAgIEV2
ZW50TG9vcFRhc2tRdWV1ZSBtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlOwogICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7CiAgICAgVW5pcXVlUmVmPEV2ZW50TG9v
cEV2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV92b2x1bWVSZXZlcnRUYXNrOworICAgIENh
bmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fdm9sdW1lUmV2ZXJ0VGFzazsKICNlbmRpZgogCiAgICAg
UGxheVByb21pc2VWZWN0b3IgbV9wZW5kaW5nUGxheVByb21pc2VzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlZmVycmFibGVUYXNrLmgKaW5kZXggMzU1YTc3ZDdkNmI4Li44ZTg4OTIyODA1YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmVycmFibGVUYXNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaApAQCAtMjUsMTUgKzI1
LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKLSNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1
ZXVlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIERlZmVycmFibGVUYXNrQmFzZSA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxEZWZlcnJhYmxlVGFza0Jhc2U+IHsKK2NsYXNzIE1haW5UaHJlYWREZWZlcnJhYmxlVGFz
ayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2s+IHsKIHB1
YmxpYzoKKyAgICBNYWluVGhyZWFkRGVmZXJyYWJsZVRhc2soKSA9IGRlZmF1bHQ7CisKICAgICB2
b2lkIGNsb3NlKCkKICAgICB7CiAgICAgICAgIGNhbmNlbFRhc2soKTsKQEAgLTQ4LDY3ICs0Nywy
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
ZW5kaW5nOyB9CiAKLXByb3RlY3RlZDoKLSAgICB+RGVmZXJyYWJsZVRhc2tCYXNlKCkgPSBkZWZh
dWx0OwotICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9Ci0g
ICAgdm9pZCBzZXRJc1BlbmRpbmcoYm9vbCBpc1BlbmRpbmcpIHsgbV9pc1BlbmRpbmcgPSBpc1Bl
bmRpbmc7IH0KLQotcHJpdmF0ZToKLSAgICBib29sIG1faXNQZW5kaW5nIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwotfTsKLQotY2xhc3MgTWFpblRocmVhZERlZmVy
cmFibGVUYXNrIDogcHVibGljIERlZmVycmFibGVUYXNrQmFzZSB7Ci1wdWJsaWM6Ci0gICAgTWFp
blRocmVhZERlZmVycmFibGVUYXNrKCkKLSAgICAgICAgOiBtX2Rpc3BhdGNoZXIoKQotICAgIHsg
fQotCiAgICAgdm9pZCBzY2hlZHVsZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAg
ewotICAgICAgICBpZiAoaXNDbG9zZWQoKSkKKyAgICAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FuY2VsVGFzaygpOwogCi0gICAgICAgIHNldElz
UGVuZGluZyh0cnVlKTsKKyAgICAgICAgbV9pc1BlbmRpbmcgPSB0cnVlOwogICAgICAgICBtX2Rp
c3BhdGNoZXIucG9zdFRhc2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0g
V1RGTW92ZSh0YXNrKV0gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBBU1NFUlQod2Vha1RoaXMtPmlzUGVuZGluZygpKTsK
LSAgICAgICAgICAgIHdlYWtUaGlzLT5zZXRJc1BlbmRpbmcoZmFsc2UpOworICAgICAgICAgICAg
d2Vha1RoaXMtPm1faXNQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgICAgICB0YXNrKCk7CiAgICAg
ICAgIH0pOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBNYWluVGhyZWFkVGFza0Rpc3BhdGNoZXIg
bV9kaXNwYXRjaGVyOworICAgIGJvb2wgbV9pc1BlbmRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc0Nsb3NlZCB7IGZhbHNlIH07CiB9OwogCi0vLyBTaW1pbGFyIHRvIERlZmVycmFibGVUYXNr
IGJ1dCBiYXNlZCBvbiB0aGUgSFRNTCBldmVudCBsb29wLgotY2xhc3MgRXZlbnRMb29wRGVmZXJy
YWJsZVRhc2sgOiBwdWJsaWMgRGVmZXJyYWJsZVRhc2tCYXNlLCBwcml2YXRlIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgICAgICA6IENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyKGNvbnRleHQpCi0gICAgeyB9Ci0KLSAgICAvLyBGSVhNRTogUGFzcyBUYXNr
U291cmNlIGluc3RlYWQgb2YgYXNzdW1pbmcgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LgotICAg
IHZvaWQgc2NoZWR1bGVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotICAgIHsKLSAgICAg
ICAgaWYgKGlzQ2xvc2VkKCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBjYW5jZWxUYXNrKCk7Ci0KLSAgICAgICAgc2V0SXNQZW5k
aW5nKHRydWUpOwotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsKLSAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgQVNTRVJUKHdlYWtU
aGlzLT5pc1BlbmRpbmcoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2V0SXNQZW5kaW5nKGZh
bHNlKTsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfTsKLQotfQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="452262"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430708</attachid>
            <date>2021-06-06 20:11:54 -0700</date>
            <delta_ts>2021-06-06 21:22:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226700-20210606201154.patch</filename>
            <type>text/plain</type>
            <size>31340</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkzYTNkNDJkMDg5YzBmMDA2OTI0MjVm
NzViMmEyMjZjMDYzZTI4YmMuLmUwZDhmZjMwN2EyOWM5NTY0NjgwM2QzOTdmOWI4NjBkMTlmYWMy
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExvb3BEZWZlcnJh
YmxlVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW50
cm9kdWNlIG5ldyBXVEY6OkNhbmNlbGxhYmxlVGFzayB0eXBlIHdoaWNoIGlzIGEgd3JhcHBlciBh
cm91bmQgYSBXVEY6OkZ1bmN0aW9uLgorICAgICAgICBJdCBjYW4gY3JlYXRlIGEgaGFuZGxlIGZv
ciB0aGUgdGFzayBhbmQgdGhpcyBoYW5kbGUgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlCisg
ICAgICAgIHRhc2sgaXMgc3RpbGwgcGVuZGluZyBhbmQgdG8gY2FuY2VsIGl0LiBUaGlzIGlzIHVz
ZWZ1bCB3aGVuIHNjaGVkdWxpbmcgdGFza3MgaW4gdGhlCisgICAgICAgIGV2ZW50IGxvb3AgZm9y
IGV4YW1wbGUgYXMgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8ga25vdyBpZiBhIHRh
c2sgd2UKKyAgICAgICAgc2NoZWR1bGVkIGlzIHN0aWxsIHBlbmRpbmcgKHRvIGF2b2lkIGRvdWJs
ZSBzY2hlZHVsaW5nKSBvciB3aGVyZSB3ZSBuZWVkIHRvIGNhbmNlbAorICAgICAgICBhIHByZXZp
b3VzbHkgc2NoZWR1bGVkIHRhc2suCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Nh
bmNlbGxhYmxlVGFzay5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpD
YW5jZWxsYWJsZVRhc2spOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6Om9wZXJhdG9y
KCkpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJsZVRhc2s6OmlzUGVuZGluZyBjb25zdCk6Cisg
ICAgICAgIChXVEY6OkNhbmNlbGxhYmxlVGFzazo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6Q2Fu
Y2VsbGFibGVUYXNrOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXVEY6OkNhbmNlbGxhYmxl
VGFzazo6SGFuZGxlOjppc1BlbmRpbmcgY29uc3QpOgorICAgICAgICAoV1RGOjpDYW5jZWxsYWJs
ZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKToKKyAgICAgICAgKFdURjo6Q2FuY2VsbGFibGVUYXNrOjpj
cmVhdGVIYW5kbGUpOgorCiAyMDIxLTA2LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKCkgc2hvdWxkIHJldHVybiBk
YXRhIGFzIGB2b2lkKmAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNjAwMzY1YjE1MDg1YTgyMDRhYmE5MGIxODgy
ZjFhMWQ4Mjc1NWU4Li5jZTUyOTk1NjA4MTE0NGE4NjM1MThlYWZjZTg2MjVjZWUzZDIxMWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHVzaW5nIGxlZ2FjeSBFdmVudExvb3BEZWZl
cnJhYmxlVGFzaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
U3RvcCB1c2luZyBsZWdhY3kgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgYW5kIGRyb3AgdGhlIGNs
YXNzIGVudGlyZWx5LiBDYWxsIHNpdGVzIGFyZQorICAgICAgICBub3cgdXNpbmcgdGhlIEhUTUwg
ZXZlbnQgbG9vcCBkaXJlY3RseSBhbmQgdXNpbmcgV1RGOjpDYW5jZWxsYWJsZVRhc2sgdG8gd3Jh
cCB0aGUgdGFzaworICAgICAgICB0aGV5IHNjaGVkdWxlLiBUaGlzIGFjaGlldmVzIHRoZSBzYW1l
IHJlc3VsdCBhcyBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBidXQgaXMgbW9yZQorICAgICAgICBs
aWdodHdlaWdodCBhbmQgZmxleGlibGUuCisKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmVzQ29udHJvbGxlcjo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6ZGV0YWNoRnJvbURvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y2FjaGVDdXJy
ZW50VGltZSk6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
ci5oOgorICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+
SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
Y2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVVcGRhdGVQbGF5U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ1Rh
c2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVl
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZp
Z3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJC
dWZmZXJlZFRpbWVSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNjaGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25z
VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vRGVmZXJyYWJsZVRhc2suaDoKKwogMjAyMS0wNi0wNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgbGVnYWN5IEV2ZW50
TG9vcEV2ZW50UXVldWUgYW5kIEV2ZW50TG9vcFRhc2tRdWV1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWE5NDFhMDcwYmM5NzIzYTk0ZWM4M2MxYzNjYzY0
MjU1ZTM3YTM0Mi4uNzhjNGZiMjNlMzUzN2E4MDVkNDk2MjUyOTkzN2M5YWE4OGQyN2Q2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzgsNiArMzc4LDcg
QEAKIAkJNDMwQjQ3ODcxQUFBQUMxQTAwMTIyM0RBIC8qIFN0cmluZ0NvbW1vbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdDb21tb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQyN0M1QTkyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVNDSUlDVHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Njg1NjcyMjUwOTRGRTgwMDhDQ0EwNSAvKiBU
aHJlYWRTYW5pdGl6ZXJTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRocmVhZFNhbml0aXplclN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxhYmxlVGFzay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYW5jZWxsYWJsZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZC
QTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2QkVCNkU5MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MERFMzVGMzIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFsU3RyaW5n
SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTMsOCArNjU0LDggQEAK
IAkJQThBNDczMjIxNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEE0NzMyMzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEE0NzMyNDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDczMjUxNTFBODI1QjAwNDEyM0ZGIC8q
IFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5n
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzMyNTE1MUE4MjVC
MDA0MTIzRUUgLyogU3RyaW5nQnVpbGRlckludGVybmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVySW50ZXJuYWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE4QTQ3MzI1MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0J1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjYxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmlu
Z0NvbmNhdGVuYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0Nv
bmNhdGVuYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzI3MTUxQTgy
NUIwMDQxMjNGRiAvKiBTdHJpbmdIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmluZ0hhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMjgx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05ODMsNiArOTg0LDcgQEAKIAkJCQkwRkVDM0M0RjFGMzIzQzY4MDBGNTlCNkMgLyogQ2Fn
ZWRQdHIuaCAqLywKIAkJCQkwRjVGM0Q2ODFGM0ZFQkE2MDBCMTE1QTIgLyogQ2FnZWRVbmlxdWVQ
dHIuaCAqLywKIAkJCQk0MTNGRThGNTFGOEQyRUFCMDBGNkQ3RDcgLyogQ2FsbGJhY2tBZ2dyZWdh
dG9yLmggKi8sCisJCQkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxhYmxlVGFz
ay5oICovLAogCQkJCUE4QTQ3MjZBMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQXJpdGhtZXRp
Yy5oICovLAogCQkJCUE4QTQ3MjZCMTUxQTgyNUEwMDQxMjNGRiAvKiBDaGVja2VkQm9vbGVhbi5o
ICovLAogCQkJCTlCQjkxRjUxMjY0OEVBNEQwMEE1NjIxNyAvKiBDaGVja2VkUHRyLmggKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDdlYTEzZDAxMTVlN2NmMTY2Y2EwN2U5YTM0MDk0NjkxNjAx
YjI1MzkuLmJiZTk5MmI5YWJlN2NjNmE5NTI0ZTZlMjEyNzE3NTEzNGI0MzgzNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAg
ICBDYWdlZFB0ci5oCiAgICAgQ2FnZWRVbmlxdWVQdHIuaAogICAgIENhbGxiYWNrQWdncmVnYXRv
ci5oCisgICAgQ2FuY2VsbGFibGVUYXNrLmgKICAgICBDaGVja2VkQXJpdGhtZXRpYy5oCiAgICAg
Q2hlY2tlZEJvb2xlYW4uaAogICAgIENoZWNrZWRQdHIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ2FuY2VsbGFibGVUYXNrLmggYi9Tb3VyY2UvV1RGL3d0Zi9DYW5jZWxsYWJsZVRhc2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNjc1YzJiMmM0YzBjMDcxZTNmODI0ZjYwM2U4YzgzZTVhMWY0YzEwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ2FuY2VsbGFibGVUYXNrLmgKQEAgLTAs
MCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCituYW1lc3BhY2UgRGV0YWlsIHsKK3N0cnVjdCBD
YW5jZWxsYWJsZVRhc2tJbXBsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENhbmNlbGxhYmxlVGFz
a0ltcGw+IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgZXhwbGlj
aXQgQ2FuY2VsbGFibGVUYXNrSW1wbChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykgOiB0YXNrKFdU
Rk1vdmUodGFzaykpIHsgfQorICAgIEZ1bmN0aW9uPHZvaWQoKT4gdGFzazsKK307Cit9CisKK2Ns
YXNzIENhbmNlbGxhYmxlVGFzayB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ2FuY2VsbGFibGVU
YXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoKTsKKyAgICBi
b29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICEhbV90YXNrV3JhcHBlci0+dGFzazsgfQor
ICAgIHZvaWQgY2FuY2VsKCkgeyBtX3Rhc2tXcmFwcGVyLT50YXNrID0gbnVsbHB0cjsgfQorCisg
ICAgY2xhc3MgSGFuZGxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEhhbmRsZSgpID0gZGVmYXVs
dDsKKyAgICAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3Rhc2tXcmFwcGVy
ICYmIG1fdGFza1dyYXBwZXItPnRhc2s7IH0KKyAgICAgICAgdm9pZCBjYW5jZWwoKTsKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQ2FuY2VsbGFibGVUYXNrOworICAgICAgICBl
eHBsaWNpdCBIYW5kbGUoRGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsJik7CisgICAgICAgIFdl
YWtQdHI8RGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsPiBtX3Rhc2tXcmFwcGVyOworICAgIH07
CisKKyAgICBIYW5kbGUgY3JlYXRlSGFuZGxlKCkgeyByZXR1cm4gSGFuZGxlIHsgbV90YXNrV3Jh
cHBlci5nZXQoKSB9OyB9CisKK3ByaXZhdGU6CisgICAgVW5pcXVlUmVmPERldGFpbDo6Q2FuY2Vs
bGFibGVUYXNrSW1wbD4gbV90YXNrV3JhcHBlcjsKK307CisKK2lubGluZSBDYW5jZWxsYWJsZVRh
c2s6OkNhbmNlbGxhYmxlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKKyAgICA6IG1fdGFz
a1dyYXBwZXIobWFrZVVuaXF1ZVJlZjxEZXRhaWw6OkNhbmNlbGxhYmxlVGFza0ltcGw+KFdURk1v
dmUodGFzaykpKQoreyB9CisKK2lubGluZSB2b2lkIENhbmNlbGxhYmxlVGFzazo6b3BlcmF0b3Io
KSgpCit7CisgICAgaWYgKGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrV3JhcHBlci0+
dGFzaywgbnVsbHB0cikpCisgICAgICAgIHRhc2soKTsKK30KKworaW5saW5lIENhbmNlbGxhYmxl
VGFzazo6SGFuZGxlOjpIYW5kbGUoRGV0YWlsOjpDYW5jZWxsYWJsZVRhc2tJbXBsJiB0YXNrKQor
ICAgIDogbV90YXNrV3JhcHBlcihtYWtlV2Vha1B0cih0YXNrKSkKK3sgfQorCitpbmxpbmUgdm9p
ZCBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZTo6Y2FuY2VsKCkKK3sKKyAgICBpZiAobV90YXNrV3Jh
cHBlcikKKyAgICAgICAgbV90YXNrV3JhcHBlci0+dGFzayA9IG51bGxwdHI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNhbmNlbGxhYmxlVGFzazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5j
cHAKaW5kZXggYjU1ZDYwYjNiYzVmMGQzNzU3MDMwY2ZjMmM0MTk4OWI2MmJmMzEwYS4uYTJjNjY1
OTVmNDYwZTg2YmIxNDY2OTM2OTU1Yjk1NWQ4YTkwNmExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKQEAg
LTQzLDggKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRG9jdW1lbnRUaW1lbGluZXND
b250cm9sbGVyOjpEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIoRG9jdW1lbnQmIGRvY3VtZW50
KQotICAgIDogbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzaygmZG9jdW1lbnQpCi0gICAgLCBtX2Rv
Y3VtZW50KGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKIHsKICAgICBpZiAo
YXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkgewogICAgICAgICBpZiAocGFnZS0+c2V0dGlu
Z3MoKS5oaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQoKSAmJiAhcGFnZS0+
aXNWaXNpYmxlKCkpCkBAIC01NCw2ICs1Myw3IEBAIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
cjo6RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKERvY3VtZW50JiBkb2N1bWVudCkKIAogRG9j
dW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjp+RG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyKCkK
IHsKKyAgICBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdUYXNrLmNhbmNlbCgpOwogfQogCiB2b2lkIERv
Y3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6YWRkVGltZWxpbmUoRG9jdW1lbnRUaW1lbGluZSYg
dGltZWxpbmUpCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyOjpyZW1vdmVUaW1lbGluZShEb2N1bWVudFRpbWVsaW5lJiB0aW1lbGluZSkKIAogdm9pZCBE
b2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmRldGFjaEZyb21Eb2N1bWVudCgpCiB7Ci0gICAg
bV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5jbG9zZSgpOworICAgIG1fY3VycmVudFRpbWVDbGVh
cmluZ1Rhc2suY2FuY2VsKCk7CiAKICAgICB3aGlsZSAoIW1fdGltZWxpbmVzLmNvbXB1dGVzRW1w
dHkoKSkKICAgICAgICAgbV90aW1lbGluZXMuYmVnaW4oKS0+ZGV0YWNoRnJvbURvY3VtZW50KCk7
CkBAIC0yMzMsOCArMjMzLDExIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyOjpj
YWNoZUN1cnJlbnRUaW1lKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBuZXdDCiAgICAgLy8gYW5p
bWF0aW9ucywgc28gd2Ugc2NoZWR1bGUgdGhlIGludmFsaWRhdGlvbiB0YXNrIGFuZCByZWdpc3Rl
ciBhIHdoZW5JZGxlIGNhbGxiYWNrIG9uIHRoZSBWTSwgd2hpY2ggd2lsbAogICAgIC8vIGZpcmUg
c3luY3Jvbm91c2x5IGlmIG5vIEpTIGlzIHJ1bm5pbmcuCiAgICAgbV93YWl0aW5nT25WTUlkbGUg
PSB0cnVlOwotICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmcoKSkK
LSAgICAgICAgbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5zY2hlZHVsZVRhc2soc3RkOjpiaW5k
KCZEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJyZW50VGlt
ZSwgdGhpcykpOworICAgIGlmICghbV9jdXJyZW50VGltZUNsZWFyaW5nVGFzay5pc1BlbmRpbmco
KSkgeworICAgICAgICBDYW5jZWxsYWJsZVRhc2sgdGFzayhzdGQ6OmJpbmQoJkRvY3VtZW50VGlt
ZWxpbmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRUaW1lLCB0aGlzKSk7Cisg
ICAgICAgIG1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2sgPSB0YXNrLmNyZWF0ZUhhbmRsZSgpOwor
ICAgICAgICBtX2RvY3VtZW50LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRl
cm5hbEFzeW5jVGFzaywgV1RGTW92ZSh0YXNrKSk7CisgICAgfQogICAgIC8vIFdlIGV4dGVudCB0
aGUgYXNzb2NpYXRlZCBEb2N1bWVudCdzIGxpZmVjeWNsZSB1bnRpbCB0aGUgVk0gYmVjYW1lIGlk
bGUgc2luY2UgdGhlIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcgogICAgIC8vIGlzIG93bmVk
IGJ5IHRoZSBEb2N1bWVudC4KICAgICBtX2RvY3VtZW50LnZtKCkud2hlbklkbGUoW3RoaXMsIHBy
b3RlY3RlZERvY3VtZW50ID0gbWFrZVJlZlB0cihtX2RvY3VtZW50KV0oKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmgK
aW5kZXggMmExMTA0Zjc5N2Q1MDNmYzQyYTc0M2VlZGRhY2NlZTY2ODJlYWVmMS4uOTcxYmNkNjIx
NjRiM2VlN2VmZGVlYTY5NDI1ZGI1ODU3MDY0MGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuaApAQCAtMjUsOSAr
MjUsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCiAj
aW5jbHVkZSAiUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvQ2FuY2VsbGFibGVUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQu
aD4KQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlQ2xlYXJDYWNoZWRD
dXJyZW50VGltZSgpOwogCiAgICAgV2Vha0hhc2hTZXQ8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1l
bGluZXM7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9jdXJyZW50VGltZUNsZWFyaW5n
VGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX2N1cnJlbnRUaW1lQ2xlYXJpbmdU
YXNrOwogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIE1hcmthYmxlPFNlY29uZHMsIFNl
Y29uZHM6Ok1hcmthYmxlVHJhaXRzPiBtX2NhY2hlZEN1cnJlbnRUaW1lOwogICAgIGJvb2wgbV9p
c1N1c3BlbmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0
aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5k
ZXggYTY2ZmFmZTZjZGRhZjg0YjM3Y2U5YTZlNmFmMTZkOWIwNjcwZjc0NC4uNDUwNGVhMTFmOTgx
OTM1YzFiODhiZmQ5ZDEyMGU2OTllZjZiMDlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyLmgiCiAjaW5jbHVkZSAiVGFza1NvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL0NhbmNlbGxhYmxlVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTExMCw2ICsxMTEsMTcgQEAgcHVibGljOgogICAgICAgICB9KTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBDYW5jZWxsYWJsZVRhc2s6
OkhhbmRsZSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZShUJiBvYmplY3Qs
IFRhc2tTb3VyY2Ugc291cmNlLCBGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKKyAgICB7CisgICAg
ICAgIENhbmNlbGxhYmxlVGFzayBjYW5jZWxsYWJsZVRhc2soV1RGTW92ZSh0YXNrKSk7CisgICAg
ICAgIGF1dG8gdGFza0hhbmRsZSA9IGNhbmNlbGxhYmxlVGFzay5jcmVhdGVIYW5kbGUoKTsKKyAg
ICAgICAgb2JqZWN0LnF1ZXVlVGFza0luRXZlbnRMb29wKHNvdXJjZSwgW3Byb3RlY3RlZE9iamVj
dCA9IG1ha2VSZWYob2JqZWN0KSwgYWN0aXZpdHkgPSBvYmplY3QuQWN0aXZlRE9NT2JqZWN0Ojpt
YWtlUGVuZGluZ0FjdGl2aXR5KG9iamVjdCksIGNhbmNlbGxhYmxlVGFzayA9IFdURk1vdmUoY2Fu
Y2VsbGFibGVUYXNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbmNlbGxhYmxlVGFzaygp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHRhc2tIYW5kbGU7CisgICAgfQorCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRXZlbnRUYXJnZXRUeXBlLCB0eXBlbmFtZSBFdmVudFR5cGU+CiAg
ICAgc3RhdGljIHZvaWQgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KEV2ZW50VGFyZ2V0VHlwZSYg
dGFyZ2V0LCBUYXNrU291cmNlIHNvdXJjZSwgUmVmPEV2ZW50VHlwZT4mJiBldmVudCkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAzZjQ4ZWRiMmU2
ODg4OWMxMDM2ODNkZTYzNGM1ZTBjYTA1NDU1NjIyLi4xYTRkMzM0ZDY4MGU2NjA1ZTQwM2MxYTJm
NGJjMDUwYzI2NzA2Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTM5NCwyMCArMzk0LDggQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1f
c2NhblRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAg
LCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhp
cywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRU
aW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRl
ZFRpbWVyRmlyZWQpCi0gICAgLCBtX2NvbmZpZ3VyZVRleHRUcmFja3NUYXNrKCZkb2N1bWVudCkK
LSAgICAsIG1fY2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGliaWxpdHlUYXNrKCZkb2N1bWVudCkK
LSAgICAsIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2soJmRvY3VtZW50KQotICAgICwgbV9tZWRpYUVu
Z2luZVVwZGF0ZWRUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fdXBkYXRlUGxheVN0YXRlVGFzaygm
ZG9jdW1lbnQpCi0gICAgLCBtX3Jlc3VtZVRhc2soJmRvY3VtZW50KQotICAgICwgbV9zZWVrVGFz
aygmZG9jdW1lbnQpCi0gICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0
cmljdGlvbnNUYXNrKCZkb2N1bWVudCkKLSAgICAsIG1fYnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdl
ZFRhc2soJmRvY3VtZW50KQogICAgICwgbV9yZXNvdXJjZVNlbGVjdGlvblRhc2tRdWV1ZSgmZG9j
dW1lbnQpCiAgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShFdmVudExvb3BFdmVudFF1ZXVlOjpjcmVh
dGUoKnRoaXMpKQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3ZvbHVtZVJldmVy
dFRhc2soJmRvY3VtZW50KQotI2VuZGlmCiAgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3Zp
ZVRpbWUoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQogICAgICwgbV9maXJzdFRp
bWVQbGF5aW5nKHRydWUpCiAgICAgLCBtX3BsYXlpbmcoZmFsc2UpCkBAIC01NzksOSArNTY3LDkg
QEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGlmIChtX2lzb2xh
dGVkV29ybGQpCiAgICAgICAgIG1faXNvbGF0ZWRXb3JsZC0+Y2xlYXJXcmFwcGVycygpOwogCi0g
ICAgbV9zZWVrVGFzay5jbG9zZSgpOwotICAgIG1fcmVzdW1lVGFzay5jbG9zZSgpOwotICAgIG1f
cGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1Rhc2suY2xvc2UoKTsK
KyAgICBtX3NlZWtUYXNrLmNhbmNlbCgpOworICAgIG1fcmVzdW1lVGFzay5jYW5jZWwoKTsKKyAg
ICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmNhbmNl
bCgpOwogICAgIG1fcmVzb3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKIAogICAgIG1f
Y29tcGxldGVseUxvYWRlZCA9IHRydWU7CkBAIC05OTYsNyArOTg0LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZUNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmlsaXR5KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX2No
ZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzay5zY2hlZHVsZVRhc2soW3RoaXNdIHsK
KyAgICBtX2NoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzayA9IHF1ZXVlQ2FuY2Vs
bGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1l
bnQsIFt0aGlzXSB7CiAgICAgICAgIGNoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5KCk7
CiAgICAgfSk7CiB9CkBAIC0yOTc1LDcgKzI5NjMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRp
bQogICAgIC8vIGl0IGlzIHJ1bm5pbmcgdG8gY29tcGxldGUuCiAgICAgaWYgKG1fc2Vla1Rhc2su
aXNQZW5kaW5nKCkpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNhbmNlbGxp
bmcgcGVuZGluZyBzZWVrcyIpOwotICAgICAgICBtX3NlZWtUYXNrLmNhbmNlbFRhc2soKTsKKyAg
ICAgICAgbV9zZWVrVGFzay5jYW5jZWwoKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWspIHsK
ICAgICAgICAgICAgIG5vdyA9IG1fcGVuZGluZ1NlZWstPm5vdzsKICAgICAgICAgICAgIG1fcGVu
ZGluZ1NlZWsgPSBudWxscHRyOwpAQCAtMjk5Nyw3ICsyOTg1LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3Qg
TWVkaWFUaW0KICAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93
LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlmIChm
cm9tRE9NKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2Vl
ayBmcm9tICIsIG5vdywgIiB0byAiLCB0aW1lKTsKLSAgICAgICAgbV9zZWVrVGFzay5zY2hlZHVs
ZVRhc2soc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOworICAg
ICAgICBtX3NlZWtUYXNrID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrVGFzaywgdGhpcykpOwogICAgIH0gZWxzZQogICAgICAgICBzZWVrVGFzaygpOwog
CkBAIC0zNzEyLDcgKzM3MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MTWVkaWFFbGVtZW50
OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICBpZiAobV92b2x1bWVSZXZlcnRUYXNrLmlz
UGVuZGluZygpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgbV92b2x1bWVSZXZlcnRUYXNr
LnNjaGVkdWxlVGFzayhbdGhpcywgb2xkVm9sdW1lXSB7CisgICAgbV92b2x1bWVSZXZlcnRUYXNr
ID0gcXVldWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6Ok1lZGlhRWxlbWVudCwgW3RoaXMsIG9sZFZvbHVtZV0gewogICAgICAgICBtX3ZvbHVtZSA9
IG9sZFZvbHVtZTsKICAgICB9KTsKIApAQCAtNDUwMiw3ICs0NDkwLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZUNvbmZpZ3VyZVRleHRUcmFja3MoKQogCiAgICAgYXV0byBsb2dT
aXRlSWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRl
bnRpZmllciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFz
ay5zY2hlZHVsZVRhc2soW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CisgICAgbV9jb25maWd1
cmVUZXh0VHJhY2tzVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlzLCBsb2dTaXRlSWRlbnRpZmll
cl0gewogICAgICAgICBVTlVTRURfUEFSQU0obG9nU2l0ZUlkZW50aWZpZXIpOwogICAgICAgICBB
TFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAibGFtYmRhKCksIHRhc2sgZmlyZWQiKTsKICAg
ICAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBjb25m
aWd1cmVUZXh0VHJhY2tzIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkg
RE9NIG11dGF0aW9ucy4KQEAgLTUwNTAsNyArNTAzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2NoZWR1bGVNZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogCiAgICAgYXV0byBsb2dTaXRlSWRl
bnRpZmllciA9IExPR0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmll
ciwgInRhc2sgc2NoZWR1bGVkIik7Ci0gICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLnNjaGVk
dWxlVGFzayhbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBtX21lZGlhRW5naW5lVXBk
YXRlZFRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAg
ICAgICAgVU5VU0VEX1BBUkFNKGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xP
Ryhsb2dTaXRlSWRlbnRpZmllciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJl
ZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gbWVkaWFFbmdpbmVX
YXNVcGRhdGVkIGNhbGxzIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11
dGF0aW9ucy4KQEAgLTUzNDMsNyArNTMzMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2No
ZWR1bGVVcGRhdGVQbGF5U3RhdGUoKQogCiAgICAgYXV0byBsb2dTaXRlSWRlbnRpZmllciA9IExP
R0lERU5USUZJRVI7CiAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmllciwgInRhc2sgc2No
ZWR1bGVkIik7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywg
bG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBtX3VwZGF0ZVBsYXlTdGF0ZVRhc2sgPSBxdWV1ZUNh
bmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TWVkaWFF
bGVtZW50LCBbdGhpcywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKICAgICAgICAgVU5VU0VEX1BBUkFN
KGxvZ1NpdGVJZGVudGlmaWVyKTsKICAgICAgICAgQUxXQVlTX0xPRyhsb2dTaXRlSWRlbnRpZmll
ciwgImxhbWJkYSgpLCB0YXNrIGZpcmVkIik7CiAgICAgICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gdXBkYXRlUGxheVN0YXRlIGNhbGxzIG1ldGhvZHMg
dGhhdCBjYW4gdHJpZ2dlciBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KQEAgLTU0NzUsMTMgKzU0
NjMsMTYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wUGVyaW9kaWNUaW1lcnMoKQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdUYXNrcygpCiB7Ci0gICAgbV9jb25m
aWd1cmVUZXh0VHJhY2tzVGFzay5jYW5jZWxUYXNrKCk7Ci0gICAgbV9jaGVja1BsYXliYWNrVGFy
Z2V0Q29tcGF0aWJpbGl0eVRhc2suY2FuY2VsVGFzaygpOwotICAgIG1fdXBkYXRlTWVkaWFTdGF0
ZVRhc2suY2FuY2VsVGFzaygpOwotICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzay5jYW5jZWxU
YXNrKCk7Ci0gICAgbV91cGRhdGVQbGF5U3RhdGVUYXNrLmNhbmNlbFRhc2soKTsKKyAgICBtX2Nv
bmZpZ3VyZVRleHRUcmFja3NUYXNrLmNhbmNlbCgpOworICAgIG1fY2hlY2tQbGF5YmFja1Rhcmdl
dENvbXBhdGliaWxpdHlUYXNrLmNhbmNlbCgpOworICAgIG1fdXBkYXRlTWVkaWFTdGF0ZVRhc2su
Y2FuY2VsKCk7CisgICAgbV9tZWRpYUVuZ2luZVVwZGF0ZWRUYXNrLmNhbmNlbCgpOworICAgIG1f
dXBkYXRlUGxheVN0YXRlVGFzay5jYW5jZWwoKTsKKyAgICBtX3Jlc3VtZVRhc2suY2FuY2VsKCk7
CisgICAgbV9zZWVrVGFzay5jYW5jZWwoKTsKKyAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
QmVoYXZpb3JSZXN0cmljdGlvbnNUYXNrLmNhbmNlbCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgbV92b2x1bWVSZXZlcnRUYXNrLmNhbmNlbFRhc2soKTsKKyAgICBtX3ZvbHVtZVJl
dmVydFRhc2suY2FuY2VsKCk7CiAjZW5kaWYKIH0KIApAQCAtNTYzNywyMSArNTYyOCw5IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c3RvcFdpdGhvdXREZXN0cm95aW5nTWVkaWFQbGF5ZXIoKQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVlcygpCiB7Ci0gICAgbV9jb25m
aWd1cmVUZXh0VHJhY2tzVGFzay5jbG9zZSgpOwotICAgIG1fY2hlY2tQbGF5YmFja1RhcmdldENv
bXBhdGliaWxpdHlUYXNrLmNsb3NlKCk7Ci0gICAgbV91cGRhdGVNZWRpYVN0YXRlVGFzay5jbG9z
ZSgpOwotICAgIG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzay5jbG9zZSgpOwotICAgIG1fdXBkYXRl
UGxheVN0YXRlVGFzay5jbG9zZSgpOwotICAgIG1fcmVzdW1lVGFzay5jbG9zZSgpOwotICAgIG1f
c2Vla1Rhc2suY2xvc2UoKTsKLSAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JS
ZXN0cmljdGlvbnNUYXNrLmNsb3NlKCk7Ci0gICAgbV9zZWVrVGFzay5jbG9zZSgpOwotICAgIG1f
cmVzdW1lVGFzay5jbG9zZSgpOworICAgIGNhbmNlbFBlbmRpbmdUYXNrcygpOwogICAgIG1fcmVz
b3VyY2VTZWxlY3Rpb25UYXNrUXVldWUuY2xvc2UoKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
Y2xvc2UoKTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIG1fdm9sdW1lUmV2ZXJ0VGFz
ay5jbG9zZSgpOwotI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29udGV4dERl
c3Ryb3llZCgpCkBAIC01Njg1LDcgKzU2NjQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAKLSAgICBtX3Jlc3VtZVRhc2suY2FuY2VsVGFzaygpOworICAgIG1fcmVzdW1lVGFzay5jYW5j
ZWwoKTsKIAogICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5z
aW9uOjpCYWNrRm9yd2FyZENhY2hlOgpAQCAtNTcyNCw3ICs1NzAzLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXN1bWUoKQogICAgICAgICAvLyAgTUVESUFfRVJSX0FCT1JURUQgd2hpbGUg
dGhlIGFib3J0RXZlbnQgaXMgYmVpbmcgc2VudCwgYnV0IGNsZWFyZWQgaW1tZWRpYXRlbHkgYWZ0
ZXJ3YXJkcykuCiAgICAgICAgIC8vIFRoaXMgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCBidXQg
aXQgc2VlbXMgbGlrZSBhIHNlbnNpYmxlIHRoaW5nIHRvIGRvLgogICAgICAgICAvLyBBcyBpdCBp
cyBub3Qgc2FmZSB0byBpbW1lZGF0ZWx5IHN0YXJ0IGxvYWRpbmcgbm93LCBsZXQncyBzY2hlZHVs
ZSBhIGxvYWQuCi0gICAgICAgIG1fcmVzdW1lVGFzay5zY2hlZHVsZVRhc2soc3RkOjpiaW5kKCZI
VE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCwgdGhpcykpOworICAgICAgICBtX3Jlc3Vt
ZVRhc2sgPSBxdWV1ZUNhbmNlbGxhYmxlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TWVkaWFFbGVtZW50LCBzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBh
cmVGb3JMb2FkLCB0aGlzKSk7CiAgICAgfQogCiAgICAgdXBkYXRlUmVuZGVyZXIoKTsKQEAgLTY2
MzYsNyArNjYxNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0
aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKFJlY29uZmlndXJlTW9kCiAgICAgfQogCiAgICAgbV9w
cm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSA9IHRydWU7Ci0gICAgbV9jb25maWd1cmVUZXh0VHJh
Y2tzVGFzay5jYW5jZWxUYXNrKCk7CisgICAgbV9jb25maWd1cmVUZXh0VHJhY2tzVGFzay5jYW5j
ZWwoKTsKICAgICBpZiAobW9kZSA9PSBJbW1lZGlhdGVseSkgewogICAgICAgICBSZWY8SFRNTE1l
ZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIGNvbmZpZ3VyZVRleHRUcmFja3Mg
Y2FsbHMgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgog
ICAgICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CkBAIC03MTU3LDcgKzcxMzYsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQnVmZmVyZWRUaW1lUmFuZ2VzQ2hhbmdlZCgp
CiAKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKICAgICBBTFdB
WVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAidGFzayBzY2hlZHVsZWQiKTsKLSAgICBtX2J1ZmZl
cmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrLnNjaGVkdWxlVGFzayhbdGhpcywgbG9nU2l0ZUlkZW50
aWZpZXJdIHsKKyAgICBtX2J1ZmZlcmVkVGltZVJhbmdlc0NoYW5nZWRUYXNrID0gcXVldWVDYW5j
ZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxl
bWVudCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShs
b2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50aWZpZXIs
ICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAgICBpZiAoIW1fcGxheWVyIHx8ICFtX3Rl
eHRUcmFja3MpCkBAIC03Nzg4LDcgKzc3NjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlVXBkYXRlTWVkaWFTdGF0ZSgpCiAKICAgICBhdXRvIGxvZ1NpdGVJZGVudGlmaWVyID0g
TE9HSURFTlRJRklFUjsKICAgICBBTFdBWVNfTE9HKGxvZ1NpdGVJZGVudGlmaWVyLCAidGFzayBz
Y2hlZHVsZWQiKTsKLSAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrLnNjaGVkdWxlVGFzayhbdGhp
cywgbG9nU2l0ZUlkZW50aWZpZXJdIHsKKyAgICBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrID0gcXVl
dWVDYW5jZWxsYWJsZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1l
ZGlhRWxlbWVudCwgW3RoaXMsIGxvZ1NpdGVJZGVudGlmaWVyXSB7CiAgICAgICAgIFVOVVNFRF9Q
QVJBTShsb2dTaXRlSWRlbnRpZmllcik7CiAgICAgICAgIEFMV0FZU19MT0cobG9nU2l0ZUlkZW50
aWZpZXIsICJsYW1iZGEoKSwgdGFzayBmaXJlZCIpOwogICAgICAgICBSZWY8SFRNTE1lZGlhRWxl
bWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHVwZGF0ZU1lZGlhU3RhdGUgY2FsbHMgbWV0
aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgpAQCAtODA2Miwx
NCArODA0MSwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKCkKICAgICBpZiAoIW1lZGlhU2Vzc2lv
bigpLmhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVz
ZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgbV9w
bGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzay5zY2hlZHVsZVRh
c2soW3Byb3RlY3RlZFRoaXNdICgpIHsKLSAgICAgICAgYXV0byYgbWVkaWFFbGVtZW50U2Vzc2lv
biA9IHByb3RlY3RlZFRoaXMtPm1lZGlhU2Vzc2lvbigpOwotICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+aXNQbGF5aW5nKCkgfHwgbWVkaWFFbGVtZW50U2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpBdXRvcGxheWluZyB8fCBtZWRpYUVsZW1lbnRTZXNzaW9uLnN0YXRl
KCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcpCisgICAgbV9wbGF5YmFja0NvbnRy
b2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGFzayA9IHF1ZXVlQ2FuY2VsbGFibGVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFt0aGlz
XSAoKSB7CisgICAgICAgIGF1dG8mIG1lZGlhRWxlbWVudFNlc3Npb24gPSBtZWRpYVNlc3Npb24o
KTsKKyAgICAgICAgaWYgKGlzUGxheWluZygpIHx8IG1lZGlhRWxlbWVudFNlc3Npb24uc3RhdGUo
KSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXV0b3BsYXlpbmcgfHwgbWVkaWFFbGVtZW50U2Vz
c2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIG1lZGlhRWxlbWVudFNlc3Npb24uYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250
cm9sc01hbmFnZXIpOwotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zY2hlZHVsZVBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyVXBkYXRlKCk7CisgICAgICAgIHNjaGVkdWxlUGxheWJhY2tDb250cm9sc01h
bmFnZXJVcGRhdGUoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCAwOTJiOGFmOWM4YTMyZGFlMTdiMmY2YWYyMWJjMmFkNGEzYjZjNGFkLi44
MGNmNjhlNmE0ZjMwZmM3N2EzNGM1NGVjZjA2OGUyMjBiZTI1ZjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkF1ZGlv
VHJhY2suaCIKICNpbmNsdWRlICJBdXRvcGxheUV2ZW50LmgiCiAjaW5jbHVkZSAiQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5oIgotI2luY2x1ZGUgIkRlZmVycmFibGVUYXNrLmgiCiAjaW5jbHVkZSAi
RXZlbnRMb29wRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCkBAIC05NDEsMjAgKzk0MCwyMCBAQCBwcml2YXRl
OgogICAgIFRpbWVyIG1fc2NhblRpbWVyOwogICAgIFRpbWVyIG1fcGxheWJhY2tDb250cm9sc01h
bmFnZXJCZWhhdmlvclJlc3RyaWN0aW9uc1RpbWVyOwogICAgIFRpbWVyIG1fc2Vla1RvUGxheWJh
Y2tQb3NpdGlvbkVuZGVkVGltZXI7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9jb25m
aWd1cmVUZXh0VHJhY2tzVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX2NoZWNr
UGxheWJhY2tUYXJnZXRDb21wYXRpYmlsaXR5VGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxl
VGFzayBtX3VwZGF0ZU1lZGlhU3RhdGVUYXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNr
IG1fbWVkaWFFbmdpbmVVcGRhdGVkVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBt
X3VwZGF0ZVBsYXlTdGF0ZVRhc2s7Ci0gICAgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgbV9yZXN1
bWVUYXNrOwotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1fc2Vla1Rhc2s7Ci0gICAgRXZl
bnRMb29wRGVmZXJyYWJsZVRhc2sgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVz
dHJpY3Rpb25zVGFzazsKLSAgICBFdmVudExvb3BEZWZlcnJhYmxlVGFzayBtX2J1ZmZlcmVkVGlt
ZVJhbmdlc0NoYW5nZWRUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fY29uZmln
dXJlVGV4dFRyYWNrc1Rhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9jaGVja1Bs
YXliYWNrVGFyZ2V0Q29tcGF0aWJpbGl0eVRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5k
bGUgbV91cGRhdGVNZWRpYVN0YXRlVGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBt
X21lZGlhRW5naW5lVXBkYXRlZFRhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV91
cGRhdGVQbGF5U3RhdGVUYXNrOworICAgIENhbmNlbGxhYmxlVGFzazo6SGFuZGxlIG1fcmVzdW1l
VGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3NlZWtUYXNrOworICAgIENhbmNl
bGxhYmxlVGFzazo6SGFuZGxlIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJCZWhhdmlvclJlc3Ry
aWN0aW9uc1Rhc2s7CisgICAgQ2FuY2VsbGFibGVUYXNrOjpIYW5kbGUgbV9idWZmZXJlZFRpbWVS
YW5nZXNDaGFuZ2VkVGFzazsKICAgICBFdmVudExvb3BUYXNrUXVldWUgbV9yZXNvdXJjZVNlbGVj
dGlvblRhc2tRdWV1ZTsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9wbGF5ZWRUaW1lUmFuZ2Vz
OwogICAgIFVuaXF1ZVJlZjxFdmVudExvb3BFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEV2ZW50TG9vcERlZmVycmFibGVUYXNrIG1f
dm9sdW1lUmV2ZXJ0VGFzazsKKyAgICBDYW5jZWxsYWJsZVRhc2s6OkhhbmRsZSBtX3ZvbHVtZVJl
dmVydFRhc2s7CiAjZW5kaWYKIAogICAgIFBsYXlQcm9taXNlVmVjdG9yIG1fcGVuZGluZ1BsYXlQ
cm9taXNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmVycmFibGVU
YXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZlcnJhYmxlVGFzay5oCmluZGV4IDM1
NWE3N2Q3ZDZiOGE0MjQ3MmUzYTI0OTNiZDA4MmIxOGE5N2MwNzAuLjhlODg5MjI4MDVhMjg5ZWQ4
Y2FjOTE3ZjhiNDdhMDJmOTNiMDRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlZmVycmFibGVUYXNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmZXJy
YWJsZVRhc2suaApAQCAtMjUsMTUgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERlZmVycmFibGVUYXNr
QmFzZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxEZWZlcnJhYmxlVGFza0Jhc2U+IHsKK2NsYXNz
IE1haW5UaHJlYWREZWZlcnJhYmxlVGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNYWluVGhy
ZWFkRGVmZXJyYWJsZVRhc2s+IHsKIHB1YmxpYzoKKyAgICBNYWluVGhyZWFkRGVmZXJyYWJsZVRh
c2soKSA9IGRlZmF1bHQ7CisKICAgICB2b2lkIGNsb3NlKCkKICAgICB7CiAgICAgICAgIGNhbmNl
bFRhc2soKTsKQEAgLTQ4LDY3ICs0NywyNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQZW5kaW5nOyB9CiAKLXByb3RlY3RlZDoKLSAgICB+RGVm
ZXJyYWJsZVRhc2tCYXNlKCkgPSBkZWZhdWx0OwotICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xvc2VkOyB9Ci0gICAgdm9pZCBzZXRJc1BlbmRpbmcoYm9vbCBpc1BlbmRp
bmcpIHsgbV9pc1BlbmRpbmcgPSBpc1BlbmRpbmc7IH0KLQotcHJpdmF0ZToKLSAgICBib29sIG1f
aXNQZW5kaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwotfTsK
LQotY2xhc3MgTWFpblRocmVhZERlZmVycmFibGVUYXNrIDogcHVibGljIERlZmVycmFibGVUYXNr
QmFzZSB7Ci1wdWJsaWM6Ci0gICAgTWFpblRocmVhZERlZmVycmFibGVUYXNrKCkKLSAgICAgICAg
OiBtX2Rpc3BhdGNoZXIoKQotICAgIHsgfQotCiAgICAgdm9pZCBzY2hlZHVsZVRhc2soRnVuY3Rp
b248dm9pZCgpPiYmIHRhc2spCiAgICAgewotICAgICAgICBpZiAoaXNDbG9zZWQoKSkKKyAgICAg
ICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FuY2Vs
VGFzaygpOwogCi0gICAgICAgIHNldElzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgbV9pc1BlbmRp
bmcgPSB0cnVlOwogICAgICAgICBtX2Rpc3BhdGNoZXIucG9zdFRhc2soW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0gewogICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBBU1NFUlQo
d2Vha1RoaXMtPmlzUGVuZGluZygpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZXRJc1BlbmRp
bmcoZmFsc2UpOworICAgICAgICAgICAgd2Vha1RoaXMtPm1faXNQZW5kaW5nID0gZmFsc2U7CiAg
ICAgICAgICAgICB0YXNrKCk7CiAgICAgICAgIH0pOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBN
YWluVGhyZWFkVGFza0Rpc3BhdGNoZXIgbV9kaXNwYXRjaGVyOworICAgIGJvb2wgbV9pc1BlbmRp
bmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07CiB9OwogCi0vLyBT
aW1pbGFyIHRvIERlZmVycmFibGVUYXNrIGJ1dCBiYXNlZCBvbiB0aGUgSFRNTCBldmVudCBsb29w
LgotY2xhc3MgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sgOiBwdWJsaWMgRGVmZXJyYWJsZVRhc2tC
YXNlLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKLXB1YmxpYzoKLSAgICBF
dmVudExvb3BEZWZlcnJhYmxlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ICAgICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCi0gICAgeyB9Ci0K
LSAgICAvLyBGSVhNRTogUGFzcyBUYXNrU291cmNlIGluc3RlYWQgb2YgYXNzdW1pbmcgVGFza1Nv
dXJjZTo6TWVkaWFFbGVtZW50LgotICAgIHZvaWQgc2NoZWR1bGVUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQotICAgIHsKLSAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjYW5jZWxUYXNr
KCk7Ci0KLSAgICAgICAgc2V0SXNQZW5kaW5nKHRydWUpOwotICAgICAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpNZWRpYUVsZW1l
bnQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayld
IHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgQVNTRVJUKHdlYWtUaGlzLT5pc1BlbmRpbmcoKSk7Ci0gICAgICAgICAgICB3
ZWFrVGhpcy0+c2V0SXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgICAgIHRhc2soKTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotfTsKLQotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>