<?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>215816</bug_id>
          
          <creation_ts>2020-08-25 11:23:05 -0700</creation_ts>
          <short_desc>[iOS] provide a way to get previously inserted alternatives for the selected text</short_desc>
          <delta_ts>2020-08-27 18:59:57 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682714</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-25 11:23:05 -0700</bug_when>
    <thetext>`-[WKContentView insertText:alternatives:style:]` propagates the `NSArray&lt;NSString *&gt; *alternatives` to the WebProcess for showing markers in the inserted text, but has no way of providing the caller back the `NSArray&lt;NSString *&gt; *alternatives` it gave to the `WKContentView`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682715</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-25 11:23:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/66646042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682716</commentid>
    <comment_count>2</comment_count>
      <attachid>407210</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-25 11:25:24 -0700</bug_when>
    <thetext>Created attachment 407210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682822</commentid>
    <comment_count>3</comment_count>
      <attachid>407242</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-25 15:15:47 -0700</bug_when>
    <thetext>Created attachment 407242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683219</commentid>
    <comment_count>4</comment_count>
      <attachid>407242</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-26 17:16:53 -0700</bug_when>
    <thetext>Comment on attachment 407242
Patch

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

Looks like the test is failing on the bot, so I won’t say review+ yet since I assume you’ll have to make changes to get the test passing.

&gt; Source/WebKit/UIProcess/PageClient.h:381
&gt; +    virtual NSTextAlternatives *platformDictationAlternatives(WebCore::DictationContext) = 0;

Not thrilled by the use of the word &quot;platform&quot; here. How about putting the word &quot;cocoa&quot; in the name instead?

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3125
&gt; +    if (dictationContextsForSelection.isEmpty())
&gt; +        return @[ ];

Is it important to optimize this case? The code below will also create an empty array so you could just leave this out unless it’s a valuable performance optimization.

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:321
&gt; +        if (!markers.isEmpty()) {

Why the check for empty vector? The code below will correctly handle an empty vector. I suggest leaving this if statement out.

&gt; Tools/TestWebKitAPI/ios/UIKitSPI.h:250
&gt; +@protocol UIWKInteractionViewProtocol_66646042 &lt;UIWKInteractionViewProtocol&gt;
&gt; +- (NSArray&lt;NSTextAlternatives *&gt; *)alternativesForSelectedText;
&gt; +@end

Do we really need to specify this peculiar protocol name, UIWKInteractionViewProtocol_66646042, to have this work correctly? Why? I don’t think it’s a good idea to have a name with a Radar bug number in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683495</commentid>
    <comment_count>5</comment_count>
      <attachid>407242</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-27 15:12:49 -0700</bug_when>
    <thetext>Comment on attachment 407242
Patch

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

&gt;&gt; Source/WebKit/UIProcess/PageClient.h:381
&gt;&gt; +    virtual NSTextAlternatives *platformDictationAlternatives(WebCore::DictationContext) = 0;
&gt; 
&gt; Not thrilled by the use of the word &quot;platform&quot; here. How about putting the word &quot;cocoa&quot; in the name instead?

My thinking was that all of the other functions didn&apos;t use anything platform-specific, so if other platforms decided to leverage this then they could override `plaftormDictationAlternatives` and be able to use the same name.  I&apos;ve not seen functions with &quot;cocoa&quot; in the name before, so that seems a bit odd to me personally.  I have no preference as to how this is named tho, so I will take any suggestions.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:3125
&gt;&gt; +        return @[ ];
&gt; 
&gt; Is it important to optimize this case? The code below will also create an empty array so you could just leave this out unless it’s a valuable performance optimization.

good point

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:321
&gt;&gt; +        if (!markers.isEmpty()) {
&gt; 
&gt; Why the check for empty vector? The code below will correctly handle an empty vector. I suggest leaving this if statement out.

good point

&gt;&gt; Tools/TestWebKitAPI/ios/UIKitSPI.h:250
&gt;&gt; +@end
&gt; 
&gt; Do we really need to specify this peculiar protocol name, UIWKInteractionViewProtocol_66646042, to have this work correctly? Why? I don’t think it’s a good idea to have a name with a Radar bug number in it.

I was told this is how to do this for things that are not in any SDK so that we know when to move this code into the non-`USE(APPLE_INTERNAL_SDK)` area.  I&apos;ll tweak the name slightly to make this clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683499</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-08-27 15:23:56 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #5)
&gt; Comment on attachment 407242 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407242&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/TestWebKitAPI/ios/UIKitSPI.h:250
&gt; &gt;&gt; +@end
&gt; &gt; 
&gt; &gt; Do we really need to specify this peculiar protocol name, UIWKInteractionViewProtocol_66646042, to have this work correctly? Why? I don’t think it’s a good idea to have a name with a Radar bug number in it.
&gt; 
&gt; I was told this is how to do this for things that are not in any SDK so that
&gt; we know when to move this code into the non-`USE(APPLE_INTERNAL_SDK)` area. 
&gt; I&apos;ll tweak the name slightly to make this clearer.

This is fairly typical internally, not so much (in my experience) in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683528</commentid>
    <comment_count>7</comment_count>
      <attachid>407437</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-27 16:54:23 -0700</bug_when>
    <thetext>Created attachment 407437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683537</commentid>
    <comment_count>8</comment_count>
      <attachid>407440</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-27 17:37:23 -0700</bug_when>
    <thetext>Created attachment 407440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683540</commentid>
    <comment_count>9</comment_count>
      <attachid>407440</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-27 17:45:34 -0700</bug_when>
    <thetext>Comment on attachment 407440
Patch

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

&gt; Source/WebKit/UIProcess/PageClient.h:381
&gt; +    virtual NSTextAlternatives *platformDictationAlternatives(WebCore::DictationContext) = 0;

I understand that I did not convince you to change this.

But &quot;platform&quot; is a very poor prefix to use to return a Cocoa-specific version of a data structure. We have been using &quot;platform&quot; in multiple inconsistent ways and it’s making our code hard to understand. The word &quot;platform&quot; itself is ambiguous. And there’s no reason to be vague about what platform we mean unless it’s a cross-platform abstraction. This never returns the dictation alternatives of any other platform, so it’s platform-specific for Cocoa.

By naming it &quot;platform&quot; we leave the incorrect impression that other platforms should some day implement this, and general spread a vague sense of uncertainty about what this function does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683546</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-27 18:18:12 -0700</bug_when>
    <thetext>Committed r266265: &lt;https://trac.webkit.org/changeset/266265&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407440.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683551</commentid>
    <comment_count>11</comment_count>
      <attachid>407440</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-27 18:59:57 -0700</bug_when>
    <thetext>Comment on attachment 407440
Patch

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

&gt;&gt; Source/WebKit/UIProcess/PageClient.h:381
&gt;&gt; +    virtual NSTextAlternatives *platformDictationAlternatives(WebCore::DictationContext) = 0;
&gt; 
&gt; I understand that I did not convince you to change this.
&gt; 
&gt; But &quot;platform&quot; is a very poor prefix to use to return a Cocoa-specific version of a data structure. We have been using &quot;platform&quot; in multiple inconsistent ways and it’s making our code hard to understand. The word &quot;platform&quot; itself is ambiguous. And there’s no reason to be vague about what platform we mean unless it’s a cross-platform abstraction. This never returns the dictation alternatives of any other platform, so it’s platform-specific for Cocoa.
&gt; 
&gt; By naming it &quot;platform&quot; we leave the incorrect impression that other platforms should some day implement this, and general spread a vague sense of uncertainty about what this function does.

I apologize if that was the way this was interpreted.  That was not my intention.  I put up the most recent patch as both a check to see if I fixed the issue with the bots (yay!) and as another opportunity for people to review the code.  I was still open to suggestions and would&apos;ve happily discussed this further if you felt strongly.  I interpreted your original comment as a suggestion, which I responded to with my own thoughts on the subject, but I was not set in stone or anything like that.  I&apos;d hoped that my &quot;I have no preference as to how this is named tho, so I will take any suggestions.&quot; comment on the last patch would conveyed this, but perhaps my commit-queue? made you think that I was not willing to change.  If so, I apologize.

To respond to your most recent comment, I see many uses of `platform*()` across WebKit and see that as a way of getting the underlying platform representation of some &quot;thing&quot; or doing some work that requires specific platform functionality/idioms.  In the case of this code, although `USE(DICTATION_ALTERNATIVES)` is indeed only enable for `PLATFORM(COCOA)`, there is nothing about `USE(DICTATION_ALTERNATIVES)` that is indicative of being cocoa-only when it&apos;s used.  Yes, no other platforms are using `USE(DICTATION_ALTERNATIVES)` right now, but that doesn&apos;t mean they won&apos;t/can&apos;t in the future.  Perhaps I should&apos;ve wrapped `platformDictationAlternatives` in a `#if PLATFORM(COCOA)` to make that clearer.  I fully admit that I could be wrong/mistaken/confused/etc. in my understanding/view of this.  If there is indeed an implication/impression from engineers on other platforms that they should implement this then I will change it.  I&apos;m not trying to do that.  But at the same time, I don&apos;t want to write code that makes them think the opposite.

If you feel strongly that this should be named something else, I will happily change it.  I am not trying to be/look stubborn 🙂

Regardless, thanks for the review and feedback 😁</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407210</attachid>
            <date>2020-08-25 11:25:24 -0700</date>
            <delta_ts>2020-08-25 15:15:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215816-20200825112523.patch</filename>
            <type>text/plain</type>
            <size>24117</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMzBlMzA5MWYyY2RlODk1NTE5YzZjYWEwZmMxN2YyZGU2YmI1YjJhLi44
M2RjZDk4NjQ0YjA1MGY0NTk1OWRkYjUxZjM5ZmFiMGI3MWE3ZDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMjAtMDgtMjUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIHByb3ZpZGUgYSB3YXkgdG8gZ2V0IHByZXZpb3VzbHkgaW5zZXJ0
ZWQgYWx0ZXJuYXRpdmVzIGZvciB0aGUgc2VsZWN0ZWQgdGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NjY0NjA0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZl
c0ZvckNvbnRleHQpOgorICAgICAgICBSZXR1cm4gdGhlIHJhdyBgTlNUZXh0QWx0ZXJuYXRpdmVz
ICpgIGFuZCBsZXQgdGhlIGNhbGxlciBjcmVhdGUgdGhlIGBWZWN0b3I8U3RyaW5nPmAgaWYgdGhl
eQorICAgICAgICBuZWVkIHRvIHNvIHRoYXQgY2FsbGVycyB0aGF0IGRvbid0IGNhbiB1c2UgdGhl
IGFjdHVhbCBgTlNUZXh0QWx0ZXJuYXRpdmVzICpgLgorCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICBEcml2ZS1ieTogZml4IHR5cG8uCisKIDIwMjAtMDgtMjQgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgUmVxdWVz
dC9SZXNwb25zZSBjb25zdW1pbmcgYXMgRm9ybURhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTIyYzcyZGVhYzhi
MjQyZDZhYmNmNmMzN2NmOWI3ODU5MDEwMDYyMC4uYzdmMWQ1MWY4MmJmYjFmMzNmNmMyYmM0N2Rl
YWNjZGQxZWQzOWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0wOC0yNSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gcHJvdmlkZSBh
IHdheSB0byBnZXQgcHJldmlvdXNseSBpbnNlcnRlZCBhbHRlcm5hdGl2ZXMgZm9yIHRoZSBzZWxl
Y3RlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQ2MDQyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWx0ZXJu
YXRpdmVzRm9yU2VsZWN0ZWRUZXh0XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbENvY29hOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbENvY29hOjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IEFk
ZGVkLgorICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgcmF3IGBOU1RleHRBbHRlcm5h
dGl2ZXMgKmAgZm9yIGEgZ2l2ZW4gYFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHRgLgorCisgICAg
ICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6
OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0
KToKKyAgICAgICAgSW5jbHVkZSBhIGBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dD5g
IGFzIHBhcnQgb2YgdGhlIGBFZGl0b3JTdGF0ZWAgdGhhdCBjb250YWlucyBhbGwKKyAgICAgICAg
b2YgdGhlIGBXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0YCB0aGF0IGV4aXN0IGluIHRoZSBjdXJy
ZW50bHkgc2VsZWN0ZWQgcmFuZ2UgKG9yIHRoZSByYW5nZQorICAgICAgICBvZiB0aGUgd29yZCBj
b250YWluaW5nIHRoZSBjdXJzb3IgaWYgbm90aGluZyBpcyBzZWxlY3RlZCkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisKIDIwMjAtMDgtMjQgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQgYXQgY29tLmFwcGxlLldlYktpdDogV2ViS2l0OjpQREZQbHVnaW46
OmNyZWF0ZVNjcm9sbGJhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY3YWJkOGQx
YjkxYmJjZDgzNTRiNWZiOTRiOTM2MzE5ZWFkZjA1NzYuLmJkMzY0NWU1NWM1NjNjNTM1ZDRmYjY1
ZjYxYzI0YWNlM2JiNzFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wOC0yNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU10gcHJvdmlkZSBhIHdheSB0byBnZXQgcHJldmlvdXNseSBpbnNlcnRlZCBh
bHRlcm5hdGl2ZXMgZm9yIHRoZSBzZWxlY3RlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY2NjQ2MDQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWN0YXRpb25B
bHRlcm5hdGl2ZXM6XSk6CisgICAgICAgIENyZWF0ZSBhIGBWZWN0b3I8U3RyaW5nPmAgZnJvbSB0
aGUgcmV0dXJuZWQgYE5TVGV4dEFsdGVybmF0aXZlcyAqYCBub3cgdGhhdCB0aGUgbWVtYmVyCisg
ICAgICAgIGBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZl
c0ZvckNvbnRleHRgIHJldHVybnMgaXQuCisKIDIwMjAtMDgtMjQgIEFkaXR5YSBLZWVydGhpICA8
YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU2hvdyBwaWNrZXIgZm9yIGRh
dGUgYW5kIGRhdGV0aW1lLWxvY2FsIGlucHV0IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggMWYwYTc3MjI5ZWNmMzMwYmMzOTEzZmY3YWQ3NDE2OWRlMjE2MDE5YS4uYTRjMTc0
Y2IzMjNiMjliZDgyMmFkZGZkMjg1N2EzMjVmMDQ5MWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtNDIyMSw3ICs0MjIxLDcgQEAgVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpkaWN0
YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXImIG1hcmsKICAg
ICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5kaWN0YXRpb25BbHRlcm5hdGl2
ZXNGb3JNYXJrZXIobWFya2VyKTsKIH0KIAotdm9pZCBFZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0
ZXJuYXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCit2b2lk
IEVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0
aXZlU3RyaW5nKQogewogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0
YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVN0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAppbmRleCBkZGEyOTMxOTM0YzFiZDFmMDYyYmFiNzNmMGNiYzU5NmVmMDVlNzU5Li42OGM4
ZWFkYTM2NWQyYTc1OTU1ZWFiNWIwM2YzNTJkNDQzZjBkMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKQEAgLTQ4OSw3ICs0ODksNyBAQCBwdWJsaWM6CiAgICAgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9yIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1
bHRQYXJhZ3JhcGhTZXBhcmF0b3I7IH0KICAgICB2b2lkIHNldERlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yIHNlcGFyYXRvcikgeyBtX2RlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IgPSBzZXBhcmF0b3I7IH0KICAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXImKTsKLSAgICB2b2lk
IGFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmVTdHJpbmcpOworICAgIHZvaWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBT
dHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKTsKIAogI2lmIFVTRShBUFBLSVQpCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAppbmRleCBi
ZWY5MzQ4MjA2OWRkZTAwZjU1MmY4MmU0M2Q4OTZiYjM0ZTY4ZjZkLi4yMGM3YmRkZTA4MTY4MWU2
OWQ3NzZmOTNlNDc2ZTU1MmU0OTg4ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWx0ZXJuYXRp
dmVzKERpY3RhdGlvbkNvbnRleHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlc0ZvckNvbnRl
eHQoRGljdGF0aW9uQ29udGV4dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgTlNUZXh0QWx0ZXJuYXRp
dmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KERpY3RhdGlvbkNvbnRleHQpOwogCiAjaWYgVVNF
KEFQUEtJVCkKICAgICB1c2luZyBBY2NlcHRhbmNlSGFuZGxlciA9IHZvaWQgKF4pKE5TU3RyaW5n
ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQppbmRleCA4MmFjNzZiNzFkNTU2ZmUxODExMGUyZWJl
NGQxOGY3MmY0MDIxMGUzLi5jZjE1NGM4NmYwMmQ4NjY4YmZiYzYzYTk0ZTdkZTk1MWVhYTIwZThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpAQCAtMjcsNyArMjcsNiBAQAogI2ltcG9ydCAiQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgiCiAKICNpbXBvcnQgIkZsb2F0UmVjdC5oIgotI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9y
dCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CkBAIC00Niw5ICs0NSw5IEBAIERpY3RhdGlvbkNv
bnRleHQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoTlNUZXh0
QWx0ZXJuYXRpdmVzCiAgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRp
dmVzKGFsdGVybmF0aXZlcyk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChEaWN0YXRpb25Db250ZXh0IGNvbnRl
eHQpCitOU1RleHRBbHRlcm5hdGl2ZXMgKkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0
ZXJuYXRpdmVzRm9yQ29udGV4dChEaWN0YXRpb25Db250ZXh0IGNvbnRleHQpCiB7Ci0gICAgcmV0
dXJuIG1ha2VWZWN0b3I8U3RyaW5nPihtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0Zv
ckNvbnRleHQoY29udGV4dCkuYWx0ZXJuYXRpdmVTdHJpbmdzKTsKKyAgICByZXR1cm4gbV9jb250
ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwogfQogCiB2b2lk
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDczM2Q2MTM2NzQ5NDdhMjk5ZjRl
MGJmOTNjOTFkYTA2NTliMzJmMzcuLmE4NWJmY2Y0YmJjNGNlNDNlODUzMjEyNDQxMzkwMDJiMWI5
Zjg1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjbwogICAgICAgICAg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3QobV9jb250ZXh0LmhpdFRlc3RS
ZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2ZSh0aXRsZSk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKHRpdGxlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDQzNzdjOTE5OTAwY2QyMTBjYzI3ODJj
NTJiOWNiZGM2YjUwOWY3ZmEuLmFmMzQ3OTRmYzYxZDMxZjdiZjg3Nzg3NTY3M2QzNjIwMWJlZGM3
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC03MzMs
NiArNzMzLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlXS0dlc3R1cmVUeXBlKSB7
CiAtICh2b2lkKXJlcXVlc3REaWN0YXRpb25Db250ZXh0Oih2b2lkICheKShOU1N0cmluZyAqc2Vs
ZWN0ZWRUZXh0LCBOU1N0cmluZyAqcHJlZml4VGV4dCwgTlNTdHJpbmcgKnBvc3RmaXhUZXh0KSlj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcG9pbnRJc05lYXJNYXJrZWRUZXh0OihDR1BvaW50
KXBvaW50OwogLSAoTlNTdHJpbmcgKilzZWxlY3RlZFRleHQ7CistIChOU0FycmF5PE5TVGV4dEFs
dGVybmF0aXZlcyAqPiAqKWFsdGVybmF0aXZlc0ZvclNlbGVjdGVkVGV4dDsKIC0gKHZvaWQpcmVw
bGFjZVRleHQ6KE5TU3RyaW5nICopdGV4dCB3aXRoVGV4dDooTlNTdHJpbmcgKil3b3JkOwogLSAo
dm9pZClzZWxlY3RXb3JkRm9yUmVwbGFjZW1lbnQ7CiAtIChCT09MKWlzUmVwbGFjZUFsbG93ZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggNjY1OTg1N2QzMTNhYTczYjY5
MWEwY2Y3MzZmZTQwZWU5YTc3ODZjZS4uOTI4NmNlNDBmNDM5YTFmYjFmYjgxZjdjZDhiNWVjZTgz
MGI3ZjFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMTEzLDYgKzEx
Myw5IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rp
b247CiAgICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CiAgICAgZW5jb2Rl
ciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgZW5jb2RlciA8PCBkaWN0YXRpb25Db250ZXh0c0ZvclNlbGVjdGlvbjsK
KyNlbmRpZgogICAgIGVuY29kZXIgPDwgaXNSZXBsYWNlQWxsb3dlZDsKICAgICBlbmNvZGVyIDw8
IGhhc0NvbnRlbnQ7CiAgICAgZW5jb2RlciA8PCBpc1N0YWJsZVN0YXRlVXBkYXRlOwpAQCAtMTg0
LDYgKzE4NywxMCBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50d29DaGFyYWN0ZXJCZWZvcmVTZWxl
Y3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGljdGF0aW9uQ29udGV4dHNG
b3JTZWxlY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5pc1JlcGxhY2VBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NvbnRlbnQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRvclN0YXRlLmgKaW5kZXggZWNlNjc2NDU2NWQyOWU1MTFjMWYwN2ZiOTY1MDgy
Mzc4MWE1ZWQ2YS4uZDQ4ZDc1OTEyODk1OThmOWZlYzI2MzhhNWY4ZmM2ODhlZTI1MTRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKyNpbmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkNvbnRleHQuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CiB9OwpAQCAtMTAwLDYgKzEw
NCw5IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyQWZ0
ZXJTZWxlY3Rpb24geyAwIH07CiAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlU2VsZWN0
aW9uIHsgMCB9OwogICAgICAgICBVQ2hhcjMyIHR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiB7
IDAgfTsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgVmVjdG9yPFdl
YkNvcmU6OkRpY3RhdGlvbkNvbnRleHQ+IGRpY3RhdGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uOwor
I2VuZGlmCiAgICAgICAgIGJvb2wgaXNSZXBsYWNlQWxsb3dlZCB7IGZhbHNlIH07CiAgICAgICAg
IGJvb2wgaGFzQ29udGVudCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaXNTdGFibGVTdGF0ZVVw
ZGF0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXggMGYxYzNkY2Q5NjE5ZWU3ZGUxZDU2YzM4NGY3Yzkw
YWRiMmM0MDA5ZS4uYTQ4MGIzODRjZmVlNDc4MGUxNzFiYTc2ZTA0YmI2NTU4NWExYmE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RGljdGF0aW9uQ29u
dGV4dCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoTlNUZXh0QWx0ZXJuYXRpdmVzICopIGZpbmFs
OwogICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlv
bkNvbnRleHQpIGZpbmFsOwogICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZl
cyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKKyAgICBOU1RleHRBbHRlcm5hdGl2
ZXMgKnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRl
eHQpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBtX3dl
YlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVu
dEltcGxDb2NvYS5tbQppbmRleCBjNzQ4NGE1NDU1OGI4ZmJiZWNkNzQ3MTdjMTU5YTkxNWE2MTE0
NDIzLi5jYWUzNmI2MTc0YmNhOGJiMDY2NTZmOGE3NzA0ZTI0YWU3MGRjMDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0K
QEAgLTMxLDYgKzMxLDggQEAKICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEw
Nyw2ICsxMDksMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dAogfQogCiBWZWN0b3I8U3RyaW5n
PiBQYWdlQ2xpZW50SW1wbENvY29hOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGlj
dGF0aW9uQ29udGV4dCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBtYWtlVmVjdG9y
PFN0cmluZz4ocGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCku
YWx0ZXJuYXRpdmVTdHJpbmdzKTsKK30KKworTlNUZXh0QWx0ZXJuYXRpdmVzICpQYWdlQ2xpZW50
SW1wbENvY29hOjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRp
b25Db250ZXh0IGRpY3RhdGlvbkNvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQppbmRleCBjMDc5ZjExOGRkNGVlZjc3NTg3MmY5NzUwYmRmZDNiZjc4NTNlNzA5Li40
ZDRmODg3ZWRjOTViMWVkNTc1NzQwZjE5OGJiZTYyYmM2MzNjZWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjk5LDYg
KzI5OSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jIHsgdGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9wdGlvbnMpIH0pOwogfQogCisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKK05TVGV4dEFsdGVybmF0aXZlcyAqV2ViUGFnZVBy
b3h5OjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250
ZXh0IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS5wbGF0Zm9y
bURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKworI2VuZGlmCisK
IFJlc291cmNlRXJyb3IgV2ViUGFnZVByb3h5OjplcnJvckZvclVucGVybWl0dGVkQXBwQm91bmRE
b21haW5OYXZpZ2F0aW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiB7IFdLRXJyb3JE
b21haW4sIFdLRXJyb3JOYXZpZ2F0aW9uQXBwQm91bmREb21haW4sIHVybCwgbG9jYWxpemVkRGVz
Y3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFpbikgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZTYxNjM1Y2EwYWNmNjIyMmY3
NWRlOGZjMjVlNDIyMGRhYWVhNDJjLi44ZjAxMWFjZmY0MzhiOWJjMjEwYmRiNTE3NTFiNDVlNjc4
NTVkZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNzgsNiArMzc4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpID0gMDsKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0
YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVhbCBOU1RleHRBbHRlcm5hdGl2ZXMgKnBsYXRm
b3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpID0gMDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA2MjdiZGM1MGE4MGUxMDg4OGQ1ZmY0M2MyZTQ2MGI0Mzc5ZjNmNTlkLi45
MDY0N2UxM2IxZjAzYTY2YWMxNGIwMzBjNzA1ZWFkODgzYzA0MGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVkZSAiRW5k
b3dtZW50U3RhdGVUcmFja2VyLmgiCiAjZW5kaWYKIAorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5h
dGl2ZXM7CiBPQkpDX0NMQVNTIE5TVmlldzsKIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnk7CiAKQEAgLTg4NCw2ICs4ODUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0VGV4
dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5n
ZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CiAgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3lu
Yyhjb25zdCBTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiwgSW5zZXJ0VGV4
dE9wdGlvbnMmJik7CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBOU1Rl
eHRBbHRlcm5hdGl2ZXMgKnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRp
Y3RhdGlvbkNvbnRleHQpOworI2VuZGlmCisKICAgICB2b2lkIGhhc01hcmtlZFRleHQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5j
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRWRpdGluZ1JhbmdlJik+JiYpOwogICAgIHZv
aWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRWRp
dGluZ1JhbmdlJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYzYzOWUwYWI5NWEzZjI1OTA4ZTE5
ZTk0M2E1NDlkMzExNGY0YjJhMC4uMzgzNzhjNTMxYWJlN2I0NjQ2OTdhZjZhZjBjNDY5ZjgyMzM5
YTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMTE4LDYgKzMxMTgsMTcgQEAgLSAoTlNTdHJpbmcg
KilzZWxlY3RlZFRleHQKICAgICByZXR1cm4gKE5TU3RyaW5nICopX3BhZ2UtPmVkaXRvclN0YXRl
KCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb247CiB9CiAKKy0gKE5TQXJyYXk8TlNU
ZXh0QWx0ZXJuYXRpdmVzICo+ICopYWx0ZXJuYXRpdmVzRm9yU2VsZWN0ZWRUZXh0Cit7CisgICAg
YXV0byBkaWN0YXRpb25Db250ZXh0c0ZvclNlbGVjdGlvbiA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgp
LnBvc3RMYXlvdXREYXRhKCkuZGljdGF0aW9uQ29udGV4dHNGb3JTZWxlY3Rpb247CisgICAgaWYg
KGRpY3RhdGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IEBbIF07CisKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShkaWN0YXRpb25Db250ZXh0c0ZvclNl
bGVjdGlvbiwgWyZdIChhdXRvJiBkaWN0YXRpb25Db250ZXh0KSB7CisgICAgICAgIHJldHVybiBf
cGFnZS0+cGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cisg
ICAgfSkuYXV0b3JlbGVhc2UoKTsKK30KKwogLSAodm9pZCltYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsRm9yV2ViVmlldzooaWQpc2VuZGVyCiB7CiAgICAgLy8gTWF0Y2ggcGxhdGZvcm0g
YmVoYXZpb3Igb24gaU9TIGFzIHdlbGwgYXMgbGVnYWN5IFdlYktpdCBiZWhhdmlvciBieSBtb2Rp
ZnlpbmcgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IGU5ZDY3ZjAxNzU3ZGVjNTkyMzE3M2UzYzNhNWE3N2E0Y2MwOGNk
N2IuLjQwNjFiMjJlYzRiODVhNTFjNzU3MDZhODhiNjc5YTA5ZTg4ZGI5OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC02
OSw2ICs2OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudExvYWRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTEyMSw2
ICsxMjIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJUaGVtZUlPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYWRvd1Jvb3QuaD4KQEAgLTI4MCw2ICsyODIsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JT
dGF0ZSYgcmVzdWx0KSBjb25zdAogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBzZWxlY3RlZFJhbmdlOwogICAgIHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUg
PSBtX2lzSW5TdGFibGVTdGF0ZTsKICAgICBib29sIHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3Np
dGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IGZh
bHNlOwpAQCAtMjg5LDEzICsyOTIsMTYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAg
cG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQgPSBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RB
dFN0YXJ0OwogICAgICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBjaGVjayBzaG91bGQgdGFr
ZSBpbnRvIGFjY291bnQgd3JpdGluZyBkaXJlY3Rpb24uCiAgICAgICAgIHBvc3RMYXlvdXREYXRh
LmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwotICAgICAgICBwb3N0TGF5
b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5nZUZy
b21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkpOworCisgICAgICAgIHNlbGVjdGVkUmFuZ2Ug
PSB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpOworICAgICAgICBwb3N0
TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRGb3JDb250ZXh0KHNlbGVjdGVk
UmFuZ2UpOworCiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKICAg
ICAgICAgICAgIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9z
dExheW91dERhdGEuY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJh
Y3RlckJlZm9yZVNlbGVjdGlvbiwgcG9zdExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uKTsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAgICAg
cG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydCA9IHZpZXctPmNvbnRlbnRzVG9Sb290Vmll
dyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmFic29sdXRlQ2FyZXRCb3VuZHMo
JnN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbikpOwogICAgICAgICBwb3N0TGF5b3V0RGF0
YS5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRp
b24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCZlbmROb2RlSXNJbnNpZGVG
aXhlZFBvc2l0aW9uKSk7Ci0gICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50
b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIFN0cmluZyBzZWxlY3RlZFRleHQ7CiAgICAgICAg
IGlmIChzZWxlY3RlZFJhbmdlKSB7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rp
b25SZWN0cyA9IFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKCpzZWxlY3RlZFJh
bmdlKTsKQEAgLTMwOCw2ICszMTQsMTggQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBkaXNhbGxvdyByZXBsYWNlIHdoZW4gdGhlIHN0cmluZyBjb250
YWlucyBvbmx5IENKIGNoYXJhY3RlcnMuCiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFj
ZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFzc3dv
cmRGaWVsZCAmJiAhc2VsZWN0ZWRUZXh0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3Bh
Y2U+KCk7CiAgICAgfQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgaWYg
KHNlbGVjdGVkUmFuZ2UpIHsKKyAgICAgICAgYXV0byBtYXJrZXJzID0gZnJhbWUuZG9jdW1lbnQo
KS0+bWFya2VycygpLm1hcmtlcnNJblJhbmdlKCpzZWxlY3RlZFJhbmdlLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKCFtYXJr
ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcG9zdExheW91dERhdGEuZGljdGF0aW9uQ29u
dGV4dHNGb3JTZWxlY3Rpb24gPSBXVEY6Om1hcChtYXJrZXJzLCBbXSAoYXV0byogbWFya2VyKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpEaWN0YXRp
b25EYXRhPihtYXJrZXItPmRhdGEoKSkuY29udGV4dDsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisKICAgICBwb3N0TGF5b3V0RGF0YS5hdFN0YXJ0T2ZTZW50ZW5j
ZSA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCgpOwogICAgIHBv
c3RMYXlvdXREYXRhLmluc2lkZUZpeGVkUG9zaXRpb24gPSBzdGFydE5vZGVJc0luc2lkZUZpeGVk
UG9zaXRpb24gfHwgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbjsKICAgICBpZiAoIXNlbGVj
dGlvbi5pc05vbmUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDdhOTY5OTVjZjEyOTc4ZmQ3ODRhZDI3YTFkODg4NjFmMTQzNjY0MzQuLjA2ZjBh
Y2JlMmUwNDU3M2YzMWFlMWE5NWY3NDgwYjAxYjc5NTVhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTk1OTUsNyArOTU5NSw3IEBAIC0gKHZvaWQp
X3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczooV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dClk
aWN0YXRpb25Db250ZXh0CiAKIC0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2
ZXM6KFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpZGljdGF0aW9uQ29udGV4dAogewotICAgIHJl
dHVybiBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZl
c0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3Ry
aW5nPihfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZl
c0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCkuYWx0ZXJuYXRpdmVTdHJpbmdzKTsKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlMzQ1NWI4Y2I1MWFiOTBlZGNjYzI4ZmM1OWMxMDVh
NTQ4ZWM3ZDguLjU4ZDA0ZDk0MmU0ZWI3Y2E0Zjg2YzM1N2I0MTA0YmEzOWVlMmQxZDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wOC0yNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgW2lPU10gcHJvdmlkZSBhIHdheSB0byBnZXQgcHJldmlvdXNseSBpbnNlcnRlZCBhbHRl
cm5hdGl2ZXMgZm9yIHRoZSBzZWxlY3RlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2
NjQ2MDQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJuYXRpdmVz
Lm1tOgorICAgICAgICAoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5TaW1wbGUpOgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwogMjAyMC0wOC0yNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBUTFNWZXJz
aW9uLkRlZmF1bHRCZWhhdmlvciBvbiBNb2phdmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5t
bQppbmRleCAyOTUzOTM3YjA2M2E2NWQ4OTM3MzA2NzU5NWVmNzUzNTIxZWNhNzA2Li45OGRjYjRj
YzQwNGU1Yjg4MDY1NWM2OTY0ZWNlYTNmM2ZiZmEyOTQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc2VydFRleHRBbHRlcm5hdGl2ZXMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJu
YXRpdmVzLm1tCkBAIC01Niw2ICs1NiwxMyBAQCBURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMs
IFNpbXBsZSkKICAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDIsIDMp
Il0gYm9vbFZhbHVlXSk7IC8vIGJpZwogICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2
ZXNNYXJrZXIoMCwgNikiXSBib29sVmFsdWVdKTsgLy8gIkEgYmlnICIKICAgICBFWFBFQ1RfVFJV
RShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNE
aWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNiwgNSkiXSBib29sVmFsdWVdKTsgLy8gaGVsbG8K
KworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rp
b24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQsIDgpIl07IC8vIGluIHRo
ZSBtaWRkbGUgb2YgImhlbGxvIgorICAgIGF1dG8gKmFsdGVybmF0aXZlcyA9IFsoaWQgPFVJV0tJ
bnRlcmFjdGlvblZpZXdQcm90b2NvbF82NjY0NjA0Mj4pd2ViVmlldy5nZXQoKSBhbHRlcm5hdGl2
ZXNGb3JTZWxlY3RlZFRleHRdOworICAgIEVYUEVDVF9FUSgxdWwsIGFsdGVybmF0aXZlcy5jb3Vu
dCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyIsIGFsdGVybmF0aXZlc1swXS5wcmltYXJ5
U3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoMXVsLCBhbHRlcm5hdGl2ZXNbMF0uYWx0ZXJuYXRpdmVT
dHJpbmdzLmNvdW50KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInllbGxvdyIsIGFsdGVybmF0aXZl
c1swXS5hbHRlcm5hdGl2ZVN0cmluZ3NbMF0pOwogfQogCiBURVNUKEluc2VydFRleHRBbHRlcm5h
dGl2ZXMsIEluc2VydExlYWRpbmdTcGFjZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCmlu
ZGV4IGYyNWUzYzFkYjQ5YWEyODViODg1N2IxNzU3YzRlYWVhYjc0NDY0NmMuLmVhMTU3YzIzYTNi
ODg2YjFmMjU0YWI1MjhmZDA1MTdiZWZhNTJmMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1VJS2l0U1BJLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRT
UEkuaApAQCAtMjM4LDYgKzIzOCwxMCBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAjZGVmaW5lIFVJ
V0tEb2N1bWVudFJlcXVlc3RNYXJrZWRUZXh0UmVjdHMgKDEgPDwgNSkKICNkZWZpbmUgVUlXS0Rv
Y3VtZW50UmVxdWVzdFNwYXRpYWxBbmRDdXJyZW50U2VsZWN0aW9uICgxIDw8IDYpCiAKK0Bwcm90
b2NvbCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2xfNjY2NDYwNDIgPFVJV0tJbnRlcmFjdGlv
blZpZXdQcm90b2NvbD4KKy0gKE5TQXJyYXk8TlNUZXh0QWx0ZXJuYXRpdmVzICo+ICopYWx0ZXJu
YXRpdmVzRm9yU2VsZWN0ZWRUZXh0OworQGVuZAorCiBAaW50ZXJmYWNlIFVJVGV4dEF1dG9maWxs
U3VnZ2VzdGlvbiAoKQogKyAoaW5zdGFuY2V0eXBlKWF1dG9maWxsU3VnZ2VzdGlvbldpdGhVc2Vy
bmFtZTooTlNTdHJpbmcgKil1c2VybmFtZSBwYXNzd29yZDooTlNTdHJpbmcgKilwYXNzd29yZDsK
IEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407242</attachid>
            <date>2020-08-25 15:15:47 -0700</date>
            <delta_ts>2020-08-27 16:54:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215816-20200825151546.patch</filename>
            <type>text/plain</type>
            <size>24719</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMzBlMzA5MWYyY2RlODk1NTE5YzZjYWEwZmMxN2YyZGU2YmI1YjJhLi44
M2RjZDk4NjQ0YjA1MGY0NTk1OWRkYjUxZjM5ZmFiMGI3MWE3ZDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMjAtMDgtMjUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIHByb3ZpZGUgYSB3YXkgdG8gZ2V0IHByZXZpb3VzbHkgaW5zZXJ0
ZWQgYWx0ZXJuYXRpdmVzIGZvciB0aGUgc2VsZWN0ZWQgdGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NjY0NjA0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZl
c0ZvckNvbnRleHQpOgorICAgICAgICBSZXR1cm4gdGhlIHJhdyBgTlNUZXh0QWx0ZXJuYXRpdmVz
ICpgIGFuZCBsZXQgdGhlIGNhbGxlciBjcmVhdGUgdGhlIGBWZWN0b3I8U3RyaW5nPmAgaWYgdGhl
eQorICAgICAgICBuZWVkIHRvIHNvIHRoYXQgY2FsbGVycyB0aGF0IGRvbid0IGNhbiB1c2UgdGhl
IGFjdHVhbCBgTlNUZXh0QWx0ZXJuYXRpdmVzICpgLgorCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICBEcml2ZS1ieTogZml4IHR5cG8uCisKIDIwMjAtMDgtMjQgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgUmVxdWVz
dC9SZXNwb25zZSBjb25zdW1pbmcgYXMgRm9ybURhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTIyYzcyZGVhYzhi
MjQyZDZhYmNmNmMzN2NmOWI3ODU5MDEwMDYyMC4uYzdmMWQ1MWY4MmJmYjFmMzNmNmMyYmM0N2Rl
YWNjZGQxZWQzOWRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0wOC0yNSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gcHJvdmlkZSBh
IHdheSB0byBnZXQgcHJldmlvdXNseSBpbnNlcnRlZCBhbHRlcm5hdGl2ZXMgZm9yIHRoZSBzZWxl
Y3RlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQ2MDQyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWx0ZXJu
YXRpdmVzRm9yU2VsZWN0ZWRUZXh0XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbENvY29hOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbENvY29hOjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IEFk
ZGVkLgorICAgICAgICBQcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgcmF3IGBOU1RleHRBbHRlcm5h
dGl2ZXMgKmAgZm9yIGEgZ2l2ZW4gYFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHRgLgorCisgICAg
ICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6
OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0
KToKKyAgICAgICAgSW5jbHVkZSBhIGBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dD5g
IGFzIHBhcnQgb2YgdGhlIGBFZGl0b3JTdGF0ZWAgdGhhdCBjb250YWlucyBhbGwKKyAgICAgICAg
b2YgdGhlIGBXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0YCB0aGF0IGV4aXN0IGluIHRoZSBjdXJy
ZW50bHkgc2VsZWN0ZWQgcmFuZ2UgKG9yIHRoZSByYW5nZQorICAgICAgICBvZiB0aGUgd29yZCBj
b250YWluaW5nIHRoZSBjdXJzb3IgaWYgbm90aGluZyBpcyBzZWxlY3RlZCkuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6CisKIDIwMjAtMDgtMjQgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQgYXQgY29tLmFwcGxlLldlYktpdDogV2ViS2l0OjpQREZQbHVnaW46
OmNyZWF0ZVNjcm9sbGJhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGY3YWJkOGQx
YjkxYmJjZDgzNTRiNWZiOTRiOTM2MzE5ZWFkZjA1NzYuLmJkMzY0NWU1NWM1NjNjNTM1ZDRmYjY1
ZjYxYzI0YWNlM2JiNzFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMC0wOC0yNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU10gcHJvdmlkZSBhIHdheSB0byBnZXQgcHJldmlvdXNseSBpbnNlcnRlZCBh
bHRlcm5hdGl2ZXMgZm9yIHRoZSBzZWxlY3RlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY2NjQ2MDQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9kaWN0YXRpb25B
bHRlcm5hdGl2ZXM6XSk6CisgICAgICAgIENyZWF0ZSBhIGBWZWN0b3I8U3RyaW5nPmAgZnJvbSB0
aGUgcmV0dXJuZWQgYE5TVGV4dEFsdGVybmF0aXZlcyAqYCBub3cgdGhhdCB0aGUgbWVtYmVyCisg
ICAgICAgIGBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZl
c0ZvckNvbnRleHRgIHJldHVybnMgaXQuCisKIDIwMjAtMDgtMjQgIEFkaXR5YSBLZWVydGhpICA8
YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU2hvdyBwaWNrZXIgZm9yIGRh
dGUgYW5kIGRhdGV0aW1lLWxvY2FsIGlucHV0IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggMWYwYTc3MjI5ZWNmMzMwYmMzOTEzZmY3YWQ3NDE2OWRlMjE2MDE5YS4uYTRjMTc0
Y2IzMjNiMjliZDgyMmFkZGZkMjg1N2EzMjVmMDQ5MWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtNDIyMSw3ICs0MjIxLDcgQEAgVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpkaWN0
YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXImIG1hcmsKICAg
ICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5kaWN0YXRpb25BbHRlcm5hdGl2
ZXNGb3JNYXJrZXIobWFya2VyKTsKIH0KIAotdm9pZCBFZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0
ZXJuYXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCit2b2lk
IEVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0
aXZlU3RyaW5nKQogewogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+YXBwbHlEaWN0
YXRpb25BbHRlcm5hdGl2ZShhbHRlcm5hdGl2ZVN0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAppbmRleCBkZGEyOTMxOTM0YzFiZDFmMDYyYmFiNzNmMGNiYzU5NmVmMDVlNzU5Li42OGM4
ZWFkYTM2NWQyYTc1OTU1ZWFiNWIwM2YzNTJkNDQzZjBkMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKQEAgLTQ4OSw3ICs0ODksNyBAQCBwdWJsaWM6CiAgICAgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9yIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1
bHRQYXJhZ3JhcGhTZXBhcmF0b3I7IH0KICAgICB2b2lkIHNldERlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yIHNlcGFyYXRvcikgeyBtX2RlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IgPSBzZXBhcmF0b3I7IH0KICAgICBWZWN0b3I8U3RyaW5nPiBkaWN0YXRp
b25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW1lbnRNYXJrZXImKTsKLSAgICB2b2lk
IGFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmVTdHJpbmcpOworICAgIHZvaWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBT
dHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKTsKIAogI2lmIFVTRShBUFBLSVQpCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAppbmRleCBi
ZWY5MzQ4MjA2OWRkZTAwZjU1MmY4MmU0M2Q4OTZiYjM0ZTY4ZjZkLi4yMGM3YmRkZTA4MTY4MWU2
OWQ3NzZmOTNlNDc2ZTU1MmU0OTg4ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKQEAgLTM4LDcg
KzM4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWx0ZXJuYXRp
dmVzKERpY3RhdGlvbkNvbnRleHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsdGVybmF0aXZlc0ZvckNvbnRl
eHQoRGljdGF0aW9uQ29udGV4dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgTlNUZXh0QWx0ZXJuYXRp
dmVzICphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KERpY3RhdGlvbkNvbnRleHQpOwogCiAjaWYgVVNF
KEFQUEtJVCkKICAgICB1c2luZyBBY2NlcHRhbmNlSGFuZGxlciA9IHZvaWQgKF4pKE5TU3RyaW5n
ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQppbmRleCA4MmFjNzZiNzFkNTU2ZmUxODExMGUyZWJl
NGQxOGY3MmY0MDIxMGUzLi5jZjE1NGM4NmYwMmQ4NjY4YmZiYzYzYTk0ZTdkZTk1MWVhYTIwZThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQpAQCAtMjcsNyArMjcsNiBAQAogI2ltcG9ydCAiQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgiCiAKICNpbXBvcnQgIkZsb2F0UmVjdC5oIgotI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKICNpZiBVU0UoQVBQS0lUKQogI2ltcG9y
dCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+CkBAIC00Niw5ICs0NSw5IEBAIERpY3RhdGlvbkNv
bnRleHQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjphZGRBbHRlcm5hdGl2ZXMoTlNUZXh0
QWx0ZXJuYXRpdmVzCiAgICAgcmV0dXJuIG1fY29udGV4dENvbnRyb2xsZXIuYWRkQWx0ZXJuYXRp
dmVzKGFsdGVybmF0aXZlcyk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dChEaWN0YXRpb25Db250ZXh0IGNvbnRl
eHQpCitOU1RleHRBbHRlcm5hdGl2ZXMgKkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6YWx0
ZXJuYXRpdmVzRm9yQ29udGV4dChEaWN0YXRpb25Db250ZXh0IGNvbnRleHQpCiB7Ci0gICAgcmV0
dXJuIG1ha2VWZWN0b3I8U3RyaW5nPihtX2NvbnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0Zv
ckNvbnRleHQoY29udGV4dCkuYWx0ZXJuYXRpdmVTdHJpbmdzKTsKKyAgICByZXR1cm4gbV9jb250
ZXh0Q29udHJvbGxlci5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGNvbnRleHQpOwogfQogCiB2b2lk
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDczM2Q2MTM2NzQ5NDdhMjk5ZjRl
MGJmOTNjOTFkYTA2NTliMzJmMzcuLmE4NWJmY2Y0YmJjNGNlNDNlODUzMjEyNDQxMzkwMDJiMWI5
Zjg1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uLCBjbwogICAgICAgICAg
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3QobV9jb250ZXh0LmhpdFRlc3RS
ZXN1bHQoKS5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2ZSh0aXRsZSk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKHRpdGxlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDQzNzdjOTE5OTAwY2QyMTBjYzI3ODJj
NTJiOWNiZGM2YjUwOWY3ZmEuLmFmMzQ3OTRmYzYxZDMxZjdiZjg3Nzg3NTY3M2QzNjIwMWJlZGM3
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC03MzMs
NiArNzMzLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlXS0dlc3R1cmVUeXBlKSB7
CiAtICh2b2lkKXJlcXVlc3REaWN0YXRpb25Db250ZXh0Oih2b2lkICheKShOU1N0cmluZyAqc2Vs
ZWN0ZWRUZXh0LCBOU1N0cmluZyAqcHJlZml4VGV4dCwgTlNTdHJpbmcgKnBvc3RmaXhUZXh0KSlj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcG9pbnRJc05lYXJNYXJrZWRUZXh0OihDR1BvaW50
KXBvaW50OwogLSAoTlNTdHJpbmcgKilzZWxlY3RlZFRleHQ7CistIChOU0FycmF5PE5TVGV4dEFs
dGVybmF0aXZlcyAqPiAqKWFsdGVybmF0aXZlc0ZvclNlbGVjdGVkVGV4dDsKIC0gKHZvaWQpcmVw
bGFjZVRleHQ6KE5TU3RyaW5nICopdGV4dCB3aXRoVGV4dDooTlNTdHJpbmcgKil3b3JkOwogLSAo
dm9pZClzZWxlY3RXb3JkRm9yUmVwbGFjZW1lbnQ7CiAtIChCT09MKWlzUmVwbGFjZUFsbG93ZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggNjY1OTg1N2QzMTNhYTczYjY5
MWEwY2Y3MzZmZTQwZWU5YTc3ODZjZS4uOTI4NmNlNDBmNDM5YTFmYjFmYjgxZjdjZDhiNWVjZTgz
MGI3ZjFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMTEzLDYgKzEx
Myw5IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rp
b247CiAgICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CiAgICAgZW5jb2Rl
ciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247CisjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCisgICAgZW5jb2RlciA8PCBkaWN0YXRpb25Db250ZXh0c0ZvclNlbGVjdGlvbjsK
KyNlbmRpZgogICAgIGVuY29kZXIgPDwgaXNSZXBsYWNlQWxsb3dlZDsKICAgICBlbmNvZGVyIDw8
IGhhc0NvbnRlbnQ7CiAgICAgZW5jb2RlciA8PCBpc1N0YWJsZVN0YXRlVXBkYXRlOwpAQCAtMTg0
LDYgKzE4NywxMCBAQCBib29sIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50d29DaGFyYWN0ZXJCZWZvcmVTZWxl
Y3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGljdGF0aW9uQ29udGV4dHNG
b3JTZWxlY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5pc1JlcGxhY2VBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NvbnRlbnQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRvclN0YXRlLmgKaW5kZXggZWNlNjc2NDU2NWQyOWU1MTFjMWYwN2ZiOTY1MDgy
Mzc4MWE1ZWQ2YS4uZDQ4ZDc1OTEyODk1OThmOWZlYzI2MzhhNWY4ZmM2ODhlZTI1MTRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCkBAIC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKyNpbmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkNvbnRleHQuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CiB9OwpAQCAtMTAwLDYgKzEw
NCw5IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyQWZ0
ZXJTZWxlY3Rpb24geyAwIH07CiAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlU2VsZWN0
aW9uIHsgMCB9OwogICAgICAgICBVQ2hhcjMyIHR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiB7
IDAgfTsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICAgICAgVmVjdG9yPFdl
YkNvcmU6OkRpY3RhdGlvbkNvbnRleHQ+IGRpY3RhdGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uOwor
I2VuZGlmCiAgICAgICAgIGJvb2wgaXNSZXBsYWNlQWxsb3dlZCB7IGZhbHNlIH07CiAgICAgICAg
IGJvb2wgaGFzQ29udGVudCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaXNTdGFibGVTdGF0ZVVw
ZGF0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
YWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXggMGYxYzNkY2Q5NjE5ZWU3ZGUxZDU2YzM4NGY3Yzkw
YWRiMmM0MDA5ZS4uYTQ4MGIzODRjZmVlNDc4MGUxNzFiYTc2ZTA0YmI2NTU4NWExYmE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6RGljdGF0aW9uQ29u
dGV4dCBhZGREaWN0YXRpb25BbHRlcm5hdGl2ZXMoTlNUZXh0QWx0ZXJuYXRpdmVzICopIGZpbmFs
OwogICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlv
bkNvbnRleHQpIGZpbmFsOwogICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZl
cyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKKyAgICBOU1RleHRBbHRlcm5hdGl2
ZXMgKnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRl
eHQpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBtX3dl
YlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVu
dEltcGxDb2NvYS5tbQppbmRleCBjNzQ4NGE1NDU1OGI4ZmJiZWNkNzQ3MTdjMTU5YTkxNWE2MTE0
NDIzLi5jYWUzNmI2MTc0YmNhOGJiMDY2NTZmOGE3NzA0ZTI0YWU3MGRjMDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0K
QEAgLTMxLDYgKzMxLDggQEAKICNpbXBvcnQgIldLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CisjaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEw
Nyw2ICsxMDksMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25B
bHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dAogfQogCiBWZWN0b3I8U3RyaW5n
PiBQYWdlQ2xpZW50SW1wbENvY29hOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGlj
dGF0aW9uQ29udGV4dCBkaWN0YXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBtYWtlVmVjdG9y
PFN0cmluZz4ocGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCku
YWx0ZXJuYXRpdmVTdHJpbmdzKTsKK30KKworTlNUZXh0QWx0ZXJuYXRpdmVzICpQYWdlQ2xpZW50
SW1wbENvY29hOjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRp
b25Db250ZXh0IGRpY3RhdGlvbkNvbnRleHQpCiB7CiAgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQppbmRleCBjMDc5ZjExOGRkNGVlZjc3NTg3MmY5NzUwYmRmZDNiZjc4NTNlNzA5Li40
ZDRmODg3ZWRjOTViMWVkNTc1NzQwZjE5OGJiZTYyYmM2MzNjZWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjk5LDYg
KzI5OSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jIHsgdGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9wdGlvbnMpIH0pOwogfQogCisjaWYgVVNF
KERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisKK05TVGV4dEFsdGVybmF0aXZlcyAqV2ViUGFnZVBy
b3h5OjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250
ZXh0IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS5wbGF0Zm9y
bURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0KTsKK30KKworI2VuZGlmCisK
IFJlc291cmNlRXJyb3IgV2ViUGFnZVByb3h5OjplcnJvckZvclVucGVybWl0dGVkQXBwQm91bmRE
b21haW5OYXZpZ2F0aW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiB7IFdLRXJyb3JE
b21haW4sIFdLRXJyb3JOYXZpZ2F0aW9uQXBwQm91bmREb21haW4sIHVybCwgbG9jYWxpemVkRGVz
Y3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFpbikgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZTYxNjM1Y2EwYWNmNjIyMmY3
NWRlOGZjMjVlNDIyMGRhYWVhNDJjLi44ZjAxMWFjZmY0MzhiOWJjMjEwYmRiNTE3NTFiNDVlNjc4
NTVkZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNzgsNiArMzc4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2
ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93
RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZEaWN0YXRlZFRleHQsIFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpID0gMDsKICAgICB2
aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0
YXRpb25Db250ZXh0KSA9IDA7CisgICAgdmlydHVhbCBOU1RleHRBbHRlcm5hdGl2ZXMgKnBsYXRm
b3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpID0gMDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA2MjdiZGM1MGE4MGUxMDg4OGQ1ZmY0M2MyZTQ2MGI0Mzc5ZjNmNTlkLi45
MDY0N2UxM2IxZjAzYTY2YWMxNGIwMzBjNzA1ZWFkODgzYzA0MGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVkZSAiRW5k
b3dtZW50U3RhdGVUcmFja2VyLmgiCiAjZW5kaWYKIAorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5h
dGl2ZXM7CiBPQkpDX0NMQVNTIE5TVmlldzsKIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnk7CiAKQEAgLTg4NCw2ICs4ODUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0VGV4
dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5n
ZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CiAgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3lu
Yyhjb25zdCBTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiwgSW5zZXJ0VGV4
dE9wdGlvbnMmJik7CiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBOU1Rl
eHRBbHRlcm5hdGl2ZXMgKnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRp
Y3RhdGlvbkNvbnRleHQpOworI2VuZGlmCisKICAgICB2b2lkIGhhc01hcmtlZFRleHQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5j
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRWRpdGluZ1JhbmdlJik+JiYpOwogICAgIHZv
aWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRWRp
dGluZ1JhbmdlJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYzYzOWUwYWI5NWEzZjI1OTA4ZTE5
ZTk0M2E1NDlkMzExNGY0YjJhMC4uMzgzNzhjNTMxYWJlN2I0NjQ2OTdhZjZhZjBjNDY5ZjgyMzM5
YTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMTE4LDYgKzMxMTgsMTcgQEAgLSAoTlNTdHJpbmcg
KilzZWxlY3RlZFRleHQKICAgICByZXR1cm4gKE5TU3RyaW5nICopX3BhZ2UtPmVkaXRvclN0YXRl
KCkucG9zdExheW91dERhdGEoKS53b3JkQXRTZWxlY3Rpb247CiB9CiAKKy0gKE5TQXJyYXk8TlNU
ZXh0QWx0ZXJuYXRpdmVzICo+ICopYWx0ZXJuYXRpdmVzRm9yU2VsZWN0ZWRUZXh0Cit7CisgICAg
YXV0byBkaWN0YXRpb25Db250ZXh0c0ZvclNlbGVjdGlvbiA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgp
LnBvc3RMYXlvdXREYXRhKCkuZGljdGF0aW9uQ29udGV4dHNGb3JTZWxlY3Rpb247CisgICAgaWYg
KGRpY3RhdGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IEBbIF07CisKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShkaWN0YXRpb25Db250ZXh0c0ZvclNl
bGVjdGlvbiwgWyZdIChhdXRvJiBkaWN0YXRpb25Db250ZXh0KSB7CisgICAgICAgIHJldHVybiBf
cGFnZS0+cGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCk7Cisg
ICAgfSkuYXV0b3JlbGVhc2UoKTsKK30KKwogLSAodm9pZCltYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsRm9yV2ViVmlldzooaWQpc2VuZGVyCiB7CiAgICAgLy8gTWF0Y2ggcGxhdGZvcm0g
YmVoYXZpb3Igb24gaU9TIGFzIHdlbGwgYXMgbGVnYWN5IFdlYktpdCBiZWhhdmlvciBieSBtb2Rp
ZnlpbmcgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IGU5ZDY3ZjAxNzU3ZGVjNTkyMzE3M2UzYzNhNWE3N2E0Y2MwOGNk
N2IuLjQwNjFiMjJlYzRiODVhNTFjNzU3MDZhODhiNjc5YTA5ZTg4ZGI5OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC02
OSw2ICs2OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudExvYWRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRWRpdGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTEyMSw2
ICsxMjIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJUaGVtZUlPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYWRvd1Jvb3QuaD4KQEAgLTI4MCw2ICsyODIsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JT
dGF0ZSYgcmVzdWx0KSBjb25zdAogICAgIH0KIAogICAgIGNvbnN0IGF1dG8mIHNlbGVjdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBzZWxlY3RlZFJhbmdlOwogICAgIHBvc3RMYXlvdXREYXRhLmlzU3RhYmxlU3RhdGVVcGRhdGUg
PSBtX2lzSW5TdGFibGVTdGF0ZTsKICAgICBib29sIHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3Np
dGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IGZh
bHNlOwpAQCAtMjg5LDEzICsyOTIsMTYgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAg
cG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQgPSBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RB
dFN0YXJ0OwogICAgICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBjaGVjayBzaG91bGQgdGFr
ZSBpbnRvIGFjY291bnQgd3JpdGluZyBkaXJlY3Rpb24uCiAgICAgICAgIHBvc3RMYXlvdXREYXRh
LmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwotICAgICAgICBwb3N0TGF5
b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5nZUZy
b21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkpOworCisgICAgICAgIHNlbGVjdGVkUmFuZ2Ug
PSB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpOworICAgICAgICBwb3N0
TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRGb3JDb250ZXh0KHNlbGVjdGVk
UmFuZ2UpOworCiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKICAg
ICAgICAgICAgIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9z
dExheW91dERhdGEuY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJh
Y3RlckJlZm9yZVNlbGVjdGlvbiwgcG9zdExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uKTsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAgICAg
cG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydCA9IHZpZXctPmNvbnRlbnRzVG9Sb290Vmll
dyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmFic29sdXRlQ2FyZXRCb3VuZHMo
JnN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbikpOwogICAgICAgICBwb3N0TGF5b3V0RGF0
YS5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRp
b24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCZlbmROb2RlSXNJbnNpZGVG
aXhlZFBvc2l0aW9uKSk7Ci0gICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50
b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIFN0cmluZyBzZWxlY3RlZFRleHQ7CiAgICAgICAg
IGlmIChzZWxlY3RlZFJhbmdlKSB7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rp
b25SZWN0cyA9IFJlbmRlck9iamVjdDo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKCpzZWxlY3RlZFJh
bmdlKTsKQEAgLTMwOCw2ICszMTQsMTggQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRv
clN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBkaXNhbGxvdyByZXBsYWNlIHdoZW4gdGhlIHN0cmluZyBjb250
YWlucyBvbmx5IENKIGNoYXJhY3RlcnMuCiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFj
ZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFzc3dv
cmRGaWVsZCAmJiAhc2VsZWN0ZWRUZXh0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1MU3Bh
Y2U+KCk7CiAgICAgfQorCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgaWYg
KHNlbGVjdGVkUmFuZ2UpIHsKKyAgICAgICAgYXV0byBtYXJrZXJzID0gZnJhbWUuZG9jdW1lbnQo
KS0+bWFya2VycygpLm1hcmtlcnNJblJhbmdlKCpzZWxlY3RlZFJhbmdlLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZTo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgaWYgKCFtYXJr
ZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcG9zdExheW91dERhdGEuZGljdGF0aW9uQ29u
dGV4dHNGb3JTZWxlY3Rpb24gPSBXVEY6Om1hcChtYXJrZXJzLCBbXSAoYXV0byogbWFya2VyKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpEaWN0YXRp
b25EYXRhPihtYXJrZXItPmRhdGEoKSkuY29udGV4dDsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisKICAgICBwb3N0TGF5b3V0RGF0YS5hdFN0YXJ0T2ZTZW50ZW5j
ZSA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCgpOwogICAgIHBv
c3RMYXlvdXREYXRhLmluc2lkZUZpeGVkUG9zaXRpb24gPSBzdGFydE5vZGVJc0luc2lkZUZpeGVk
UG9zaXRpb24gfHwgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbjsKICAgICBpZiAoIXNlbGVj
dGlvbi5pc05vbmUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDdhOTY5OTVjZjEyOTc4ZmQ3ODRhZDI3YTFkODg4NjFmMTQzNjY0MzQuLjA2ZjBh
Y2JlMmUwNDU3M2YzMWFlMWE5NWY3NDgwYjAxYjc5NTVhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTk1OTUsNyArOTU5NSw3IEBAIC0gKHZvaWQp
X3JlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlczooV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dClk
aWN0YXRpb25Db250ZXh0CiAKIC0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2
ZXM6KFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpZGljdGF0aW9uQ29udGV4dAogewotICAgIHJl
dHVybiBfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZl
c0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3Ry
aW5nPihfcHJpdmF0ZS0+bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZl
c0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4dCkuYWx0ZXJuYXRpdmVTdHJpbmdzKTsKIH0KIAog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlMzQ1NWI4Y2I1MWFiOTBlZGNjYzI4ZmM1OWMxMDVh
NTQ4ZWM3ZDguLjU4ZDA0ZDk0MmU0ZWI3Y2E0Zjg2YzM1N2I0MTA0YmEzOWVlMmQxZDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wOC0yNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgW2lPU10gcHJvdmlkZSBhIHdheSB0byBnZXQgcHJldmlvdXNseSBpbnNlcnRlZCBhbHRl
cm5hdGl2ZXMgZm9yIHRoZSBzZWxlY3RlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2
NjQ2MDQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJuYXRpdmVz
Lm1tOgorICAgICAgICAoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5TaW1wbGUpOgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwogMjAyMC0wOC0yNCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBUTFNWZXJz
aW9uLkRlZmF1bHRCZWhhdmlvciBvbiBNb2phdmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5t
bQppbmRleCAyOTUzOTM3YjA2M2E2NWQ4OTM3MzA2NzU5NWVmNzUzNTIxZWNhNzA2Li4yNTdjNDM2
NzczN2QxN2UzNWFmY2YwNmMyMDA3NTFlZjI0NDUyNTM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc2VydFRleHRBbHRlcm5hdGl2ZXMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJu
YXRpdmVzLm1tCkBAIC01Niw2ICs1NiwxNCBAQCBURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMs
IFNpbXBsZSkKICAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDIsIDMp
Il0gYm9vbFZhbHVlXSk7IC8vIGJpZwogICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2
ZXNNYXJrZXIoMCwgNikiXSBib29sVmFsdWVdKTsgLy8gIkEgYmlnICIKICAgICBFWFBFQ1RfVFJV
RShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNE
aWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNiwgNSkiXSBib29sVmFsdWVdKTsgLy8gaGVsbG8K
KworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rp
b24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQsIDgpIl07IC8vIGluIHRo
ZSBtaWRkbGUgb2YgImhlbGxvIgorICAgIGF1dG8gKmFsdGVybmF0aXZlcyA9IFsoaWQgPFVJV0tJ
bnRlcmFjdGlvblZpZXdQcm90b2NvbF82NjY0NjA0Mj4pd2ViVmlldy5nZXQoKSBhbHRlcm5hdGl2
ZXNGb3JTZWxlY3RlZFRleHRdOworICAgIEVYUEVDVF9FUSgxdWwsIGFsdGVybmF0aXZlcy5jb3Vu
dCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyIsIGFsdGVybmF0aXZlc1swXS5wcmltYXJ5
U3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoMXVsLCBhbHRlcm5hdGl2ZXNbMF0uYWx0ZXJuYXRpdmVT
dHJpbmdzLmNvdW50KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInllbGxvdyIsIGFsdGVybmF0aXZl
c1swXS5hbHRlcm5hdGl2ZVN0cmluZ3NbMF0pOworICAgIEVYUEVDVF9GQUxTRShhbHRlcm5hdGl2
ZXNbMF0uaXNMb3dDb25maWRlbmNlKTsKIH0KIAogVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVz
LCBJbnNlcnRMZWFkaW5nU3BhY2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAppbmRleCBm
MjVlM2MxZGI0OWFhMjg1Yjg4NTdiMTc1N2M0ZWFlYWI3NDQ2NDZjLi41YTgyMGQzYjM3ZWJiNDBm
N2U3ZDMzMjc3ODQyNTRiNzZlNDgwODI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKKyNpbXBv
cnQgPFVJS2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgogI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNh
dGlvbl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUJhckJ1dHRvbkl0ZW1Hcm91cF9Qcml2
YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNhbGxvdXRCYXIuaD4KQEAgLTYxLDYgKzYyLDEyIEBA
IElHTk9SRV9XQVJOSU5HU19FTkQKIAogI2Vsc2UgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
IAorQGludGVyZmFjZSBOU1RleHRBbHRlcm5hdGl2ZXMgOiBOU09iamVjdAorQHByb3BlcnR5IChy
ZWFkb25seSkgTlNTdHJpbmcgKnByaW1hcnlTdHJpbmc7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBO
U0FycmF5PE5TU3RyaW5nICo+ICphbHRlcm5hdGl2ZVN0cmluZ3M7CitAcHJvcGVydHkgKHJlYWRv
bmx5KSBCT09MIGlzTG93Q29uZmlkZW5jZTsKK0BlbmQKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAK
IHZvaWQgVUlBcHBsaWNhdGlvbkluaXRpYWxpemUodm9pZCk7CkBAIC0yMzgsNiArMjQ1LDEwIEBA
IElHTk9SRV9XQVJOSU5HU19FTkQKICNkZWZpbmUgVUlXS0RvY3VtZW50UmVxdWVzdE1hcmtlZFRl
eHRSZWN0cyAoMSA8PCA1KQogI2RlZmluZSBVSVdLRG9jdW1lbnRSZXF1ZXN0U3BhdGlhbEFuZEN1
cnJlbnRTZWxlY3Rpb24gKDEgPDwgNikKIAorQHByb3RvY29sIFVJV0tJbnRlcmFjdGlvblZpZXdQ
cm90b2NvbF82NjY0NjA0MiA8VUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sPgorLSAoTlNBcnJh
eTxOU1RleHRBbHRlcm5hdGl2ZXMgKj4gKilhbHRlcm5hdGl2ZXNGb3JTZWxlY3RlZFRleHQ7CitA
ZW5kCisKIEBpbnRlcmZhY2UgVUlUZXh0QXV0b2ZpbGxTdWdnZXN0aW9uICgpCiArIChpbnN0YW5j
ZXR5cGUpYXV0b2ZpbGxTdWdnZXN0aW9uV2l0aFVzZXJuYW1lOihOU1N0cmluZyAqKXVzZXJuYW1l
IHBhc3N3b3JkOihOU1N0cmluZyAqKXBhc3N3b3JkOwogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407437</attachid>
            <date>2020-08-27 16:54:23 -0700</date>
            <delta_ts>2020-08-27 17:37:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215816-20200827165422.patch</filename>
            <type>text/plain</type>
            <size>24841</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NmY3NDRmNjVlYzgyNDE3YmM3NDMzYzU4MjNkZmQ2MDZmMWE1ZWY4Li4x
N2RmNWI3YzJmZDlmNDY3ZjFmMWIwMDc1NjlhNWM1MzcwOTQ2YzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMjAtMDgtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIHByb3ZpZGUgYSB3YXkgdG8gZ2V0IHByZXZpb3VzbHkgaW5zZXJ0
ZWQgYWx0ZXJuYXRpdmVzIGZvciB0aGUgc2VsZWN0ZWQgdGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NjY0NjA0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZl
c0ZvckNvbnRleHQpOgorICAgICAgICBSZXR1cm4gdGhlIHJhdyBgTlNUZXh0QWx0ZXJuYXRpdmVz
ICpgIGFuZCBsZXQgdGhlIGNhbGxlciBjcmVhdGUgdGhlIGBWZWN0b3I8U3RyaW5nPmAgaWYgdGhl
eQorICAgICAgICBuZWVkIHRvIHNvIHRoYXQgY2FsbGVycyB0aGF0IGRvbid0IGNhbiB1c2UgdGhl
IGFjdHVhbCBgTlNUZXh0QWx0ZXJuYXRpdmVzICpgLgorCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICBEcml2ZS1ieTogZml4IHR5cG8uCisKIDIwMjAtMDgtMjYgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGJ1dHRvbiBmb3IgSW5zcGVj
dG9yXjIgZG9lc24ndCB3b3JrIHdpdGhvdXQgc2V0dGluZyBkZWZhdWx0IGZvciBEZXZlbG9wZXJF
eHRyYXNFbmFibGVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU4MjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDk3OTE5ODUwMGIwNDI1MTkyZDI2OTZkZGUxMzczYzYx
Yzg2ZWYyMC4uZWVmYmM3MGEwNmI0ZjhmMmE3YmEwMDJkY2MyODZlOGEyYjNjYWZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0wOC0yNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gcHJvdmlkZSBhIHdheSB0byBnZXQgcHJldmlvdXNs
eSBpbnNlcnRlZCBhbHRlcm5hdGl2ZXMgZm9yIHRoZSBzZWxlY3RlZCB0ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MTYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY2NjQ2MDQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWx0ZXJuYXRpdmVzRm9yU2VsZWN0ZWRUZXh0
XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFn
ZUNsaWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50
SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29h
OjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IEFkZGVkLgorICAgICAgICBQcm92aWRl
IGEgd2F5IHRvIGdldCB0aGUgcmF3IGBOU1RleHRBbHRlcm5hdGl2ZXMgKmAgZm9yIGEgZ2l2ZW4g
YFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHRgLgorCisgICAgICAgICogU2hhcmVkL0VkaXRvclN0
YXRlLmg6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KToKKyAgICAgICAgSW5jbHVkZSBh
IGBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dD5gIGFzIHBhcnQgb2YgdGhlIGBFZGl0
b3JTdGF0ZWAgdGhhdCBjb250YWlucyBhbGwKKyAgICAgICAgb2YgdGhlIGBXZWJDb3JlOjpEaWN0
YXRpb25Db250ZXh0YCB0aGF0IGV4aXN0IGluIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmFuZ2Ug
KG9yIHRoZSByYW5nZQorICAgICAgICBvZiB0aGUgd29yZCBjb250YWluaW5nIHRoZSBjdXJzb3Ig
aWYgbm90aGluZyBpcyBzZWxlY3RlZCkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJ
S2l0U1BJLmg6CisKIDIwMjAtMDgtMjYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gU3RvcCBsb2dnaW5nIHNhbmRib3ggdmlvbGF0aW9ucyBv
ZiBjb20uYXBwbGUuQ29yZURpc3BsYXkuTm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggZDZmNmU0ZThmYmE1MzA1M2EwMzQzYzY0MjQ5MzM2NzA4NjE3MGZlMS4uY2Mx
YzIzODFmYWMxZjcxYTEzODJkZDFkZjAzNTQyNDExZDg4OTRmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTI3ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBwcm92aWRlIGEgd2F5IHRvIGdldCBw
cmV2aW91c2x5IGluc2VydGVkIGFsdGVybmF0aXZlcyBmb3IgdGhlIHNlbGVjdGVkIHRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTgxNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjY2NDYwNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2RpY3RhdGlvbkFsdGVybmF0aXZlczpdKToKKyAgICAgICAgQ3JlYXRlIGEgYFZl
Y3RvcjxTdHJpbmc+YCBmcm9tIHRoZSByZXR1cm5lZCBgTlNUZXh0QWx0ZXJuYXRpdmVzICpgIG5v
dyB0aGF0IHRoZSBtZW1iZXIKKyAgICAgICAgYFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dGAgcmV0dXJucyBpdC4KKwogMjAyMC0wOC0y
NSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBIYXNoTWFwPFJl
ZjxUPj46OnRha2Ugc2hvdWxkIHJldHVybiBSZWZQdHI8VD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAxZjBhNzcyMjllY2YzMzBiYzM5MTNmZjdhZDc0MTY5ZGUyMTYwMTlhLi5hNGMx
NzRjYjMyM2IyOWJkODIyYWRkZmQyODU3YTMyNWYwNDkxYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC00MjIxLDcgKzQyMjEsNyBAQCBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6OmRp
Y3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciYgbWFyawog
ICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmRpY3RhdGlvbkFsdGVybmF0
aXZlc0Zvck1hcmtlcihtYXJrZXIpOwogfQogCi12b2lkIEVkaXRvcjo6YXBwbHlEaWN0YXRpb25B
bHRlcm5hdGl2ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZVN0cmluZykKK3Zv
aWQgRWRpdG9yOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmVTdHJpbmcpCiB7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5hcHBseURp
Y3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlU3RyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IGRkYTI5MzE5MzRjMWJkMWYwNjJiYWI3M2YwY2JjNTk2ZWYwNWU3NTkuLjY4
YzhlYWRhMzY1ZDJhNzU5NTVlYWI1YjAzZjM1MmQ0NDNmMGQzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtNDg5LDcgKzQ4OSw3IEBAIHB1YmxpYzoKICAgICBFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQogICAgIHZvaWQgc2V0RGVmYXVsdFBhcmFncmFwaFNl
cGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Igc2VwYXJhdG9yKSB7IG1fZGVmYXVsdFBh
cmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQogICAgIFZlY3RvcjxTdHJpbmc+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciYpOwotICAgIHZv
aWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRl
cm5hdGl2ZVN0cmluZyk7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKGNvbnN0
IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpOwogCiAjaWYgVVNFKEFQUEtJVCkKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4
IGJlZjkzNDgyMDY5ZGRlMDBmNTUyZjgyZTQzZDg5NmJiMzRlNjhmNmQuLjIwYzdiZGRlMDgxNjgx
ZTY5ZDc3NmY5M2U0NzZlNTUyZTQ5ODhkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbHRlcm5h
dGl2ZXMoRGljdGF0aW9uQ29udGV4dCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dChEaWN0YXRpb25Db250ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBOU1RleHRBbHRlcm5h
dGl2ZXMgKmFsdGVybmF0aXZlc0ZvckNvbnRleHQoRGljdGF0aW9uQ29udGV4dCk7CiAKICNpZiBV
U0UoQVBQS0lUKQogICAgIHVzaW5nIEFjY2VwdGFuY2VIYW5kbGVyID0gdm9pZCAoXikoTlNTdHJp
bmcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCmluZGV4IDgyYWM3NmI3MWQ1NTZmZTE4MTEwZTJl
YmU0ZDE4ZjcyZjQwMjEwZTMuLmNmMTU0Yzg2ZjAyZDg2NjhiZmJjNjNhOTRlN2RlOTUxZWFhMjBl
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCIKIAogI2ltcG9ydCAiRmxvYXRSZWN0LmgiCi0j
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFVTRShBUFBLSVQpCiAjaW1w
b3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KQEAgLTQ2LDkgKzQ1LDkgQEAgRGljdGF0aW9u
Q29udGV4dCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhOU1Rl
eHRBbHRlcm5hdGl2ZXMKICAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRlcm5h
dGl2ZXMoYWx0ZXJuYXRpdmVzKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KERpY3RhdGlvbkNvbnRleHQgY29u
dGV4dCkKK05TVGV4dEFsdGVybmF0aXZlcyAqQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjph
bHRlcm5hdGl2ZXNGb3JDb250ZXh0KERpY3RhdGlvbkNvbnRleHQgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dChjb250ZXh0KS5hbHRlcm5hdGl2ZVN0cmluZ3MpOworICAgIHJldHVybiBtX2Nv
bnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiB9CiAKIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNzMzZDYxMzY3NDk0N2EyOTlm
NGUwYmY5M2M5MWRhMDY1OWIzMmYzNy4uYTg1YmZjZjRiYmM0Y2U0M2U4NTMyMTI0NDEzOTAwMmIx
YjlmODUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcApAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAg
ICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdChtX2NvbnRleHQuaGl0VGVz
dFJlc3VsdCgpLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKHRpdGxlKTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUodGl0bGUpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNDM3N2M5MTk5MDBjZDIxMGNjMjc4
MmM1MmI5Y2JkYzZiNTA5ZjdmYS4uYTkzNTQzMzlmMGEyMWZjZGUzNTM3NjkxNGEyMDk1YTY0Yzlh
NzMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJ
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTcy
NCw2ICs3MjQsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdLR2VzdHVyZVR5cGUp
IHsKIC0gKE5TQXJyYXkgKil3ZWJTZWxlY3Rpb25SZWN0czsKIC0gKHZvaWQpX2NhbmNlbExvbmdQ
cmVzc0dlc3R1cmVSZWNvZ25pemVyOwogCistIChOU0FycmF5PE5TVGV4dEFsdGVybmF0aXZlcyAq
PiAqKWFsdGVybmF0aXZlc0ZvclNlbGVjdGVkVGV4dDsKKwogQG9wdGlvbmFsCiAtICh2b2lkKWlu
c2VydFRleHRQbGFjZWhvbGRlcldpdGhTaXplOihDR1NpemUpc2l6ZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoVUlUZXh0UGxhY2Vob2xkZXIgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2
b2lkKXJlbW92ZVRleHRQbGFjZWhvbGRlcjooVUlUZXh0UGxhY2Vob2xkZXIgKilwbGFjZWhvbGRl
ciB3aWxsSW5zZXJ0VGV4dDooQk9PTCl3aWxsSW5zZXJ0VGV4dCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JT
dGF0ZS5jcHAKaW5kZXggNjY1OTg1N2QzMTNhYTczYjY5MWEwY2Y3MzZmZTQwZWU5YTc3ODZjZS4u
OTI4NmNlNDBmNDM5YTFmYjFmYjgxZjdjZDhiNWVjZTgzMGI3ZjFjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMTEzLDYgKzExMyw5IEBAIHZvaWQgRWRpdG9yU3RhdGU6
OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb247CiAgICAgZW5jb2RlciA8PCBjaGFy
YWN0ZXJCZWZvcmVTZWxlY3Rpb247CiAgICAgZW5jb2RlciA8PCB0d29DaGFyYWN0ZXJCZWZvcmVT
ZWxlY3Rpb247CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgZW5jb2RlciA8
PCBkaWN0YXRpb25Db250ZXh0c0ZvclNlbGVjdGlvbjsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwg
aXNSZXBsYWNlQWxsb3dlZDsKICAgICBlbmNvZGVyIDw8IGhhc0NvbnRlbnQ7CiAgICAgZW5jb2Rl
ciA8PCBpc1N0YWJsZVN0YXRlVXBkYXRlOwpAQCAtMTg0LDYgKzE4NywxMCBAQCBib29sIEVkaXRv
clN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUG9z
dExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC50d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuZGljdGF0aW9uQ29udGV4dHNGb3JTZWxlY3Rpb24pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc1Jl
cGxhY2VBbGxvd2VkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lmhhc0NvbnRlbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKaW5k
ZXggZWNlNjc2NDU2NWQyOWU1MTFjMWYwN2ZiOTY1MDgyMzc4MWE1ZWQ2YS4uZDQ4ZDc1OTEyODk1
OThmOWZlYzI2MzhhNWY4ZmM2ODhlZTI1MTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCkBAIC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VsZWN0aW9uUmVjdC5o
PgogI2VuZGlmCiAKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyNpbmNsdWRlIDxX
ZWJDb3JlL0RpY3RhdGlvbkNvbnRleHQuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIGNs
YXNzIFRleHRTdHJlYW07CiB9OwpAQCAtMTAwLDYgKzEwNCw5IEBAIHN0cnVjdCBFZGl0b3JTdGF0
ZSB7CiAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24geyAwIH07CiAgICAg
ICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uIHsgMCB9OwogICAgICAgICBVQ2hh
cjMyIHR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiB7IDAgfTsKKyNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKKyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQ+
IGRpY3RhdGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uOworI2VuZGlmCiAgICAgICAgIGJvb2wgaXNS
ZXBsYWNlQWxsb3dlZCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaGFzQ29udGVudCB7IGZhbHNl
IH07CiAgICAgICAgIGJvb2wgaXNTdGFibGVTdGF0ZVVwZGF0ZSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKaW5k
ZXggMGYxYzNkY2Q5NjE5ZWU3ZGUxZDU2YzM4NGY3YzkwYWRiMmM0MDA5ZS4uYTQ4MGIzODRjZmVl
NDc4MGUxNzFiYTc2ZTA0YmI2NTU4NWExYmE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaApAQCAtNjUsNiArNjUsNyBAQCBw
dWJsaWM6CiAgICAgV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCBhZGREaWN0YXRpb25BbHRlcm5h
dGl2ZXMoTlNUZXh0QWx0ZXJuYXRpdmVzICopIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250
ZXh0KSBmaW5hbDsKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnBsYXRmb3JtRGljdGF0aW9uQWx0
ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6
CiAgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQppbmRleCBjNzQ4
NGE1NDU1OGI4ZmJiZWNkNzQ3MTdjMTU5YTkxNWE2MTE0NDIzLi5jYWUzNmI2MTc0YmNhOGJiMDY2
NTZmOGE3NzA0ZTI0YWU3MGRjMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KQEAgLTMxLDYgKzMxLDggQEAKICNpbXBv
cnQgIldLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9y
dCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEwNyw2ICsxMDksMTEgQEAgdm9pZCBQYWdl
Q2xpZW50SW1wbENvY29hOjpyZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGlj
dGF0aW9uQ29udGV4dAogfQogCiBWZWN0b3I8U3RyaW5nPiBQYWdlQ2xpZW50SW1wbENvY29hOjpk
aWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCBkaWN0YXRpb25D
b250ZXh0KQoreworICAgIHJldHVybiBtYWtlVmVjdG9yPFN0cmluZz4ocGxhdGZvcm1EaWN0YXRp
b25BbHRlcm5hdGl2ZXMoZGljdGF0aW9uQ29udGV4dCkuYWx0ZXJuYXRpdmVTdHJpbmdzKTsKK30K
KworTlNUZXh0QWx0ZXJuYXRpdmVzICpQYWdlQ2xpZW50SW1wbENvY29hOjpwbGF0Zm9ybURpY3Rh
dGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0IGRpY3RhdGlvbkNvbnRl
eHQpCiB7CiAgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLT5hbHRlcm5h
dGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBjMDc5ZjExOGRk
NGVlZjc3NTg3MmY5NzUwYmRmZDNiZjc4NTNlNzA5Li40ZDRmODg3ZWRjOTViMWVkNTc1NzQwZjE5
OGJiZTYyYmM2MzNjZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjk5LDYgKzI5OSwxNSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBF
ZGl0aW5nUmFuZwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4
dEFzeW5jIHsgdGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBX
VEZNb3ZlKG9wdGlvbnMpIH0pOwogfQogCisjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMp
CisKK05TVGV4dEFsdGVybmF0aXZlcyAqV2ViUGFnZVByb3h5OjpwbGF0Zm9ybURpY3RhdGlvbkFs
dGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0IGRpY3RhdGlvbkNvbnRleHQpCit7
CisgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS5wbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhk
aWN0YXRpb25Db250ZXh0KTsKK30KKworI2VuZGlmCisKIFJlc291cmNlRXJyb3IgV2ViUGFnZVBy
b3h5OjplcnJvckZvclVucGVybWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHJldHVybiB7IFdLRXJyb3JEb21haW4sIFdLRXJyb3JOYXZpZ2F0aW9u
QXBwQm91bmREb21haW4sIHVybCwgbG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tF
cnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFpbikgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCA3ZTYxNjM1Y2EwYWNmNjIyMmY3NWRlOGZjMjVlNDIyMGRhYWVhNDJjLi44
ZjAxMWFjZmY0MzhiOWJjMjEwYmRiNTE3NTFiNDVlNjc4NTVkZjZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zNzgsNiArMzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29u
dGV4dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIFdlYkNv
cmU6OkRpY3RhdGlvbkNvbnRleHQpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGRp
Y3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSA9IDA7CisgICAg
dmlydHVhbCBOU1RleHRBbHRlcm5hdGl2ZXMgKnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVz
KFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2MjdiZGM1MGE4
MGUxMDg4OGQ1ZmY0M2MyZTQ2MGI0Mzc5ZjNmNTlkLi45MDY0N2UxM2IxZjAzYTY2YWMxNGIwMzBj
NzA1ZWFkODgzYzA0MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVkZSAiRW5kb3dtZW50U3RhdGVUcmFja2VyLmgiCiAj
ZW5kaWYKIAorT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiBPQkpDX0NMQVNTIE5TVmll
dzsKIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAKQEAgLTg4NCw2ICs4ODUs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7
CiAgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiwgSW5zZXJ0VGV4dE9wdGlvbnMmJik7CiAKKyNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKyAgICBOU1RleHRBbHRlcm5hdGl2ZXMgKnBsYXRmb3Jt
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpOworI2VuZGlm
CisKICAgICB2b2lkIGhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZUFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgRWRpdGluZ1JhbmdlJik+JiYpOwogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZUFzeW5j
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRWRpdGluZ1JhbmdlJik+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggYzYzOWUwYWI5NWEzZjI1OTA4ZTE5ZTk0M2E1NDlkMzExNGY0YjJhMC4uNWMz
ODAzY2E1ZDQxNDg4MWY5MmIxNzJhYTYwNmMyMmI3MjAwNDU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC0zMTE4LDYgKzMxMTgsMTQgQEAgLSAoTlNTdHJpbmcgKilzZWxlY3RlZFRleHQKICAgICByZXR1
cm4gKE5TU3RyaW5nICopX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS53b3Jk
QXRTZWxlY3Rpb247CiB9CiAKKy0gKE5TQXJyYXk8TlNUZXh0QWx0ZXJuYXRpdmVzICo+ICopYWx0
ZXJuYXRpdmVzRm9yU2VsZWN0ZWRUZXh0Cit7CisgICAgYXV0byYgZGljdGF0aW9uQ29udGV4dHNG
b3JTZWxlY3Rpb24gPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmRpY3Rh
dGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uOworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KGRpY3Rh
dGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uLCBbJl0gKGF1dG8mIGRpY3RhdGlvbkNvbnRleHQpIHsK
KyAgICAgICAgcmV0dXJuIF9wYWdlLT5wbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0
YXRpb25Db250ZXh0KTsKKyAgICB9KS5hdXRvcmVsZWFzZSgpOworfQorCiAtICh2b2lkKW1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWxGb3JXZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICAv
LyBNYXRjaCBwbGF0Zm9ybSBiZWhhdmlvciBvbiBpT1MgYXMgd2VsbCBhcyBsZWdhY3kgV2ViS2l0
IGJlaGF2aW9yIGJ5IG1vZGlmeWluZyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZmU3N2FhYTk3NzczZWRhZmZlODE5
OTUzMzNiYjY1MGYyMDRiNjMyNC4uZmY5MTE0MGQ3ODBmMTc2NDkyYWViNTgyZGM0NjhmZDIxZDc5
NTZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTY5LDYgKzY5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJv
bGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvci5oPgpAQCAtMTIxLDYgKzEyMiw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckxheWVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclRoZW1lSU9TLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlclZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyZWREb2N1bWVudE1hcmtlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhZG93Um9vdC5oPgpAQCAt
MjgwLDYgKzI4Miw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgfQogCiAgICAgY29uc3Qg
YXV0byYgc2VsZWN0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IHNlbGVjdGVkUmFuZ2U7CiAgICAgcG9zdExheW91dERhdGEuaXNT
dGFibGVTdGF0ZVVwZGF0ZSA9IG1faXNJblN0YWJsZVN0YXRlOwogICAgIGJvb2wgc3RhcnROb2Rl
SXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBlbmROb2RlSXNJbnNpZGVG
aXhlZFBvc2l0aW9uID0gZmFsc2U7CkBAIC0yODksMTMgKzI5MiwxNiBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9IHBvc3RMYXlv
dXREYXRhLmNhcmV0UmVjdEF0U3RhcnQ7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5n
IGNoZWNrIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIGRpcmVjdGlvbi4KICAgICAg
ICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0
YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQoKSwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7
Ci0gICAgICAgIHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dEZvckNv
bnRleHQod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKSk7CisKKyAgICAg
ICAgc2VsZWN0ZWRSYW5nZSA9IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQo
KSk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dEZv
ckNvbnRleHQoc2VsZWN0ZWRSYW5nZSk7CisKICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbnRl
bnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKHNlbGVj
dGlvbi5zdGFydCgpLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbiwgcG9z
dExheW91dERhdGEuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS50d29D
aGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pOwogICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLmlzUmFu
Z2UoKSkgewogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0ID0gdmlldy0+
Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkuYWJz
b2x1dGVDYXJldEJvdW5kcygmc3RhcnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uKSk7CiAgICAg
ICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0RW5kID0gdmlldy0+Y29udGVudHNUb1Jvb3RW
aWV3KFZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24uZW5kKCkpLmFic29sdXRlQ2FyZXRCb3VuZHMo
JmVuZE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24pKTsKLSAgICAgICAgYXV0byBzZWxlY3RlZFJh
bmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgIHNlbGVjdGVkUmFu
Z2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgU3RyaW5nIHNlbGVj
dGVkVGV4dDsKICAgICAgICAgaWYgKHNlbGVjdGVkUmFuZ2UpIHsKICAgICAgICAgICAgIHBvc3RM
YXlvdXREYXRhLnNlbGVjdGlvblJlY3RzID0gUmVuZGVyT2JqZWN0Ojpjb2xsZWN0U2VsZWN0aW9u
UmVjdHMoKnNlbGVjdGVkUmFuZ2UpOwpAQCAtMzA4LDYgKzMxNCwxNiBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc2FsbG93IHJlcGxhY2Ugd2hl
biB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQ0ogY2hhcmFjdGVycy4KICAgICAgICAgcG9zdExh
eW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAh
cmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNBbGxTcGVjaWFsQ2hh
cmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICAgICB9CisKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICBpZiAoc2VsZWN0ZWRSYW5nZSkgeworICAgICAgICBhdXRvIG1hcmtlcnMg
PSBmcmFtZS5kb2N1bWVudCgpLT5tYXJrZXJzKCkubWFya2Vyc0luUmFuZ2UoKnNlbGVjdGVkUmFu
Z2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwor
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5kaWN0YXRpb25Db250ZXh0c0ZvclNlbGVjdGlvbiA9IFdU
Rjo6bWFwKG1hcmtlcnMsIFtdIChhdXRvKiBtYXJrZXIpIHsKKyAgICAgICAgICAgIHJldHVybiBX
VEY6OmdldDxEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uRGF0YT4obWFya2VyLT5kYXRhKCkpLmNv
bnRleHQ7CisgICAgICAgIH0pOworICAgIH0KKyNlbmRpZgorCiAgICAgcG9zdExheW91dERhdGEu
YXRTdGFydE9mU2VudGVuY2UgPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb25BdFNlbnRlbmNl
U3RhcnQoKTsKICAgICBwb3N0TGF5b3V0RGF0YS5pbnNpZGVGaXhlZFBvc2l0aW9uID0gc3RhcnRO
b2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uIHx8IGVuZE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb247
CiAgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25lKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3YTk2OTk1Y2YxMjk3OGZkNzg0YWQyN2ExZDg4ODYx
ZjE0MzY2NDM0Li4wNmYwYWNiZTJlMDQ1NzNmMzFhZTFhOTVmNzQ4MGIwMWI3OTU1YWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05NTk1LDcgKzk1
OTUsNyBAQCAtICh2b2lkKV9yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXM6KFdlYkNvcmU6OkRp
Y3RhdGlvbkNvbnRleHQpZGljdGF0aW9uQ29udGV4dAogCiAtIChWZWN0b3I8U3RyaW5nPilfZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzOihXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KWRpY3RhdGlvbkNv
bnRleHQKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPm1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpOworICAgIHJldHVy
biBtYWtlVmVjdG9yPFN0cmluZz4oX3ByaXZhdGUtPm1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLT5hbHRlcm5hdGl2ZXNGb3JDb250ZXh0KGRpY3RhdGlvbkNvbnRleHQpLmFsdGVybmF0aXZl
U3RyaW5ncyk7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNjYzZTg5NDg4OGZjNTY0
YjUxMzE3ZmFhZDNjNzY0MTlhNjVjZGQzLi44OTBiMGMzODZkZmFlNTM4YjRlMTVhODIzYWFjNTI0
YTk5MjI1MjY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDgtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIHByb3ZpZGUgYSB3YXkgdG8gZ2V0IHByZXZpb3Vz
bHkgaW5zZXJ0ZWQgYWx0ZXJuYXRpdmVzIGZvciB0aGUgc2VsZWN0ZWQgdGV4dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODE2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82NjY0NjA0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0
VGV4dEFsdGVybmF0aXZlcy5tbToKKyAgICAgICAgKEluc2VydFRleHRBbHRlcm5hdGl2ZXMuU2lt
cGxlKToKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmg6CisKIDIwMjAt
MDgtMjYgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3
ZWJraXRjb3JlcHldIE1vdmUgVGltZW91dCB0byB3ZWJraXRjb3JlcHkgKFBhcnQgMikKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFs
dGVybmF0aXZlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5z
ZXJ0VGV4dEFsdGVybmF0aXZlcy5tbQppbmRleCAyOTUzOTM3YjA2M2E2NWQ4OTM3MzA2NzU5NWVm
NzUzNTIxZWNhNzA2Li43YjAwZWFmYjIxNTgxYjExZGUyYzg1NjQxYTQyOWZiNDhjZjc2ZTlmIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc2VydFRl
eHRBbHRlcm5hdGl2ZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tCkBAIC01Niw2ICs1NiwxOCBAQCBURVNUKElu
c2VydFRleHRBbHRlcm5hdGl2ZXMsIFNpbXBsZSkKICAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0
ZXJuYXRpdmVzTWFya2VyKDIsIDMpIl0gYm9vbFZhbHVlXSk7IC8vIGJpZwogICAgIEVYUEVDVF9G
QUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5o
YXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwgNikiXSBib29sVmFsdWVdKTsgLy8gIkEg
YmlnICIKICAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNiwgNSkiXSBi
b29sVmFsdWVdKTsgLy8gaGVsbG8KKworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LmZpcnN0
Q2hpbGQsIDgpIl07IC8vIGluIHRoZSBtaWRkbGUgb2YgImhlbGxvIgorICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVs
bG8iLCBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIHNlbGVjdGVkVGV4dF0pOworCisg
ICAgYXV0byAqYWx0ZXJuYXRpdmVzID0gWyhpZDxVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2xf
U3RhZ2luZzY2NjQ2MDQyPilbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gYWx0ZXJuYXRp
dmVzRm9yU2VsZWN0ZWRUZXh0XTsKKyAgICBFWFBFQ1RfRVEoMXVsLCBhbHRlcm5hdGl2ZXMuY291
bnQpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8iLCBhbHRlcm5hdGl2ZXNbMF0ucHJpbWFy
eVN0cmluZyk7CisgICAgRVhQRUNUX0VRKDF1bCwgYWx0ZXJuYXRpdmVzWzBdLmFsdGVybmF0aXZl
U3RyaW5ncy5jb3VudCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ5ZWxsb3ciLCBhbHRlcm5hdGl2
ZXNbMF0uYWx0ZXJuYXRpdmVTdHJpbmdzWzBdKTsKKyAgICBFWFBFQ1RfRkFMU0UoYWx0ZXJuYXRp
dmVzWzBdLmlzTG93Q29uZmlkZW5jZSk7CiB9CiAKIFRFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZl
cywgSW5zZXJ0TGVhZGluZ1NwYWNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvVUlLaXRTUEkuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKaW5kZXgg
ZjI1ZTNjMWRiNDlhYTI4NWI4ODU3YjE3NTdjNGVhZWFiNzQ0NjQ2Yy4uNDI0ODFiOWMyZmVmNWNi
NTE2ZWQ5ZmFmNTljZGQ4ZjYyNDdjZjY0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvVUlLaXRTUEkuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCisjaW1w
b3J0IDxVSUtpdC9OU1RleHRBbHRlcm5hdGl2ZXMuaD4KICNpbXBvcnQgPFVJS2l0L1VJQXBwbGlj
YXRpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlCYXJCdXR0b25JdGVtR3JvdXBfUHJp
dmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlDYWxsb3V0QmFyLmg+CkBAIC02MSw2ICs2MiwxMiBA
QCBJR05PUkVfV0FSTklOR1NfRU5ECiAKICNlbHNlIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAKK0BpbnRlcmZhY2UgTlNUZXh0QWx0ZXJuYXRpdmVzIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIE5TU3RyaW5nICpwcmltYXJ5U3RyaW5nOworQHByb3BlcnR5IChyZWFkb25seSkg
TlNBcnJheTxOU1N0cmluZyAqPiAqYWx0ZXJuYXRpdmVTdHJpbmdzOworQHByb3BlcnR5IChyZWFk
b25seSkgQk9PTCBpc0xvd0NvbmZpZGVuY2U7CitAZW5kCisKIFdURl9FWFRFUk5fQ19CRUdJTgog
CiB2b2lkIFVJQXBwbGljYXRpb25Jbml0aWFsaXplKHZvaWQpOwpAQCAtMjM4LDYgKzI0NSwxMCBA
QCBJR05PUkVfV0FSTklOR1NfRU5ECiAjZGVmaW5lIFVJV0tEb2N1bWVudFJlcXVlc3RNYXJrZWRU
ZXh0UmVjdHMgKDEgPDwgNSkKICNkZWZpbmUgVUlXS0RvY3VtZW50UmVxdWVzdFNwYXRpYWxBbmRD
dXJyZW50U2VsZWN0aW9uICgxIDw8IDYpCiAKK0Bwcm90b2NvbCBVSVdLSW50ZXJhY3Rpb25WaWV3
UHJvdG9jb2xfU3RhZ2luZzY2NjQ2MDQyIDxVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2w+Cist
IChOU0FycmF5PE5TVGV4dEFsdGVybmF0aXZlcyAqPiAqKWFsdGVybmF0aXZlc0ZvclNlbGVjdGVk
VGV4dDsKK0BlbmQKKwogQGludGVyZmFjZSBVSVRleHRBdXRvZmlsbFN1Z2dlc3Rpb24gKCkKICsg
KGluc3RhbmNldHlwZSlhdXRvZmlsbFN1Z2dlc3Rpb25XaXRoVXNlcm5hbWU6KE5TU3RyaW5nICop
dXNlcm5hbWUgcGFzc3dvcmQ6KE5TU3RyaW5nICopcGFzc3dvcmQ7CiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407440</attachid>
            <date>2020-08-27 17:37:23 -0700</date>
            <delta_ts>2020-08-27 18:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215816-20200827173722.patch</filename>
            <type>text/plain</type>
            <size>24821</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NmY3NDRmNjVlYzgyNDE3YmM3NDMzYzU4MjNkZmQ2MDZmMWE1ZWY4Li4x
N2RmNWI3YzJmZDlmNDY3ZjFmMWIwMDc1NjlhNWM1MzcwOTQ2YzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMjAtMDgtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdIHByb3ZpZGUgYSB3YXkgdG8gZ2V0IHByZXZpb3VzbHkgaW5zZXJ0
ZWQgYWx0ZXJuYXRpdmVzIGZvciB0aGUgc2VsZWN0ZWQgdGV4dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NjY0NjA0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFsdGVybmF0aXZl
c0ZvckNvbnRleHQpOgorICAgICAgICBSZXR1cm4gdGhlIHJhdyBgTlNUZXh0QWx0ZXJuYXRpdmVz
ICpgIGFuZCBsZXQgdGhlIGNhbGxlciBjcmVhdGUgdGhlIGBWZWN0b3I8U3RyaW5nPmAgaWYgdGhl
eQorICAgICAgICBuZWVkIHRvIHNvIHRoYXQgY2FsbGVycyB0aGF0IGRvbid0IGNhbiB1c2UgdGhl
IGFjdHVhbCBgTlNUZXh0QWx0ZXJuYXRpdmVzICpgLgorCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICBEcml2ZS1ieTogZml4IHR5cG8uCisKIDIwMjAtMDgtMjYgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGJ1dHRvbiBmb3IgSW5zcGVj
dG9yXjIgZG9lc24ndCB3b3JrIHdpdGhvdXQgc2V0dGluZyBkZWZhdWx0IGZvciBEZXZlbG9wZXJF
eHRyYXNFbmFibGVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU4MjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDk3OTE5ODUwMGIwNDI1MTkyZDI2OTZkZGUxMzczYzYx
Yzg2ZWYyMC4uZWVmYmM3MGEwNmI0ZjhmMmE3YmEwMDJkY2MyODZlOGEyYjNjYWZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0wOC0yNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gcHJvdmlkZSBhIHdheSB0byBnZXQgcHJldmlvdXNs
eSBpbnNlcnRlZCBhbHRlcm5hdGl2ZXMgZm9yIHRoZSBzZWxlY3RlZCB0ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4MTYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY2NjQ2MDQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWx0ZXJuYXRpdmVzRm9yU2VsZWN0ZWRUZXh0
XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFn
ZUNsaWVudEltcGxDb2NvYS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50
SW1wbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29hOjpkaWN0
YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbENvY29h
OjpwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyk6IEFkZGVkLgorICAgICAgICBQcm92aWRl
IGEgd2F5IHRvIGdldCB0aGUgcmF3IGBOU1RleHRBbHRlcm5hdGl2ZXMgKmAgZm9yIGEgZ2l2ZW4g
YFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHRgLgorCisgICAgICAgICogU2hhcmVkL0VkaXRvclN0
YXRlLmg6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KToKKyAgICAgICAgSW5jbHVkZSBh
IGBWZWN0b3I8V2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dD5gIGFzIHBhcnQgb2YgdGhlIGBFZGl0
b3JTdGF0ZWAgdGhhdCBjb250YWlucyBhbGwKKyAgICAgICAgb2YgdGhlIGBXZWJDb3JlOjpEaWN0
YXRpb25Db250ZXh0YCB0aGF0IGV4aXN0IGluIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmFuZ2Ug
KG9yIHRoZSByYW5nZQorICAgICAgICBvZiB0aGUgd29yZCBjb250YWluaW5nIHRoZSBjdXJzb3Ig
aWYgbm90aGluZyBpcyBzZWxlY3RlZCkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJ
S2l0U1BJLmg6CisKIDIwMjAtMDgtMjYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gU3RvcCBsb2dnaW5nIHNhbmRib3ggdmlvbGF0aW9ucyBv
ZiBjb20uYXBwbGUuQ29yZURpc3BsYXkuTm90aWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggZDZmNmU0ZThmYmE1MzA1M2EwMzQzYzY0MjQ5MzM2NzA4NjE3MGZlMS4uY2Mx
YzIzODFmYWMxZjcxYTEzODJkZDFkZjAzNTQyNDExZDg4OTRmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTI3ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBwcm92aWRlIGEgd2F5IHRvIGdldCBw
cmV2aW91c2x5IGluc2VydGVkIGFsdGVybmF0aXZlcyBmb3IgdGhlIHNlbGVjdGVkIHRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTgxNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjY2NDYwNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2RpY3RhdGlvbkFsdGVybmF0aXZlczpdKToKKyAgICAgICAgQ3JlYXRlIGEgYFZl
Y3RvcjxTdHJpbmc+YCBmcm9tIHRoZSByZXR1cm5lZCBgTlNUZXh0QWx0ZXJuYXRpdmVzICpgIG5v
dyB0aGF0IHRoZSBtZW1iZXIKKyAgICAgICAgYFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dGAgcmV0dXJucyBpdC4KKwogMjAyMC0wOC0y
NSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBIYXNoTWFwPFJl
ZjxUPj46OnRha2Ugc2hvdWxkIHJldHVybiBSZWZQdHI8VD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCAxZjBhNzcyMjllY2YzMzBiYzM5MTNmZjdhZDc0MTY5ZGUyMTYwMTlhLi5hNGMx
NzRjYjMyM2IyOWJkODIyYWRkZmQyODU3YTMyNWYwNDkxYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC00MjIxLDcgKzQyMjEsNyBAQCBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6OmRp
Y3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciYgbWFyawog
ICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmRpY3RhdGlvbkFsdGVybmF0
aXZlc0Zvck1hcmtlcihtYXJrZXIpOwogfQogCi12b2lkIEVkaXRvcjo6YXBwbHlEaWN0YXRpb25B
bHRlcm5hdGl2ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZVN0cmluZykKK3Zv
aWQgRWRpdG9yOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJu
YXRpdmVTdHJpbmcpCiB7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5hcHBseURp
Y3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlU3RyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IGRkYTI5MzE5MzRjMWJkMWYwNjJiYWI3M2YwY2JjNTk2ZWYwNWU3NTkuLjY4
YzhlYWRhMzY1ZDJhNzU5NTVlYWI1YjAzZjM1MmQ0NDNmMGQzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtNDg5LDcgKzQ4OSw3IEBAIHB1YmxpYzoKICAgICBFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3IgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVm
YXVsdFBhcmFncmFwaFNlcGFyYXRvcjsgfQogICAgIHZvaWQgc2V0RGVmYXVsdFBhcmFncmFwaFNl
cGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3Igc2VwYXJhdG9yKSB7IG1fZGVmYXVsdFBh
cmFncmFwaFNlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQogICAgIFZlY3RvcjxTdHJpbmc+IGRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBEb2N1bWVudE1hcmtlciYpOwotICAgIHZv
aWQgYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiBhbHRl
cm5hdGl2ZVN0cmluZyk7CisgICAgdm9pZCBhcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKGNvbnN0
IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpOwogCiAjaWYgVVNFKEFQUEtJVCkKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4
IGJlZjkzNDgyMDY5ZGRlMDBmNTUyZjgyZTQzZDg5NmJiMzRlNjhmNmQuLjIwYzdiZGRlMDgxNjgx
ZTY5ZDc3NmY5M2U0NzZlNTUyZTQ5ODhkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMzgs
NyArMzgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbHRlcm5h
dGl2ZXMoRGljdGF0aW9uQ29udGV4dCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWx0ZXJuYXRpdmVzRm9yQ29u
dGV4dChEaWN0YXRpb25Db250ZXh0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBOU1RleHRBbHRlcm5h
dGl2ZXMgKmFsdGVybmF0aXZlc0ZvckNvbnRleHQoRGljdGF0aW9uQ29udGV4dCk7CiAKICNpZiBV
U0UoQVBQS0lUKQogICAgIHVzaW5nIEFjY2VwdGFuY2VIYW5kbGVyID0gdm9pZCAoXikoTlNTdHJp
bmcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCmluZGV4IDgyYWM3NmI3MWQ1NTZmZTE4MTEwZTJl
YmU0ZDE4ZjcyZjQwMjEwZTMuLmNmMTU0Yzg2ZjAyZDg2NjhiZmJjNjNhOTRlN2RlOTUxZWFhMjBl
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCkBAIC0yNyw3ICsyNyw2IEBACiAjaW1wb3J0ICJB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCIKIAogI2ltcG9ydCAiRmxvYXRSZWN0LmgiCi0j
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogI2lmIFVTRShBUFBLSVQpCiAjaW1w
b3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KQEAgLTQ2LDkgKzQ1LDkgQEAgRGljdGF0aW9u
Q29udGV4dCBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OmFkZEFsdGVybmF0aXZlcyhOU1Rl
eHRBbHRlcm5hdGl2ZXMKICAgICByZXR1cm4gbV9jb250ZXh0Q29udHJvbGxlci5hZGRBbHRlcm5h
dGl2ZXMoYWx0ZXJuYXRpdmVzKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyOjphbHRlcm5hdGl2ZXNGb3JDb250ZXh0KERpY3RhdGlvbkNvbnRleHQgY29u
dGV4dCkKK05TVGV4dEFsdGVybmF0aXZlcyAqQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjph
bHRlcm5hdGl2ZXNGb3JDb250ZXh0KERpY3RhdGlvbkNvbnRleHQgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KG1fY29udGV4dENvbnRyb2xsZXIuYWx0ZXJuYXRpdmVz
Rm9yQ29udGV4dChjb250ZXh0KS5hbHRlcm5hdGl2ZVN0cmluZ3MpOworICAgIHJldHVybiBtX2Nv
bnRleHRDb250cm9sbGVyLmFsdGVybmF0aXZlc0ZvckNvbnRleHQoY29udGV4dCk7CiB9CiAKIHZv
aWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNzMzZDYxMzY3NDk0N2EyOTlm
NGUwYmY5M2M5MWRhMDY1OWIzMmYzNy4uYTg1YmZjZjRiYmM0Y2U0M2U4NTMyMTI0NDEzOTAwMmIx
YjlmODUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcApAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAg
ICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuaW5zcGVjdChtX2NvbnRleHQuaGl0VGVz
dFJlc3VsdCgpLmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKHRpdGxlKTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmUodGl0bGUpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggNDM3N2M5MTk5MDBjZDIxMGNjMjc4
MmM1MmI5Y2JkYzZiNTA5ZjdmYS4uYWYzNDc5NGZjNjFkMzFmN2JmODc3ODc1NjczZDM2MjAxYmVk
Yzc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJ
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTcz
Myw2ICs3MzMsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdLR2VzdHVyZVR5cGUp
IHsKIC0gKHZvaWQpcmVxdWVzdERpY3RhdGlvbkNvbnRleHQ6KHZvaWQgKF4pKE5TU3RyaW5nICpz
ZWxlY3RlZFRleHQsIE5TU3RyaW5nICpwcmVmaXhUZXh0LCBOU1N0cmluZyAqcG9zdGZpeFRleHQp
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAoQk9PTClwb2ludElzTmVhck1hcmtlZFRleHQ6KENHUG9p
bnQpcG9pbnQ7CiAtIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dDsKKy0gKE5TQXJyYXk8TlNUZXh0
QWx0ZXJuYXRpdmVzICo+ICopYWx0ZXJuYXRpdmVzRm9yU2VsZWN0ZWRUZXh0OwogLSAodm9pZCly
ZXBsYWNlVGV4dDooTlNTdHJpbmcgKil0ZXh0IHdpdGhUZXh0OihOU1N0cmluZyAqKXdvcmQ7CiAt
ICh2b2lkKXNlbGVjdFdvcmRGb3JSZXBsYWNlbWVudDsKIC0gKEJPT0wpaXNSZXBsYWNlQWxsb3dl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAppbmRleCA2NjU5ODU3ZDMxM2FhNzNi
NjkxYTBjZjczNmZlNDBlZTlhNzc4NmNlLi45Mjg2Y2U0MGY0MzlhMWZiMWZiODFmN2NkOGI1ZWNl
ODMwYjdmMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCkBAIC0xMTMsNiAr
MTEzLDkgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjaGFyYWN0ZXJBZnRlclNlbGVj
dGlvbjsKICAgICBlbmNvZGVyIDw8IGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKICAgICBlbmNv
ZGVyIDw8IHR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKKyNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKKyAgICBlbmNvZGVyIDw8IGRpY3RhdGlvbkNvbnRleHRzRm9yU2VsZWN0aW9u
OworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBpc1JlcGxhY2VBbGxvd2VkOwogICAgIGVuY29kZXIg
PDwgaGFzQ29udGVudDsKICAgICBlbmNvZGVyIDw8IGlzU3RhYmxlU3RhdGVVcGRhdGU7CkBAIC0x
ODQsNiArMTg3LDEwIEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR3b0NoYXJhY3RlckJlZm9yZVNl
bGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kaWN0YXRpb25Db250ZXh0
c0ZvclNlbGVjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzUmVwbGFjZUFsbG93ZWQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGFzQ29udGVudCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCBlY2U2NzY0NTY1ZDI5ZTUxMWMxZjA3ZmI5NjUw
ODIzNzgxYTVlZDZhLi5kNDhkNzU5MTI4OTU5OGY5ZmVjMjYzOGE1ZjhmYzY4OGVlMjUxNGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWxlY3Rpb25SZWN0Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQ29udGV4dC5oPgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGV4dFN0cmVhbTsKIH07CkBAIC0xMDAsNiAr
MTA0LDkgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXJB
ZnRlclNlbGVjdGlvbiB7IDAgfTsKICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVTZWxl
Y3Rpb24geyAwIH07CiAgICAgICAgIFVDaGFyMzIgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9u
IHsgMCB9OworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgICAgICBWZWN0b3I8
V2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dD4gZGljdGF0aW9uQ29udGV4dHNGb3JTZWxlY3Rpb247
CisjZW5kaWYKICAgICAgICAgYm9vbCBpc1JlcGxhY2VBbGxvd2VkIHsgZmFsc2UgfTsKICAgICAg
ICAgYm9vbCBoYXNDb250ZW50IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBpc1N0YWJsZVN0YXRl
VXBkYXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCAwZjFjM2RjZDk2MTllZTdkZTFkNTZjMzg0Zjdj
OTBhZGIyYzQwMDllLi5hNDgwYjM4NGNmZWU0NzgwZTE3MWJhNzZlMDRiYjY1NTg1YTFiYTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENv
Y29hLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpEaWN0YXRpb25D
b250ZXh0IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhOU1RleHRBbHRlcm5hdGl2ZXMgKikgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0
aW9uQ29udGV4dCkgZmluYWw7CiAgICAgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRp
dmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQpIGZpbmFsOworICAgIE5TVGV4dEFsdGVybmF0
aXZlcyAqcGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29u
dGV4dCkgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IG1f
d2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xp
ZW50SW1wbENvY29hLm1tCmluZGV4IGM3NDg0YTU0NTU4YjhmYmJlY2Q3NDcxN2MxNTlhOTE1YTYx
MTQ0MjMuLmNhZTM2YjYxNzRiY2E4YmIwNjY1NmY4YTc3MDRlMjRhZTcwZGMwMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5t
bQpAQCAtMzEsNiArMzEsOCBAQAogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aCIKICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
MTA3LDYgKzEwOSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OnJlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0CiB9CiAKIFZlY3RvcjxTdHJp
bmc+IFBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyhXZWJDb3JlOjpE
aWN0YXRpb25Db250ZXh0IGRpY3RhdGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJuIG1ha2VWZWN0
b3I8U3RyaW5nPihwbGF0Zm9ybURpY3RhdGlvbkFsdGVybmF0aXZlcyhkaWN0YXRpb25Db250ZXh0
KS5hbHRlcm5hdGl2ZVN0cmluZ3MpOworfQorCitOU1RleHRBbHRlcm5hdGl2ZXMgKlBhZ2VDbGll
bnRJbXBsQ29jb2E6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3Rh
dGlvbkNvbnRleHQgZGljdGF0aW9uQ29udGV4dCkKIHsKICAgICByZXR1cm4gbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGljdGF0aW9uQ29udGV4
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCmluZGV4IGMwNzlmMTE4ZGQ0ZWVmNzc1ODcyZjk3NTBiZGZkM2JmNzg1M2U3MDku
LjRkNGY4ODdlZGM5NWIxZWQ1NzU3NDBmMTk4YmJlNjJiYzYzM2NlYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0yOTks
NiArMjk5LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMgeyB0ZXh0LCByZXBsYWNlbWVudFJhbmdl
LCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIFdURk1vdmUob3B0aW9ucykgfSk7CiB9CiAKKyNpZiBV
U0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKKworTlNUZXh0QWx0ZXJuYXRpdmVzICpXZWJQYWdl
UHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRpY3RhdGlvbkNv
bnRleHQgZGljdGF0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gcGFnZUNsaWVudCgpLnBsYXRm
b3JtRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworfQorCisjZW5kaWYK
KwogUmVzb3VyY2VFcnJvciBXZWJQYWdlUHJveHk6OmVycm9yRm9yVW5wZXJtaXR0ZWRBcHBCb3Vu
ZERvbWFpbk5hdmlnYXRpb24oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHsgV0tFcnJv
ckRvbWFpbiwgV0tFcnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFpbiwgdXJsLCBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbkZvckVycm9yQ29kZShXS0Vycm9yTmF2aWdhdGlvbkFwcEJvdW5kRG9tYWluKSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdlNjE2MzVjYTBhY2Y2MjIy
Zjc1ZGU4ZmMyNWU0MjIwZGFhZWE0MmMuLjhmMDExYWNmZjQzOGI5YmMyMTBiZGI1MTc1MWI0NWU2
Nzg1NWRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTM3OCw2ICsz
NzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpY3RhdGlvbkFsdGVybmF0
aXZlcyhXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZkRpY3RhdGVkVGV4dCwgV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgPSAwOwogICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdlYkNvcmU6OkRp
Y3RhdGlvbkNvbnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIE5TVGV4dEFsdGVybmF0aXZlcyAqcGxh
dGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCkgPSAw
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDYyN2JkYzUwYTgwZTEwODg4ZDVmZjQzYzJlNDYwYjQzNzlmM2Y1OWQu
LjkwNjQ3ZTEzYjFmMDNhNjZhYzE0YjAzMGM3MDVlYWQ4ODNjMDQwYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjksNiArMTI5LDcgQEAKICNpbmNsdWRlICJF
bmRvd21lbnRTdGF0ZVRyYWNrZXIuaCIKICNlbmRpZgogCitPQkpDX0NMQVNTIE5TVGV4dEFsdGVy
bmF0aXZlczsKIE9CSkNfQ0xBU1MgTlNWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RS
ZWdpc3RyeTsKIApAQCAtODg0LDYgKzg4NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRU
ZXh0QXN5bmMoY29uc3QgU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJh
bmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmKTsKICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFz
eW5jKGNvbnN0IFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mLCBJbnNlcnRU
ZXh0T3B0aW9ucyYmKTsKIAorI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIE5T
VGV4dEFsdGVybmF0aXZlcyAqcGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2ZXMoV2ViQ29yZTo6
RGljdGF0aW9uQ29udGV4dCk7CisjZW5kaWYKKwogICAgIHZvaWQgaGFzTWFya2VkVGV4dChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5
bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFZGl0aW5nUmFuZ2UmKT4mJik7CiAgICAg
dm9pZCBnZXRTZWxlY3RlZFJhbmdlQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBF
ZGl0aW5nUmFuZ2UmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjNjM5ZTBhYjk1YTNmMjU5MDhl
MTllOTQzYTU0OWQzMTE0ZjRiMmEwLi41YzM4MDNjYTVkNDE0ODgxZjkyYjE3MmFhNjA2YzIyYjcy
MDA0NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMxMTgsNiArMzExOCwxNCBAQCAtIChOU1N0cmlu
ZyAqKXNlbGVjdGVkVGV4dAogICAgIHJldHVybiAoTlNTdHJpbmcgKilfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5wb3N0TGF5b3V0RGF0YSgpLndvcmRBdFNlbGVjdGlvbjsKIH0KIAorLSAoTlNBcnJheTxO
U1RleHRBbHRlcm5hdGl2ZXMgKj4gKilhbHRlcm5hdGl2ZXNGb3JTZWxlY3RlZFRleHQKK3sKKyAg
ICBhdXRvJiBkaWN0YXRpb25Db250ZXh0c0ZvclNlbGVjdGlvbiA9IF9wYWdlLT5lZGl0b3JTdGF0
ZSgpLnBvc3RMYXlvdXREYXRhKCkuZGljdGF0aW9uQ29udGV4dHNGb3JTZWxlY3Rpb247CisgICAg
cmV0dXJuIGNyZWF0ZU5TQXJyYXkoZGljdGF0aW9uQ29udGV4dHNGb3JTZWxlY3Rpb24sIFsmXSAo
YXV0byYgZGljdGF0aW9uQ29udGV4dCkgeworICAgICAgICByZXR1cm4gX3BhZ2UtPnBsYXRmb3Jt
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOworICAgIH0pLmF1dG9yZWxl
YXNlKCk7Cit9CisKIC0gKHZvaWQpbWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbEZvcldl
YlZpZXc6KGlkKXNlbmRlcgogewogICAgIC8vIE1hdGNoIHBsYXRmb3JtIGJlaGF2aW9yIG9uIGlP
UyBhcyB3ZWxsIGFzIGxlZ2FjeSBXZWJLaXQgYmVoYXZpb3IgYnkgbW9kaWZ5aW5nIHRoZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCBmZTc3YWFhOTc3NzNlZGFmZmU4MTk5NTMzM2JiNjUwZjIwNGI2MzI0Li5mZjkxMTQwZDc4
MGYxNzY0OTJhZWI1ODJkYzQ2OGZkMjFkNzk1NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNjksNiArNjksNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRM
b2FkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRp
bmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CkBAIC0xMjEsNiArMTIyLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVGhl
bWVJT1MuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9SZW5kZXJlZERvY3VtZW50TWFya2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TaGFkb3dSb290Lmg+CkBAIC0yODAsNiArMjgyLDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkg
Y29uc3QKICAgICB9CiAKICAgICBjb25zdCBhdXRvJiBzZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKKyAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gc2VsZWN0ZWRSYW5n
ZTsKICAgICBwb3N0TGF5b3V0RGF0YS5pc1N0YWJsZVN0YXRlVXBkYXRlID0gbV9pc0luU3RhYmxl
U3RhdGU7CiAgICAgYm9vbCBzdGFydE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gPSBmYWxzZTsK
ICAgICBib29sIGVuZE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gPSBmYWxzZTsKQEAgLTI4OSwx
MyArMjkyLDE2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYg
ZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgICAgIHBvc3RMYXlvdXREYXRh
LmNhcmV0UmVjdEF0RW5kID0gcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRTdGFydDsKICAgICAg
ICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgY2hlY2sgc2hvdWxkIHRha2UgaW50byBhY2NvdW50
IHdyaXRpbmcgZGlyZWN0aW9uLgogICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxv
d2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KHNlbGVjdGlvbi5zdGFydCgpLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKLSAgICAgICAgcG9zdExheW91dERhdGEud29yZEF0
U2VsZWN0aW9uID0gcGxhaW5UZXh0Rm9yQ29udGV4dCh3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2Vs
ZWN0aW9uLnN0YXJ0KCkpKTsKKworICAgICAgICBzZWxlY3RlZFJhbmdlID0gd29yZFJhbmdlRnJv
bVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKTsKKyAgICAgICAgcG9zdExheW91dERhdGEud29y
ZEF0U2VsZWN0aW9uID0gcGxhaW5UZXh0Rm9yQ29udGV4dChzZWxlY3RlZFJhbmdlKTsKKwogICAg
ICAgICBpZiAoc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICBjaGFy
YWN0ZXJzQXJvdW5kUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIHBvc3RMYXlvdXREYXRhLmNo
YXJhY3RlckFmdGVyU2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJCZWZvcmVTZWxl
Y3Rpb24sIHBvc3RMYXlvdXREYXRhLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbik7CiAgICAg
fSBlbHNlIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgpKSB7CiAgICAgICAgIHBvc3RMYXlvdXREYXRh
LmNhcmV0UmVjdEF0U3RhcnQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0
aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCZzdGFydE5vZGVJc0lu
c2lkZUZpeGVkUG9zaXRpb24pKTsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRF
bmQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHNlbGVjdGlvbi5l
bmQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygmZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbikp
OwotICAgICAgICBhdXRvIHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKTsKKyAgICAgICAgc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgICAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0OwogICAgICAgICBpZiAoc2VsZWN0ZWRS
YW5nZSkgewogICAgICAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uUmVjdHMgPSBSZW5k
ZXJPYmplY3Q6OmNvbGxlY3RTZWxlY3Rpb25SZWN0cygqc2VsZWN0ZWRSYW5nZSk7CkBAIC0zMDgs
NiArMzE0LDE2IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYg
ZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZGlzYWxsb3cgcmVwbGFjZSB3aGVuIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBDSiBj
aGFyYWN0ZXJzLgogICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVz
dWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNl
bGVjdGVkVGV4dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgIH0K
KworI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQorICAgIGlmIChzZWxlY3RlZFJhbmdl
KSB7CisgICAgICAgIGF1dG8gbWFya2VycyA9IGZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5t
YXJrZXJzSW5SYW5nZSgqc2VsZWN0ZWRSYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU6
OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmRpY3RhdGlv
bkNvbnRleHRzRm9yU2VsZWN0aW9uID0gV1RGOjptYXAobWFya2VycywgW10gKGF1dG8qIG1hcmtl
cikgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpEaWN0YXRp
b25EYXRhPihtYXJrZXItPmRhdGEoKSkuY29udGV4dDsKKyAgICAgICAgfSk7CisgICAgfQorI2Vu
ZGlmCisKICAgICBwb3N0TGF5b3V0RGF0YS5hdFN0YXJ0T2ZTZW50ZW5jZSA9IGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCgpOwogICAgIHBvc3RMYXlvdXREYXRhLmlu
c2lkZUZpeGVkUG9zaXRpb24gPSBzdGFydE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gfHwgZW5k
Tm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbjsKICAgICBpZiAoIXNlbGVjdGlvbi5pc05vbmUoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDdhOTY5
OTVjZjEyOTc4ZmQ3ODRhZDI3YTFkODg4NjFmMTQzNjY0MzQuLjA2ZjBhY2JlMmUwNDU3M2YzMWFl
MWE5NWY3NDgwYjAxYjc5NTVhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTk1OTUsNyArOTU5NSw3IEBAIC0gKHZvaWQpX3JlbW92ZURpY3RhdGlv
bkFsdGVybmF0aXZlczooV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dClkaWN0YXRpb25Db250ZXh0
CiAKIC0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6KFdlYkNvcmU6OkRp
Y3RhdGlvbkNvbnRleHQpZGljdGF0aW9uQ29udGV4dAogewotICAgIHJldHVybiBfcHJpdmF0ZS0+
bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGlj
dGF0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3RyaW5nPihfcHJpdmF0ZS0+
bV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXItPmFsdGVybmF0aXZlc0ZvckNvbnRleHQoZGlj
dGF0aW9uQ29udGV4dCkuYWx0ZXJuYXRpdmVTdHJpbmdzKTsKIH0KIAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGE2NjNlODk0ODg4ZmM1NjRiNTEzMTdmYWFkM2M3NjQxOWE2NWNkZDMuLjg5MGIw
YzM4NmRmYWU1MzhiNGUxNWE4MjNhYWM1MjRhOTkyMjUyNjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wOC0y
NyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gcHJv
dmlkZSBhIHdheSB0byBnZXQgcHJldmlvdXNseSBpbnNlcnRlZCBhbHRlcm5hdGl2ZXMgZm9yIHRo
ZSBzZWxlY3RlZCB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTU4MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2NjQ2MDQyPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tOgorICAgICAgICAo
SW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5TaW1wbGUpOgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9pb3MvVUlLaXRTUEkuaDoKKwogMjAyMC0wOC0yNiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdGNvcmVweV0gTW92ZSBUaW1lb3V0IHRvIHdl
YmtpdGNvcmVweSAoUGFydCAyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tCmluZGV4IDI5
NTM5MzdiMDYzYTY1ZDg5MzczMDY3NTk1ZWY3NTM1MjFlY2E3MDYuLjdiMDBlYWZiMjE1ODFiMTFk
ZTJjODU2NDFhNDI5ZmI0OGNmNzZlOWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc2VydFRleHRBbHRlcm5hdGl2ZXMubW0K
QEAgLTU2LDYgKzU2LDE4IEBAIFRFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgU2ltcGxlKQog
ICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMiwgMykiXSBib29sVmFs
dWVdKTsgLy8gYmlnCiAgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigw
LCA2KSJdIGJvb2xWYWx1ZV0pOyAvLyAiQSBiaWcgIgogICAgIEVYUEVDVF9UUlVFKFtbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFs
dGVybmF0aXZlc01hcmtlcig2LCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworCisgICAgW3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnNldFBv
c2l0aW9uKGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCwgOCkiXTsgLy8gaW4gdGhlIG1pZGRsZSBv
ZiAiaGVsbG8iCisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwor
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyIsIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50
Vmlld10gc2VsZWN0ZWRUZXh0XSk7CisKKyAgICBhdXRvICphbHRlcm5hdGl2ZXMgPSBbKGlkPFVJ
V0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbF9TdGFnaW5nNjY2NDYwNDI+KVt3ZWJWaWV3IHRleHRJ
bnB1dENvbnRlbnRWaWV3XSBhbHRlcm5hdGl2ZXNGb3JTZWxlY3RlZFRleHRdOworICAgIEVYUEVD
VF9FUSgxdWwsIGFsdGVybmF0aXZlcy5jb3VudCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxs
byIsIGFsdGVybmF0aXZlc1swXS5wcmltYXJ5U3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoMXVsLCBh
bHRlcm5hdGl2ZXNbMF0uYWx0ZXJuYXRpdmVTdHJpbmdzLmNvdW50KTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoInllbGxvdyIsIGFsdGVybmF0aXZlc1swXS5hbHRlcm5hdGl2ZVN0cmluZ3NbMF0pOwor
ICAgIEVYUEVDVF9GQUxTRShhbHRlcm5hdGl2ZXNbMF0uaXNMb3dDb25maWRlbmNlKTsKIH0KIAog
VEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRMZWFkaW5nU3BhY2UpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvVUlLaXRTUEkuaAppbmRleCBmMjVlM2MxZGI0OWFhMjg1Yjg4NTdiMTc1N2M0ZWFl
YWI3NDQ2NDZjLi5kZDVhZWNlYzkwNTQyOWM5YTAyNWM1MmMxMGY3NDQ1NzkyZjg0OTBmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCiAKKyNpbXBvcnQgPFVJS2l0L05TVGV4dEFsdGVybmF0aXZlcy5o
PgogI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtp
dC9VSUJhckJ1dHRvbkl0ZW1Hcm91cF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUNhbGxv
dXRCYXIuaD4KQEAgLTYxLDYgKzYyLDEyIEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogI2Vsc2Ug
Ly8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAorQGludGVyZmFjZSBOU1RleHRBbHRlcm5hdGl2
ZXMgOiBOU09iamVjdAorQHByb3BlcnR5IChyZWFkb25seSkgTlNTdHJpbmcgKnByaW1hcnlTdHJp
bmc7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU0FycmF5PE5TU3RyaW5nICo+ICphbHRlcm5hdGl2
ZVN0cmluZ3M7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGlzTG93Q29uZmlkZW5jZTsKK0Bl
bmQKKwogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIHZvaWQgVUlBcHBsaWNhdGlvbkluaXRpYWxpemUo
dm9pZCk7CkBAIC0yMzgsNiArMjQ1LDExIEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICNkZWZpbmUg
VUlXS0RvY3VtZW50UmVxdWVzdE1hcmtlZFRleHRSZWN0cyAoMSA8PCA1KQogI2RlZmluZSBVSVdL
RG9jdW1lbnRSZXF1ZXN0U3BhdGlhbEFuZEN1cnJlbnRTZWxlY3Rpb24gKDEgPDwgNikKIAorQHBy
b3RvY29sIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbF9TdGFnaW5nNjY2NDYwNDIgPFVJV0tJ
bnRlcmFjdGlvblZpZXdQcm90b2NvbD4KK0BvcHRpb25hbAorLSAoTlNBcnJheTxOU1RleHRBbHRl
cm5hdGl2ZXMgKj4gKilhbHRlcm5hdGl2ZXNGb3JTZWxlY3RlZFRleHQ7CitAZW5kCisKIEBpbnRl
cmZhY2UgVUlUZXh0QXV0b2ZpbGxTdWdnZXN0aW9uICgpCiArIChpbnN0YW5jZXR5cGUpYXV0b2Zp
bGxTdWdnZXN0aW9uV2l0aFVzZXJuYW1lOihOU1N0cmluZyAqKXVzZXJuYW1lIHBhc3N3b3JkOihO
U1N0cmluZyAqKXBhc3N3b3JkOwogQGVuZAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>