<?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>219398</bug_id>
          
          <creation_ts>2020-12-01 07:45:38 -0800</creation_ts>
          <short_desc>[iOS] Support image extraction interactions for accessibility</short_desc>
          <delta_ts>2021-01-27 14:09:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219524</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=221058</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>219415</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711034</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-01 07:45:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/70744914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711065</commentid>
    <comment_count>1</comment_count>
      <attachid>415142</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-01 09:32:46 -0800</bug_when>
    <thetext>Created attachment 415142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711140</commentid>
    <comment_count>2</comment_count>
      <attachid>415142</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-01 13:12:41 -0800</bug_when>
    <thetext>Comment on attachment 415142
Patch

The previous mac-debug build failure appears to due to build artifacts from #219371. Removing cq-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711190</commentid>
    <comment_count>3</comment_count>
      <attachid>415168</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-01 15:16:14 -0800</bug_when>
    <thetext>Created attachment 415168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711196</commentid>
    <comment_count>4</comment_count>
      <attachid>415168</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-12-01 15:48:09 -0800</bug_when>
    <thetext>Comment on attachment 415168
Patch

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

r=me

&gt; Source/WebKit/Shared/ios/InteractionInformationRequest.cpp:87
&gt; +    if (other.includeImageData &amp;&amp; !includeImageData &amp;&amp; !includeSnapshot)

I&apos;d add a comment (like what&apos;s in the ChangeLog) here explaining why the `!includeSnapshot` is here too.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:1066
&gt; +    [self _tearDownImageExtraction];

Should this go above `_hasSetUpInteractions = NO;`?

&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.h:40
&gt; +- (instancetype)initWithDelegate:(UIView &lt;WKImageExtractionGestureRecognizerDelegate&gt; *)delegate;

Should we be more specific like `initWithImageExtractionGestureDelegate`?  That appears to be what some other `WK*GestureRecognizer` do.

&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.mm:32
&gt; +    __weak UIView &lt;WKImageExtractionGestureRecognizerDelegate&gt; *_imageExtractionDelegate;

`WeakObjCPtr`?

&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.mm:43
&gt; +    self.allowableMovement = 1;

Why not `0`?  Or is this to allow some minuscule amount of movement that&apos;s possibly expected because of how large a finger is vs a point unit?

&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.mm:51
&gt; +    [super setState:state];

Style: can you `self.state = state;` instead (like how you use the &quot;get&quot; on :53)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711204</commentid>
    <comment_count>5</comment_count>
      <attachid>415168</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-01 16:00:39 -0800</bug_when>
    <thetext>Comment on attachment 415168
Patch

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

&gt;&gt; Source/WebKit/Shared/ios/InteractionInformationRequest.cpp:87
&gt;&gt; +    if (other.includeImageData &amp;&amp; !includeImageData &amp;&amp; !includeSnapshot)
&gt; 
&gt; I&apos;d add a comment (like what&apos;s in the ChangeLog) here explaining why the `!includeSnapshot` is here too.

Sounds good — added!

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:1066
&gt;&gt; +    [self _tearDownImageExtraction];
&gt; 
&gt; Should this go above `_hasSetUpInteractions = NO;`?

Good catch — it probably should, along with some of the other stuff here (but we can clean that up separately).

&gt;&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.h:40
&gt;&gt; +- (instancetype)initWithDelegate:(UIView &lt;WKImageExtractionGestureRecognizerDelegate&gt; *)delegate;
&gt; 
&gt; Should we be more specific like `initWithImageExtractionGestureDelegate`?  That appears to be what some other `WK*GestureRecognizer` do.

Sounds good — changed to -initWithImageExtractionGestureDelegate:

&gt;&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.mm:32
&gt;&gt; +    __weak UIView &lt;WKImageExtractionGestureRecognizerDelegate&gt; *_imageExtractionDelegate;
&gt; 
&gt; `WeakObjCPtr`?

Hm..I think we actually prefer __weak for members (perhaps thorton can comment).

&gt;&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.mm:43
&gt;&gt; +    self.allowableMovement = 1;
&gt; 
&gt; Why not `0`?  Or is this to allow some minuscule amount of movement that&apos;s possibly expected because of how large a finger is vs a point unit?

That&apos;s true — 0 should have essentially the same effect. I&apos;ll change it to 0.

&gt;&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.mm:51
&gt;&gt; +    [super setState:state];
&gt; 
&gt; Style: can you `self.state = state;` instead (like how you use the &quot;get&quot; on :53)?

Err…I think this would result in ∞.

It does, however, look like `super.state = state;` is a thing (which I hadn&apos;t known before)! I&apos;ll change it to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711207</commentid>
    <comment_count>6</comment_count>
      <attachid>415168</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-12-01 16:09:48 -0800</bug_when>
    <thetext>Comment on attachment 415168
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/ios/WKImageExtractionGestureRecognizer.mm:51
&gt;&gt;&gt; +    [super setState:state];
&gt;&gt; 
&gt;&gt; Style: can you `self.state = state;` instead (like how you use the &quot;get&quot; on :53)?
&gt; 
&gt; Err…I think this would result in ∞.
&gt; 
&gt; It does, however, look like `super.state = state;` is a thing (which I hadn&apos;t known before)! I&apos;ll change it to that.

OH 🤦‍♂️ right yes this is inside the `setState` function sorry ignore me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711208</commentid>
    <comment_count>7</comment_count>
      <attachid>415176</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-12-01 16:11:47 -0800</bug_when>
    <thetext>Created attachment 415176
Address comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711221</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-01 16:54:54 -0800</bug_when>
    <thetext>Committed r270332: &lt;https://trac.webkit.org/changeset/270332&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415176.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415142</attachid>
            <date>2020-12-01 09:32:46 -0800</date>
            <delta_ts>2020-12-01 15:16:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219398-20201201093245.patch</filename>
            <type>text/plain</type>
            <size>25220</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMwYmQ1YTAzZWUwMTEzZDBk
OWY4YzBhZWE3MDQxYjE4OGI5YTNiNDguLjE4MGY2ZTMxMzdhN2NjODQ2NjcwMjA0MzhlYTg4ODJl
M2IzY2Q3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTItMDEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gU3VwcG9ydCBp
bWFnZSBleHRyYWN0aW9uIGludGVyYWN0aW9ucyBmb3IgYWNjZXNzaWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5Mzk4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83MDc0NDkxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGEgbmV3IGFjY2Vzc2liaWxpdHkgZmVh
dHVyZSByZWxhdGVkIHRvIGltYWdlcy4gUmVmZXIgdG8gdGhlIGJ1ZyBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3Q6OmlzVmFsaWRGb3JSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Lmg6CisKKyAgICAgICAgQWRkIGEgbmV3IGZsYWcgdG8g
cmVxdWVzdCBpbWFnZSBkYXRhIHZpYSBwb3NpdGlvbiBpbmZvcm1hdGlvbi4gVGhpcyBmbGFnIHdv
cmtzIHNpbWlsYXJseSB0byB0aGUgZXhpc3RpbmcKKyAgICAgICAgYGluY2x1ZGVTbmFwc2hvdGAg
ZmxhZywgZXhjZXB0IHRoYXQgaXQgb25seSBncmFicyBkYXRhIHdoZW4gdGhlIGhpdC10ZXN0ZWQg
bm9kZSBpcyBhbiBpbWFnZS4gQXMgc3VjaCwgYSBwb3NpdGlvbgorICAgICAgICBpbmZvcm1hdGlv
biByZXF1ZXN0IHdpdGggdGhlIGBpbmNsdWRlU25hcHNob3RgIGZsYWcgc2V0IGlzIHZhbGlkIGZv
ciBhbiBpZGVudGljYWwgcmVxdWVzdCB3aXRoIHRoaXMgbmV3CisgICAgICAgIGBpbmNsdWRlSW1h
Z2VEYXRhYCBmbGFnIHNldCwgYnV0IG5vdCB2aWNlIHZlcnNhLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorCisgICAgICAgIEFkZCB2YXJpb3VzIGV4dGVuc2lvbiBwb2ludHMgZm9yIG5ldyBXZWJL
aXRBZGRpdGlvbnMgc25pcHBldHMuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcElu
dGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW5VcEludGVyYWN0aW9u
XSk6CisKKyAgICAgICAgQ2FsbCBuZXcgbWV0aG9kcyB0byBzZXQgdXAgYW5kIHRlYXIgZG93biB0
aGUgaW1hZ2UgZXh0cmFjdGlvbiBpbnRlcmFjdGlvbiAoZGVmaW5lZCBpbiBXZWJLaXRBZGRpdGlv
bnMpLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dlYlRvdWNoRXZlbnRzUmVjb2duaXpl
ZDpdKToKKworICAgICAgICBVcG9uIHN0YXJ0aW5nIGEgbmV3IGdlc3R1cmUsIHJlc2V0IHRoZSBh
Y3RpdmUgKG9yIHBlbmRpbmcpIGltYWdlIGV4dHJhY3Rpb24gaW50ZXJhY3Rpb24sIGlmIGFwcHJv
cHJpYXRlLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hv
dWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6CisKKyAg
ICAgICAgQWxsb3cgdGhlIGltYWdlIGV4dHJhY3Rpb24gZ2VzdHVyZSB0byBmaXJlIGFsb25nc2lk
ZSBhbnkgb3RoZXIgZ2VzdHVyZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kcmFnSW50
ZXJhY3Rpb246cHJlcGFyZUZvclNlc3Npb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfY29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0
TG9jYXRpb246Y29tcGxldGlvbjpdKToKKworICAgICAgICBUaGVzZSBleGlzdGluZyBpbnRlcmFj
dGlvbnMgbWF5IGNvbmZsaWN0IHdpdGggcGVuZGluZyBpbWFnZSBleHRyYWN0aW9uIGludGVyYWN0
aW9ucy4gTHVja2lseSwgc2luY2UgdGhlc2UKKyAgICAgICAgaW50ZXJhY3Rpb25zIGFyZSBib3Ro
IGFzeW5jaHJvbm91cywgd2UncmUgYWJsZSB0byBkZWZlciB0aGVtIHVudGlsIGFueSBwZW5kaW5n
IGltYWdlIGV4dHJhY3Rpb24gcmVxdWVzdCBoYXMKKyAgICAgICAgZmluaXNoZWQsIHRvIGRldGVy
bWluZSB3aGV0aGVyIG9yIG5vdCB0aGV5IHNob3VsZCBjb21tZW5jZS4gSW4gYm90aCBjYXNlcywg
aW1hZ2UgZXh0cmFjdGlvbiBzaG91bGQgdGFrZQorICAgICAgICBwcmVjZWRlbmNlIG92ZXIgZHJh
Z2dpbmcgYW5kIGNvbnRleHQgbWVudXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSW1h
Z2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW06CisKKyAgICAgICAgQWRkIGEg
bmV3IGxvbmcgcHJlc3MgZ2VzdHVyZSByZWNvZ25pemVyIHRoYXQgZmlyZXMgb24gYSB2ZXJ5IHNo
b3J0ICgxMDBtcykgZGVsYXkuIFRoaXMgZ2VzdHVyZSBpcyB1c2VkIHRvCisgICAgICAgIHByZWZs
aWdodCBpbWFnZSBleHRyYWN0aW9uIHJlcXVlc3RzIGFoZWFkIG9mIHRoZSBvdGhlciBsb25nIHBy
ZXNzIGdlc3R1cmVzIChpbiBwYXJ0aWN1bGFyLCBjb250ZXh0IG1lbnVzKSwgc3VjaAorICAgICAg
ICB0aGF0IHRoZXNlIG90aGVyIGdlc3R1cmVzIHNob3VsZCBiZSBtaW5pbWFsbHkgaW1wYWN0ZWQg
YnkgdGhlIHRpbWUgcmVxdWlyZWQgdG8gcGVyZm9ybSBpbWFnZSBleHRyYWN0aW9uLgorCisgICAg
ICAgIFRoaXMgaXMgc3RpbGwgYSBsb25nIHByZXNzIGdlc3R1cmUgaW5zdGVhZCBvZiBhIHJlZ3Vs
YXIgZ2VzdHVyZSByZWNvZ25pemVyLCBzaW5jZSBwcmVmbGlnaHRpbmcgaW1hZ2UgZXh0cmFjdGlv
bgorICAgICAgICByZXF1ZXN0cyBjb3VsZCBiZSBleHBlbnNpdmUgaWYgcGVyZm9ybWVkIGR1cmlu
ZyBldmVyeSBzaW5nbGUgZ2VzdHVyZSAoaS5lLiBzY3JvbGxpbmcsIHRhcHMsIGV0YykuCisKKyAg
ICAgICAgKC1bV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplciBpbml0V2l0aERlbGVn
YXRlOl0pOgorICAgICAgICAoLVtXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIHNl
dFN0YXRlOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKToKKwogMjAyMC0xMS0zMCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
ZXZlcnRpbmcgcjI3MDI3NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwCmluZGV4IDRkZjAyZTE3MjMxYjZi
ZGE4YzYxNWVlZTYyZjY2NWVjNjQwNmJiMGYuLjRhM2UxYWFmNTM4NzViNjg0MWVmOTAzODVhZjI4
MzMwOTk3YmE1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNwcApAQCAtNDAsNiArNDAsNyBAQCB2b2lk
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaW5jbHVkZUxpbmtJbmRpY2F0b3I7CiAgICAgZW5j
b2RlciA8PCBpbmNsdWRlQ2FyZXRDb250ZXh0OwogICAgIGVuY29kZXIgPDwgaW5jbHVkZUhhc0Rv
dWJsZUNsaWNrSGFuZGxlcjsKKyAgICBlbmNvZGVyIDw8IGluY2x1ZGVJbWFnZURhdGE7CiAgICAg
ZW5jb2RlciA8PCBsaW5rSW5kaWNhdG9yU2hvdWxkSGF2ZUxlZ2FjeU1hcmdpbnM7CiB9CiAKQEAg
LTYwLDYgKzYxLDkgQEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgSW50ZXJhY3Rpb25JbmYKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pbmNsdWRlSGFzRG91YmxlQ2xpY2tIYW5kbGVyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5jbHVkZUltYWdl
RGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtODAsNiArODQsOSBAQCBib29sIEludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0Ojppc1ZhbGlkRm9yUmVxdWVzdChjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aQog
ICAgIGlmIChvdGhlci5pbmNsdWRlSGFzRG91YmxlQ2xpY2tIYW5kbGVyICYmICFpbmNsdWRlSGFz
RG91YmxlQ2xpY2tIYW5kbGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAob3Ro
ZXIuaW5jbHVkZUltYWdlRGF0YSAmJiAhaW5jbHVkZUltYWdlRGF0YSAmJiAhaW5jbHVkZVNuYXBz
aG90KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAob3RoZXIubGlua0luZGljYXRv
clNob3VsZEhhdmVMZWdhY3lNYXJnaW5zICE9IGxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5
TWFyZ2lucykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oCmluZGV4IGFm
MjU1M2RjNjEwNTMyNjhlYTMxYTNmZWY0ZjZmNjE2YzY2ZGViYzQuLmQwMjBlOGQxMjc2ZGIxNWYz
YmE2NmIwZGY5M2Q0MWMxNzc1MTQwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oCkBAIC00Myw2ICs0Myw3
IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCB7CiAgICAgYm9vbCBpbmNs
dWRlTGlua0luZGljYXRvciB7IGZhbHNlIH07CiAgICAgYm9vbCBpbmNsdWRlQ2FyZXRDb250ZXh0
IHsgZmFsc2UgfTsKICAgICBib29sIGluY2x1ZGVIYXNEb3VibGVDbGlja0hhbmRsZXIgeyB0cnVl
IH07CisgICAgYm9vbCBpbmNsdWRlSW1hZ2VEYXRhIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbGlu
a0luZGljYXRvclNob3VsZEhhdmVMZWdhY3lNYXJnaW5zIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEyNDEu
LmZjZGYyZjY0YzlhMmM5OWMzMGY4NmQzMzBjYmM0NjJhNzFkZDRhYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTQ2Miw2ICs0NjIsNyBAQCBVSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2Vz
dHVyZVJlY29nbml6ZXIubW0KIFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9y
aWdpbi5tbQogVUlQcm9jZXNzL2lvcy9XS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyLm1tCitVSVByb2Nlc3MvaW9zL1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCiBVSVByb2Nl
c3MvaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbQogVUlQcm9jZXNzL2lvcy9XS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA2OTNlNjQxZTkzMDUzZWY4Njc1NjA1
Zjk5YjcyYzA0NGEyMTIzMDdlLi4xOWE5NjBhNTQ5YmIxNDYxOWExOTA0YmM3ODg1ZTQ5MWZmNTEw
ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMTgsNiArMTE4LDEwIEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIEBjbGFzcyBfVUlMb29rdXBHZXN0dXJlUmVjb2duaXplcjsKIEBjbGFzcyBfVUlIaWdobGln
aHRWaWV3OwogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFk
ZGl0aW9ucy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb25BZGRpdGlvbnNCZWZvcmUuaD4KKyNlbmRp
ZgorCiB0eXBlZGVmIHZvaWQgKF5VSVdLQXV0b2NvcnJlY3Rpb25Db21wbGV0aW9uSGFuZGxlciko
VUlXS0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9ySW5wdXQpOwogdHlwZWRlZiB2b2lkIChe
VUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXIpKFVJV0tBdXRvY29ycmVjdGlvbkNvbnRl
eHQgKmF1dG9jb3JyZWN0aW9uQ29udGV4dCk7CiB0eXBlZGVmIHZvaWQgKF5VSVdLRGljdGF0aW9u
Q29udGV4dEhhbmRsZXIpKE5TU3RyaW5nICpzZWxlY3RlZFRleHQsIE5TU3RyaW5nICpiZWZvcmVU
ZXh0LCBOU1N0cmluZyAqYWZ0ZXJUZXh0KTsKQEAgLTQyNCw2ICs0MjgsOSBAQCBzdHJ1Y3QgV0tB
dXRvQ29ycmVjdGlvbkRhdGEgewogI2VuZGlmCiAKICAgICBWZWN0b3I8QmxvY2tQdHI8dm9pZCgp
Pj4gX2FjdGlvbnNUb1BlcmZvcm1BZnRlclJlc2V0dGluZ1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyOworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlv
bnMvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uQWRkaXRpb25zQWZ0ZXIuaD4KKyNlbmRpZgogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBiOThlODcxMTIxNzg0ODkxMzBlYWUxYzhiZTQ1NzU3
MmM1MTk1NjgzLi43NjNhMmNkZTE2MDI2MmMxOTU1NmY5MjgyNjE1MzQ3ZGJhYTY4NmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTEzOCw2ICsxMzgsMTAgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0
b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb25BZGRpdGlvbnNCZWZvcmUubW0+CisjZW5kaWYKKwogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RyYWdJdGVtLmg+CkBAIC04OTIsNiArODk2LDEwIEBAIC0gKHZvaWQpc2V0VXBJbnRlcmFjdGlv
bgogICAgIF9wYWdlLT5wcm9jZXNzKCkudXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogICAgIF9w
YWdlLT5zZXRTY3JlZW5Jc0JlaW5nQ2FwdHVyZWQoW1tbc2VsZiB3aW5kb3ddIHNjcmVlbl0gaXND
YXB0dXJlZF0pOwogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgW3NlbGYgX3Nl
dFVwSW1hZ2VFeHRyYWN0aW9uXTsKKyNlbmRpZgorCiAgICAgX2hhc1NldFVwSW50ZXJhY3Rpb25z
ID0gWUVTOwogfQogCkBAIC0xMDUzLDYgKzEwNjEsMTAgQEAgLSAodm9pZCljbGVhblVwSW50ZXJh
Y3Rpb24KICAgICBbc2VsZiBfY2FuY2VsUGVuZGluZ0tleUV2ZW50SGFuZGxlcl07CiAKICAgICBf
Y2FjaGVkU2VsZWN0ZWRUZXh0UmFuZ2UgPSBuaWw7CisKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFD
VElPTikKKyAgICBbc2VsZiBfdGVhckRvd25JbWFnZUV4dHJhY3Rpb25dOworI2VuZGlmCiB9CiAK
IC0gKHZvaWQpX2NhbmNlbFBlbmRpbmdLZXlFdmVudEhhbmRsZXIKQEAgLTE1MDgsNiArMTUyMCwx
MCBAQCAtICh2b2lkKV93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6KFVJV2ViVG91Y2hFdmVudHNH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZQogICAgICAgICBbc2VsZiBkb0FmdGVyUG9zaXRp
b25JbmZvcm1hdGlvblVwZGF0ZTpbYXNzaXN0YW50ID0gV2Vha09iakNQdHI8V0tBY3Rpb25TaGVl
dEFzc2lzdGFudD4oX2FjdGlvblNoZWV0QXNzaXN0YW50LmdldCgpKV0gKFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pIHsKICAgICAgICAgICAgIFth
c3Npc3RhbnQgaW50ZXJhY3Rpb25EaWRTdGFydFdpdGhQb3NpdGlvbkluZm9ybWF0aW9uOmluZm9y
bWF0aW9uXTsKICAgICAgICAgfSBmb3JSZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
XTsKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgICAgICBbc2VsZiBfY2FuY2Vs
SW1hZ2VFeHRyYWN0aW9uSWZOZWVkZWQ6X2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uXTsKKyNlbmRp
ZgogICAgIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0yMTcxLDYgKzIxODcsMTEg
QEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyIHNob3VsZFJlY29nbmkKICAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVj
b2duaXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25p
emVyLmdldCgpLCBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXJGb3JEb3VibGVDbGljay5nZXQo
KSkpCiAgICAgICAgIHJldHVybiBZRVM7CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikK
KyAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX2ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyKQorICAgICAgICByZXR1cm4gWUVTOworI2VuZGlmCisKICAgICByZXR1cm4gTk87CiB9
CiAKQEAgLTgxMDQsMTIgKzgxMjUsMzEgQEAgLSAodm9pZClfZHJhZ0ludGVyYWN0aW9uOihVSURy
YWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXBhcmVGb3JTZXNzaW9uOihpZAogCiAgICAg
W3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwogCi0gICAgX2RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5wcmVwYXJlRm9yRHJhZ1Nlc3Npb24oc2Vzc2lvbiwgY29tcGxldGlvbik7
CisgICAgYXV0byBwcmVwYXJlRm9yU2Vzc2lvbiA9IFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdL
Q29udGVudFZpZXc+KHNlbGYpLCBzZXNzaW9uID0gcmV0YWluUHRyKHNlc3Npb24pLCBjb21wbGV0
aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2Vs
ZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGRyYWdPcmlnaW4gPSBXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoW3Nlc3Npb24gbG9jYXRpb25JblZpZXc6c2VsZl0pOwotICAgIF9wYWdlLT5yZXF1ZXN0RHJh
Z1N0YXJ0KGRyYWdPcmlnaW4sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbc2VsZiBjb252ZXJ0
UG9pbnQ6ZHJhZ09yaWdpbiB0b1ZpZXc6c2VsZi53aW5kb3ddKSwgc2VsZi5fYWxsb3dlZERyYWdT
b3VyY2VBY3Rpb25zKTsKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICAgICAgaWYg
KHN0cm9uZ1NlbGYtPl9pbWFnZUV4dHJhY3Rpb25TdGF0ZSA9PSBXZWJLaXQ6OkltYWdlRXh0cmFj
dGlvblN0YXRlOjpBY3RpdmUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9w
LCAiRHJhZyBzZXNzaW9uIGZhaWxlZDogJXAgKGRlZmVycmluZyB0byBhY3RpdmUgaW1hZ2UgZXh0
cmFjdGlvbikiLCBzZXNzaW9uLmdldCgpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCiAKLSAgICBSRUxFQVNFX0xPRyhE
cmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiByZXF1ZXN0ZWQ6ICVwIGF0IG9yaWdpbjogeyVkLCAl
ZH0iLCBzZXNzaW9uLCBkcmFnT3JpZ2luLngoKSwgZHJhZ09yaWdpbi55KCkpOworICAgICAgICBz
dHJvbmdTZWxmLT5fZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLnByZXBhcmVGb3JEcmFnU2Vzc2lv
bihzZXNzaW9uLmdldCgpLCBjb21wbGV0aW9uLmdldCgpKTsKKworICAgICAgICBhdXRvIGRyYWdP
cmlnaW4gPSBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW3Nlc3Npb24gbG9jYXRpb25JblZpZXc6
c3Ryb25nU2VsZi5nZXQoKV0pOworICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVzdERy
YWdTdGFydChkcmFnT3JpZ2luLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW3N0cm9uZ1NlbGYg
Y29udmVydFBvaW50OmRyYWdPcmlnaW4gdG9WaWV3OltzdHJvbmdTZWxmIHdpbmRvd11dKSwgW3N0
cm9uZ1NlbGYgX2FsbG93ZWREcmFnU291cmNlQWN0aW9uc10pOworICAgICAgICBSRUxFQVNFX0xP
RyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiByZXF1ZXN0ZWQ6ICVwIGF0IG9yaWdpbjogeyVk
LCAlZH0iLCBzZXNzaW9uLmdldCgpLCBkcmFnT3JpZ2luLngoKSwgZHJhZ09yaWdpbi55KCkpOwor
ICAgIH07CisKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBbc2VsZiBfZG9BZnRl
clBlbmRpbmdJbWFnZUV4dHJhY3Rpb246cHJlcGFyZUZvclNlc3Npb25dOworI2Vsc2UKKyAgICBw
cmVwYXJlRm9yU2Vzc2lvbigpOworI2VuZGlmCiB9CiAKIC0gKE5TQXJyYXk8VUlEcmFnSXRlbSAq
PiAqKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBpdGVt
c0ZvckJlZ2lubmluZ1Nlc3Npb246KGlkIDxVSURyYWdTZXNzaW9uPilzZXNzaW9uCkBAIC04OTk1
LDYgKzkwMzUsMTAgQEAgLSAodm9pZClfd3JpdGVQcm9taXNlZEF0dGFjaG1lbnRUb1Bhc3RlYm9h
cmQ6KFdlYkNvcmU6OlByb21pc2VkQXR0YWNobWVudEluZm8mJikKIAogI2VuZGlmIC8vIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lt
cG9ydCA8V2ViS2l0QWRkaXRpb25zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbkFkZGl0aW9uc0Fm
dGVyLm1tPgorI2VuZGlmCisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLQ29udGVudFZpZXcg
KFdLVGVzdGluZykKQEAgLTk0MzcsMjQgKzk0ODEsNDMgQEAgLSAodm9pZClfY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gY29uZmln
dXIKICAgICBpZiAoIXNlbGYud2ViVmlldy5jb25maWd1cmF0aW9uLl9sb25nUHJlc3NBY3Rpb25z
RW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb24obmlsKTsKIAotICAgIFtfd2ViVmll
dyBfZGlkU2hvd0NvbnRleHRNZW51XTsKLSAgICAKLSAgICBfc2hvd0xpbmtQcmV2aWV3cyA9IHRy
dWU7Ci0gICAgaWYgKE5TTnVtYmVyICp2YWx1ZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTp3ZWJraXRTaG93TGlua1ByZXZpZXdzUHJlZmVyZW5j
ZUtleV0pCi0gICAgICAgIF9zaG93TGlua1ByZXZpZXdzID0gdmFsdWUuYm9vbFZhbHVlOwotCi0g
ICAgY29uc3QgYXV0byBwb3NpdGlvbiA9IFtpbnRlcmFjdGlvbiBsb2NhdGlvbkluVmlldzpzZWxm
XTsKLSAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3QgeyBX
ZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQocG9zaXRpb24pIH07Ci0gICAgcmVxdWVzdC5pbmNsdWRl
U25hcHNob3QgPSB0cnVlOwotICAgIHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IgPSB0cnVl
OwotICAgIHJlcXVlc3QubGlua0luZGljYXRvclNob3VsZEhhdmVMZWdhY3lNYXJnaW5zID0gIXNl
bGYuX3Nob3VsZFVzZUNvbnRleHRNZW51czsKLQotICAgIFtzZWxmIGRvQWZ0ZXJQb3NpdGlvbklu
Zm9ybWF0aW9uVXBkYXRlOlt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNl
bGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSAoV2ViS2l0OjpJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbikgeworICAgIGF1dG8gZ2V0Q29uZmlndXJhdGlv
bkFuZENvbnRpbnVlID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2Vs
ZiksIGludGVyYWN0aW9uID0gcmV0YWluUHRyKGludGVyYWN0aW9uKSwgY29tcGxldGlvbiA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uKV0gewogICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFr
U2VsZi5nZXQoKTsKICAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQotICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb24obmlsKTsKLSAgICAgICAgW3N0cm9uZ1NlbGYgY29udGludWVDb250ZXh0TWVu
dUludGVyYWN0aW9uOmNvbXBsZXRpb24uZ2V0KCldOwotICAgIH0gZm9yUmVxdWVzdDpyZXF1ZXN0
XTsKKyAgICAgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQor
ICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X2ltYWdlRXh0cmFjdGlvblN0YXRlID09IFdlYktpdDo6
SW1hZ2VFeHRyYWN0aW9uU3RhdGU6OkFjdGl2ZSkgeworICAgICAgICAgICAgY29tcGxldGlvbihu
aWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBb
c3Ryb25nU2VsZi0+X3dlYlZpZXcgX2RpZFNob3dDb250ZXh0TWVudV07CisKKyAgICAgICAgc3Ry
b25nU2VsZi0+X3Nob3dMaW5rUHJldmlld3MgPSB0cnVlOworICAgICAgICBpZiAoTlNOdW1iZXIg
KnZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9y
S2V5OndlYmtpdFNob3dMaW5rUHJldmlld3NQcmVmZXJlbmNlS2V5XSkKKyAgICAgICAgICAgIHN0
cm9uZ1NlbGYtPl9zaG93TGlua1ByZXZpZXdzID0gdmFsdWUuYm9vbFZhbHVlOworCisgICAgICAg
IGNvbnN0IGF1dG8gcG9zaXRpb24gPSBbaW50ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c3Ryb25n
U2VsZi5nZXQoKV07CisgICAgICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QgcmVxdWVzdCB7IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb3NpdGlvbikgfTsKKyAgICAg
ICAgcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgPSB0cnVlOworICAgICAgICByZXF1ZXN0LmluY2x1
ZGVMaW5rSW5kaWNhdG9yID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdC5saW5rSW5kaWNhdG9yU2hv
dWxkSGF2ZUxlZ2FjeU1hcmdpbnMgPSAhW3N0cm9uZ1NlbGYgX3Nob3VsZFVzZUNvbnRleHRNZW51
c107CisKKyAgICAgICAgW3N0cm9uZ1NlbGYgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRh
dGU6W3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc3Ryb25nU2VsZi5nZXQo
KSksIGNvbXBsZXRpb25dIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
KSB7CisgICAgICAgICAgICBpZiAoYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCkpCisg
ICAgICAgICAgICAgICAgW3N0cm9uZ1NlbGYgY29udGludWVDb250ZXh0TWVudUludGVyYWN0aW9u
OmNvbXBsZXRpb24uZ2V0KCldOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNv
bXBsZXRpb24obmlsKTsKKyAgICAgICAgfSBmb3JSZXF1ZXN0OnJlcXVlc3RdOworICAgIH07CisK
KyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBbc2VsZiBfZG9BZnRlclBlbmRpbmdJ
bWFnZUV4dHJhY3Rpb246Z2V0Q29uZmlndXJhdGlvbkFuZENvbnRpbnVlXTsKKyNlbHNlCisgICAg
Z2V0Q29uZmlndXJhdGlvbkFuZENvbnRpbnVlKCk7CisjZW5kaWYKIH0KIAogLSAodm9pZCljb250
aW51ZUNvbnRleHRNZW51SW50ZXJhY3Rpb246KHZvaWQoXikoVUlDb250ZXh0TWVudUNvbmZpZ3Vy
YXRpb24gKikpY29udGludWVXaXRoQ29udGV4dE1lbnVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVj
b2duaXplci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW1hZ2VFeHRyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDI1ZTJiNmY0M2Q2NTRkOWI0YmUwMjcy
OGI2M2ViNDRlY2EyYTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKworI2luY2x1ZGUgPFVJS2l0L1VJS2l0Lmg+
CisKK0BjbGFzcyBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyOworCitAcHJvdG9j
b2wgV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplckRlbGVnYXRlIDxVSUdlc3R1cmVS
ZWNvZ25pemVyRGVsZWdhdGU+CistICh2b2lkKWltYWdlRXh0cmFjdGlvbkdlc3R1cmVEaWRCZWdp
bjooV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmU7CitAZW5kCisK
K0BpbnRlcmZhY2UgV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplciA6IFVJTG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6
KFVJVmlldyA8V0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPiAqKWRl
bGVnYXRlOworCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFC
TEUoSU1BR0VfRVhUUkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTViZGVlM2QyYzQzNTk2OGY5NzRlYTJkZjAzMzM2M2YwMGZhNThjNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0ltYWdlRXh0cmFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyLm1tCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2du
aXplci5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElNQUdFX0VYVFJB
Q1RJT04pCisKK0BpbXBsZW1lbnRhdGlvbiBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyIHsKKyAgICBfX3dlYWsgVUlWaWV3IDxXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyRGVsZWdhdGU+ICpfaW1hZ2VFeHRyYWN0aW9uRGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERlbGVnYXRlOihVSVZpZXcgPFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXJEZWxlZ2F0ZT4gKilkZWxlZ2F0ZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2ltYWdlRXh0cmFjdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgc2VsZi5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIHNlbGYu
bWluaW11bVByZXNzRHVyYXRpb24gPSAwLjE7CisgICAgc2VsZi5hbGxvd2FibGVNb3ZlbWVudCA9
IDE7CisgICAgc2VsZi5uYW1lID0gQCJJbWFnZSBleHRyYWN0aW9uIjsKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKworLSAodm9pZClzZXRTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRl
Cit7CisgICAgYXV0byBwcmV2aW91c1N0YXRlID0gc2VsZi5zdGF0ZTsKKyAgICBbc3VwZXIgc2V0
U3RhdGU6c3RhdGVdOworCisgICAgYXV0byBuZXdTdGF0ZSA9IHNlbGYuc3RhdGU7CisgICAgaWYg
KHByZXZpb3VzU3RhdGUgIT0gbmV3U3RhdGUgJiYgbmV3U3RhdGUgPT0gVUlHZXN0dXJlUmVjb2du
aXplclN0YXRlQmVnYW4pCisgICAgICAgIFtfaW1hZ2VFeHRyYWN0aW9uRGVsZWdhdGUgaW1hZ2VF
eHRyYWN0aW9uR2VzdHVyZURpZEJlZ2luOnNlbGZdOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI0NjExYmQx
ZDNmMzJjNTI2MzE1NTFmMzk2ZTFmODQwNDBlNDg4YmQuLjg0M2ZkZmMwYWVjNmU3NmY4Yjk3YTc4
NTNkNTZmZWZiYmRlMmUxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTkzNCw2ICsxOTM0LDcgQEAKIAkJRjQ4RDJBODUyMTU4M0E3
RTAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ4RDJBODQyMTU4M0EwMjAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oICov
OyB9OwogCQlGNDk2QTQzMTFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk2
QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmggKi87IH07
CiAJCUY0QTZENkJDMjU0Q0EzRTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRBNkQ2QkIy
NTRDQTNFOTAwQjY1RkFBIC8qIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmggKi87IH07CisJCUY0
QkEzM0YyMjU3NTdFODkwMDBBM0NFOCAvKiBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEJB
MzNGMDI1NzU3RTg5MDAwQTNDRTggLyogV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5oICovOyB9OwogCQlGNENCMDlFNTIyNUQ1QTA5MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291
cmNlUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNENCMDlFNDIyNUQ1QTAzMDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5Lmgg
Ki87IH07CiAJCUY0RDVGNTFEMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRENUY1MTkyMDYwODdBMDAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9s
bGVyLmggKi87IH07CiAJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0RDVGNTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmll
d0NvbnRyb2xsZXIuaCAqLzsgfTsKQEAgLTU2MDEsNiArNTYwMiw4IEBACiAJCUY0QTZENkJCMjU0
Q0EzRTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEFDNjU1RTIyQTMxNDBFMDBBMDU2MDcgLyogV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tOyBwYXRoID0gaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlc0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRCMzc4RDAyMURE
QkJBQjAwOTVBMzc4IC8qIFdlYlVuZG9TdGVwSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVW5kb1N0
ZXBJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEJBMzNGMDI1NzU3RTg5MDAw
QTNDRTggLyogV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tJ
bWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNEJBMzNGMTI1NzU3RTg5MDAwQTNDRTggLyogV0tJbWFnZUV4dHJhY3Rpb25HZXN0
dXJlUmVjb2duaXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLSW1hZ2VFeHRyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJl
UmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDQjA5RTQyMjVE
NUEwMzAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjRENUY1MTkyMDYwODdBMDAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVGV4dElucHV0TGlzdFZp
ZXdDb250cm9sbGVyLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRENUY1MUEyMDYwODdBMTAw
MzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIu
bW07IHBhdGggPSBpb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjc3LDYgKzcyODAsOCBAQAogCQkJCTBGQ0I0
RTQxMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJp
dHlPcmlnaW4ubW0gKi8sCiAJCQkJRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKIAkJCQlGNERCNTRFNTIzMTlFNzMz
MDA5RTMxNTUgLyogV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5tbSAqLywK
KwkJCQlGNEJBMzNGMDI1NzU3RTg5MDAwQTNDRTggLyogV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJl
UmVjb2duaXplci5oICovLAorCQkJCUY0QkEzM0YxMjU3NTdFODkwMDBBM0NFOCAvKiBXS0ltYWdl
RXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJCTkzM0RGODJEMUIzQkMwOTAw
MEFFQTlFMyAvKiBXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLmggKi8sCiAJCQkJOTMzREY4
MkYxQjNCQzBCNDAwQUVBOUUzIC8qIFdLSW1hZ2VQcmV2aWV3Vmlld0NvbnRyb2xsZXIubW0gKi8s
CiAJCQkJMkRENUUxMjcyMTBBREM3QTAwREI2MDEyIC8qIFdLS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvci5oICovLApAQCAtMTIwNTMsNiArMTIwNTgsNyBAQAogCQkJCTUxMjNDRjFDMTMzRDI2MEEw
MDU2RjgwMCAvKiBXS0ljb25EYXRhYmFzZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkFD
MzEyQzkxRjM0MDA4RjlDMzUgLyogV0tJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZB
Q0ExMkM5MUY1OTAwOEY5QzM1IC8qIFdLSW1hZ2VDRy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjRC
QTMzRjIyNTc1N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzM0RGODJFMUIzQkMwOTAwMEFFQTlFMyAvKiBXS0lt
YWdlUHJldmlld1ZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzIxRDU4NjFB
MzhFRTNDMDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzIxRDU4QTFBMzhGMTk2MDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25U
eXBlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGU1NzVmY2EwMTlmNmIxMmE4ZjRkYWU1Y2Ix
ZDY4MmRhNGU0MzZlYjkuLjM4MzhhYjMyNmRkODM5NmI2MDEwN2NiYTNmNjI0NTA3NGM5N2Y3MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0yNjM0LDcgKzI2MzQsNyBAQCBzdGF0aWMgdm9pZCBpbWFnZVBvc2l0aW9uSW5m
b3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50ZQogICAg
IGluZm8uaW1hZ2VVUkwgPSBlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwocmVuZGVySW1h
Z2UuY2FjaGVkSW1hZ2UoKS0+dXJsKCkuc3RyaW5nKCkpOwogICAgIGluZm8uaXNBbmltYXRlZElt
YWdlID0gaW1hZ2UtPmlzQW5pbWF0ZWQoKTsKIAotICAgIGlmICghcmVxdWVzdC5pbmNsdWRlU25h
cHNob3QpCisgICAgaWYgKCFyZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCAmJiAhcmVxdWVzdC5pbmNs
dWRlSW1hZ2VEYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFNpemUgc2NyZWVuU2l6
ZUluUGl4ZWxzID0gc2NyZWVuU2l6ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415168</attachid>
            <date>2020-12-01 15:16:14 -0800</date>
            <delta_ts>2020-12-01 16:11:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219398-20201201151614.patch</filename>
            <type>text/plain</type>
            <size>25557</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQwZDczYTRiMmVjZjcxYzMy
MTQ3NjNiNWI1NWM5NzY1MWJjNjU0NTIuLjliY2RmODBkYzczZmU4MzFhNjU4NDNjMDNkNjc3ZWI0
ZDQ5Yjc0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTItMDEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gU3VwcG9ydCBp
bWFnZSBleHRyYWN0aW9uIGludGVyYWN0aW9ucyBmb3IgYWNjZXNzaWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5Mzk4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83MDc0NDkxND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGEgbmV3IGFjY2Vzc2liaWxpdHkgZmVh
dHVyZSByZWxhdGVkIHRvIGltYWdlcy4gUmVmZXIgdG8gdGhlIGJ1ZyBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0OjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dDo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3Q6OmlzVmFsaWRGb3JSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvaW9zL0ludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Lmg6CisKKyAgICAgICAgQWRkIGEgbmV3IGZsYWcgdG8g
cmVxdWVzdCBpbWFnZSBkYXRhIHZpYSBwb3NpdGlvbiBpbmZvcm1hdGlvbi4gVGhpcyBmbGFnIHdv
cmtzIHNpbWlsYXJseSB0byB0aGUgZXhpc3RpbmcKKyAgICAgICAgYGluY2x1ZGVTbmFwc2hvdGAg
ZmxhZywgZXhjZXB0IHRoYXQgaXQgb25seSBncmFicyBkYXRhIHdoZW4gdGhlIGhpdC10ZXN0ZWQg
bm9kZSBpcyBhbiBpbWFnZS4gQXMgc3VjaCwgYSBwb3NpdGlvbgorICAgICAgICBpbmZvcm1hdGlv
biByZXF1ZXN0IHdpdGggdGhlIGBpbmNsdWRlU25hcHNob3RgIGZsYWcgc2V0IGlzIHZhbGlkIGZv
ciBhbiBpZGVudGljYWwgcmVxdWVzdCB3aXRoIHRoaXMgbmV3CisgICAgICAgIGBpbmNsdWRlSW1h
Z2VEYXRhYCBmbGFnIHNldCwgYnV0IG5vdCB2aWNlIHZlcnNhLgorCisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorCisgICAgICAgIEFkZCB2YXJpb3VzIGV4dGVuc2lvbiBwb2ludHMgZm9yIG5ldyBXZWJL
aXRBZGRpdGlvbnMgc25pcHBldHMuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcElu
dGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW5VcEludGVyYWN0aW9u
XSk6CisKKyAgICAgICAgQ2FsbCBuZXcgbWV0aG9kcyB0byBzZXQgdXAgYW5kIHRlYXIgZG93biB0
aGUgaW1hZ2UgZXh0cmFjdGlvbiBpbnRlcmFjdGlvbiAoZGVmaW5lZCBpbiBXZWJLaXRBZGRpdGlv
bnMpLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dlYlRvdWNoRXZlbnRzUmVjb2duaXpl
ZDpdKToKKworICAgICAgICBVcG9uIHN0YXJ0aW5nIGEgbmV3IGdlc3R1cmUsIHJlc2V0IHRoZSBh
Y3RpdmUgKG9yIHBlbmRpbmcpIGltYWdlIGV4dHJhY3Rpb24gaW50ZXJhY3Rpb24sIGlmIGFwcHJv
cHJpYXRlLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hv
dWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6CisKKyAg
ICAgICAgQWxsb3cgdGhlIGltYWdlIGV4dHJhY3Rpb24gZ2VzdHVyZSB0byBmaXJlIGFsb25nc2lk
ZSBhbnkgb3RoZXIgZ2VzdHVyZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kcmFnSW50
ZXJhY3Rpb246cHJlcGFyZUZvclNlc3Npb246Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfY29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0
TG9jYXRpb246Y29tcGxldGlvbjpdKToKKworICAgICAgICBUaGVzZSBleGlzdGluZyBpbnRlcmFj
dGlvbnMgbWF5IGNvbmZsaWN0IHdpdGggcGVuZGluZyBpbWFnZSBleHRyYWN0aW9uIGludGVyYWN0
aW9ucy4gTHVja2lseSwgc2luY2UgdGhlc2UKKyAgICAgICAgaW50ZXJhY3Rpb25zIGFyZSBib3Ro
IGFzeW5jaHJvbm91cywgd2UncmUgYWJsZSB0byBkZWZlciB0aGVtIHVudGlsIGFueSBwZW5kaW5n
IGltYWdlIGV4dHJhY3Rpb24gcmVxdWVzdCBoYXMKKyAgICAgICAgZmluaXNoZWQsIHRvIGRldGVy
bWluZSB3aGV0aGVyIG9yIG5vdCB0aGV5IHNob3VsZCBjb21tZW5jZS4gSW4gYm90aCBjYXNlcywg
aW1hZ2UgZXh0cmFjdGlvbiBzaG91bGQgdGFrZQorICAgICAgICBwcmVjZWRlbmNlIG92ZXIgZHJh
Z2dpbmcgYW5kIGNvbnRleHQgbWVudXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLSW1h
Z2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW06CisKKyAgICAgICAgQWRkIGEg
bmV3IGxvbmcgcHJlc3MgZ2VzdHVyZSByZWNvZ25pemVyIHRoYXQgZmlyZXMgb24gYSB2ZXJ5IHNo
b3J0ICgxMDBtcykgZGVsYXkuIFRoaXMgZ2VzdHVyZSBpcyB1c2VkIHRvCisgICAgICAgIHByZWZs
aWdodCBpbWFnZSBleHRyYWN0aW9uIHJlcXVlc3RzIGFoZWFkIG9mIHRoZSBvdGhlciBsb25nIHBy
ZXNzIGdlc3R1cmVzIChpbiBwYXJ0aWN1bGFyLCBjb250ZXh0IG1lbnVzKSwgc3VjaAorICAgICAg
ICB0aGF0IHRoZXNlIG90aGVyIGdlc3R1cmVzIHNob3VsZCBiZSBtaW5pbWFsbHkgaW1wYWN0ZWQg
YnkgdGhlIHRpbWUgcmVxdWlyZWQgdG8gcGVyZm9ybSBpbWFnZSBleHRyYWN0aW9uLgorCisgICAg
ICAgIFRoaXMgaXMgc3RpbGwgYSBsb25nIHByZXNzIGdlc3R1cmUgaW5zdGVhZCBvZiBhIHJlZ3Vs
YXIgZ2VzdHVyZSByZWNvZ25pemVyLCBzaW5jZSBwcmVmbGlnaHRpbmcgaW1hZ2UgZXh0cmFjdGlv
bgorICAgICAgICByZXF1ZXN0cyBjb3VsZCBiZSBleHBlbnNpdmUgaWYgcGVyZm9ybWVkIGR1cmlu
ZyBldmVyeSBzaW5nbGUgZ2VzdHVyZSAoaS5lLiBzY3JvbGxpbmcsIHRhcHMsIGV0YykuCisKKyAg
ICAgICAgKC1bV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplciBpbml0V2l0aERlbGVn
YXRlOl0pOgorICAgICAgICAoLVtXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIHNl
dFN0YXRlOl0pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKToKKwogMjAyMC0xMi0wMSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCB0ZWxl
bWV0cnkgZm9yIHNhbmRib3ggcnVsZXMgd2UgYmVsaWV2ZSBhcmUgdW51c2VkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1
ZXN0LmNwcAppbmRleCA0ZGYwMmUxNzIzMWI2YmRhOGM2MTVlZWU2MmY2NjVlYzY0MDZiYjBmLi40
YTNlMWFhZjUzODc1YjY4NDFlZjkwMzg1YWYyODMzMDk5N2JhNTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAgdm9pZCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGlu
Y2x1ZGVMaW5rSW5kaWNhdG9yOwogICAgIGVuY29kZXIgPDwgaW5jbHVkZUNhcmV0Q29udGV4dDsK
ICAgICBlbmNvZGVyIDw8IGluY2x1ZGVIYXNEb3VibGVDbGlja0hhbmRsZXI7CisgICAgZW5jb2Rl
ciA8PCBpbmNsdWRlSW1hZ2VEYXRhOwogICAgIGVuY29kZXIgPDwgbGlua0luZGljYXRvclNob3Vs
ZEhhdmVMZWdhY3lNYXJnaW5zOwogfQogCkBAIC02MCw2ICs2MSw5IEBAIGJvb2wgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvblJlcXVlc3Q6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEludGVy
YWN0aW9uSW5mCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5jbHVkZUhhc0RvdWJs
ZUNsaWNrSGFuZGxlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmluY2x1ZGVJbWFnZURhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5saW5rSW5kaWNhdG9yU2hvdWxkSGF2
ZUxlZ2FjeU1hcmdpbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgwLDYgKzg0LDkg
QEAgYm9vbCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDo6aXNWYWxpZEZvclJlcXVlc3Qo
Y29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGkKICAgICBpZiAob3RoZXIuaW5jbHVkZUhhc0RvdWJs
ZUNsaWNrSGFuZGxlciAmJiAhaW5jbHVkZUhhc0RvdWJsZUNsaWNrSGFuZGxlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgaWYgKG90aGVyLmluY2x1ZGVJbWFnZURhdGEgJiYgIWluY2x1
ZGVJbWFnZURhdGEgJiYgIWluY2x1ZGVTbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgaWYgKG90aGVyLmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyAhPSBs
aW5rSW5kaWNhdG9yU2hvdWxkSGF2ZUxlZ2FjeU1hcmdpbnMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QuaAppbmRleCBhZjI1NTNkYzYxMDUzMjY4ZWEzMWEzZmVmNGY2ZjYx
NmM2NmRlYmM0Li5kMDIwZThkMTI3NmRiMTVmM2JhNjZiMGRmOTNkNDFjMTc3NTE0MDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QuaApAQCAtNDMsNiArNDMsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QgewogICAgIGJvb2wgaW5jbHVkZUxpbmtJbmRpY2F0b3IgeyBmYWxzZSB9Owog
ICAgIGJvb2wgaW5jbHVkZUNhcmV0Q29udGV4dCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbmNsdWRl
SGFzRG91YmxlQ2xpY2tIYW5kbGVyIHsgdHJ1ZSB9OworICAgIGJvb2wgaW5jbHVkZUltYWdlRGF0
YSB7IGZhbHNlIH07CiAKICAgICBib29sIGxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFy
Z2lucyB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5OTUxODA3MzI4MGU5
Yzk1YTJiMjVmMDBiYzhiZmIzODg3NjIxMjQxLi5mY2RmMmY2NGM5YTJjOTljMzBmODZkMzMwY2Jj
NDYyYTcxZGQ0YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00NjIsNiArNDYyLDcgQEAg
VUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3Mv
aW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0KIFVJUHJvY2Vzcy9pb3MvV0tIaWdo
bGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5tbQorVUlQcm9jZXNzL2lvcy9XS0ltYWdl
RXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5tbQogVUlQcm9jZXNzL2lvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIu
bW0KIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
aW5kZXggNjkzZTY0MWU5MzA1M2VmODY3NTYwNWY5OWI3MmMwNDRhMjEyMzA3ZS4uYTg1ZGZiMDU0
Yjc0ZDMxNmQ5ZmVmYjQ3ZTA1Nzk0YzE4MDBkODIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTE4LDYg
KzExOCwxMCBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBAY2xhc3MgX1VJTG9va3VwR2VzdHVyZVJl
Y29nbml6ZXI7CiBAY2xhc3MgX1VJSGlnaGxpZ2h0VmlldzsKIAorI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uQWRkaXRpb25zQmVmb3JlLmg+CisjZW5kaWYKKwogdHlwZWRlZiB2b2lkICheVUlXS0F1dG9j
b3JyZWN0aW9uQ29tcGxldGlvbkhhbmRsZXIpKFVJV0tBdXRvY29ycmVjdGlvblJlY3RzICpyZWN0
c0ZvcklucHV0KTsKIHR5cGVkZWYgdm9pZCAoXlVJV0tBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5k
bGVyKShVSVdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICphdXRvY29ycmVjdGlvbkNvbnRleHQpOwog
dHlwZWRlZiB2b2lkICheVUlXS0RpY3RhdGlvbkNvbnRleHRIYW5kbGVyKShOU1N0cmluZyAqc2Vs
ZWN0ZWRUZXh0LCBOU1N0cmluZyAqYmVmb3JlVGV4dCwgTlNTdHJpbmcgKmFmdGVyVGV4dCk7CkBA
IC00MjQsNiArNDI4LDE3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAjZW5kaWYK
IAogICAgIFZlY3RvcjxCbG9ja1B0cjx2b2lkKCk+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUmVz
ZXR0aW5nU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXI7CisKKyNpZiBFTkFCTEUoSU1BR0VfRVhU
UkFDVElPTikKKyAgICBSZXRhaW5QdHI8V0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXpl
cj4gX2ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyOworICAgIFdlYktpdDo6SW1hZ2VF
eHRyYWN0aW9uU3RhdGUgX2ltYWdlRXh0cmFjdGlvblN0YXRlOworICAgIENHUmVjdCBfaW1hZ2VF
eHRyYWN0aW9uSW50ZXJhY3Rpb25Cb3VuZHM7CisgICAgVmVjdG9yPEJsb2NrUHRyPHZvaWQoKT4+
IF9hY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uOworI2VuZGlmCisK
KyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbkFkZGl0aW9uc0FmdGVyLmg+CisjZW5kaWYKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggYjk4ZTg3MTEyMTc4NDg5MTMwZWFlMWM4YmU0NTc1NzJjNTE5
NTY4My4uNzYzYTJjZGUxNjAyNjJjMTk1NTZmOTI4MjYxNTM0N2RiYWE2ODZiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC0xMzgsNiArMTM4LDEwIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29j
b2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uQWRkaXRpb25zQmVmb3JlLm1tPgorI2VuZGlmCisKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFn
SXRlbS5oPgpAQCAtODkyLDYgKzg5NiwxMCBAQCAtICh2b2lkKXNldFVwSW50ZXJhY3Rpb24KICAg
ICBfcGFnZS0+cHJvY2VzcygpLnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKICAgICBfcGFnZS0+
c2V0U2NyZWVuSXNCZWluZ0NhcHR1cmVkKFtbW3NlbGYgd2luZG93XSBzY3JlZW5dIGlzQ2FwdHVy
ZWRdKTsKIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgIFtzZWxmIF9zZXRVcElt
YWdlRXh0cmFjdGlvbl07CisjZW5kaWYKKwogICAgIF9oYXNTZXRVcEludGVyYWN0aW9ucyA9IFlF
UzsKIH0KIApAQCAtMTA1Myw2ICsxMDYxLDEwIEBAIC0gKHZvaWQpY2xlYW5VcEludGVyYWN0aW9u
CiAgICAgW3NlbGYgX2NhbmNlbFBlbmRpbmdLZXlFdmVudEhhbmRsZXJdOwogCiAgICAgX2NhY2hl
ZFNlbGVjdGVkVGV4dFJhbmdlID0gbmlsOworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04p
CisgICAgW3NlbGYgX3RlYXJEb3duSW1hZ2VFeHRyYWN0aW9uXTsKKyNlbmRpZgogfQogCiAtICh2
b2lkKV9jYW5jZWxQZW5kaW5nS2V5RXZlbnRIYW5kbGVyCkBAIC0xNTA4LDYgKzE1MjAsMTAgQEAg
LSAodm9pZClfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVkOihVSVdlYlRvdWNoRXZlbnRzR2VzdHVy
ZVJlY29nbml6ZXIgKilnZXN0dXJlUmUKICAgICAgICAgW3NlbGYgZG9BZnRlclBvc2l0aW9uSW5m
b3JtYXRpb25VcGRhdGU6W2Fzc2lzdGFudCA9IFdlYWtPYmpDUHRyPFdLQWN0aW9uU2hlZXRBc3Np
c3RhbnQ+KF9hY3Rpb25TaGVldEFzc2lzdGFudC5nZXQoKSldIChXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKSB7CiAgICAgICAgICAgICBbYXNzaXN0
YW50IGludGVyYWN0aW9uRGlkU3RhcnRXaXRoUG9zaXRpb25JbmZvcm1hdGlvbjppbmZvcm1hdGlv
bl07CiAgICAgICAgIH0gZm9yUmVxdWVzdDpwb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdF07CisK
KyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICAgICAgW3NlbGYgX2NhbmNlbEltYWdl
RXh0cmFjdGlvbklmTmVlZGVkOl9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbl07CisjZW5kaWYKICAg
ICB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMjE3MSw2ICsyMTg3LDExIEBAIC0g
KEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVj
b2duaXplciBzaG91bGRSZWNvZ25pCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6
ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKSwgX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyRm9yRG91YmxlQ2xpY2suZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gWUVTOwogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAg
aWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9pbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXpl
cikKKyAgICAgICAgcmV0dXJuIFlFUzsKKyNlbmRpZgorCiAgICAgcmV0dXJuIE5POwogfQogCkBA
IC04MTA0LDEyICs4MTI1LDMxIEBAIC0gKHZvaWQpX2RyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50
ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmVwYXJlRm9yU2Vzc2lvbjooaWQKIAogICAgIFtzZWxm
IGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKIAotICAgIF9kcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUucHJlcGFyZUZvckRyYWdTZXNzaW9uKHNlc3Npb24sIGNvbXBsZXRpb24pOworICAg
IGF1dG8gcHJlcGFyZUZvclNlc3Npb24gPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRl
bnRWaWV3PihzZWxmKSwgc2Vzc2lvbiA9IHJldGFpblB0cihzZXNzaW9uKSwgY29tcGxldGlvbiA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0geworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3
ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQorICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBkcmFnT3JpZ2luID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtz
ZXNzaW9uIGxvY2F0aW9uSW5WaWV3OnNlbGZdKTsKLSAgICBfcGFnZS0+cmVxdWVzdERyYWdTdGFy
dChkcmFnT3JpZ2luLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50
OmRyYWdPcmlnaW4gdG9WaWV3OnNlbGYud2luZG93XSksIHNlbGYuX2FsbG93ZWREcmFnU291cmNl
QWN0aW9ucyk7CisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgICAgIGlmIChzdHJv
bmdTZWxmLT5faW1hZ2VFeHRyYWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25T
dGF0ZTo6QWN0aXZlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRy
YWcgc2Vzc2lvbiBmYWlsZWQ6ICVwIChkZWZlcnJpbmcgdG8gYWN0aXZlIGltYWdlIGV4dHJhY3Rp
b24pIiwgc2Vzc2lvbi5nZXQoKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgogCi0gICAgUkVMRUFTRV9MT0coRHJhZ0Fu
ZERyb3AsICJEcmFnIHNlc3Npb24gcmVxdWVzdGVkOiAlcCBhdCBvcmlnaW46IHslZCwgJWR9Iiwg
c2Vzc2lvbiwgZHJhZ09yaWdpbi54KCksIGRyYWdPcmlnaW4ueSgpKTsKKyAgICAgICAgc3Ryb25n
U2VsZi0+X2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5wcmVwYXJlRm9yRHJhZ1Nlc3Npb24oc2Vz
c2lvbi5nZXQoKSwgY29tcGxldGlvbi5nZXQoKSk7CisKKyAgICAgICAgYXV0byBkcmFnT3JpZ2lu
ID0gV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtzZXNzaW9uIGxvY2F0aW9uSW5WaWV3OnN0cm9u
Z1NlbGYuZ2V0KCldKTsKKyAgICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPnJlcXVlc3REcmFnU3Rh
cnQoZHJhZ09yaWdpbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KFtzdHJvbmdTZWxmIGNvbnZl
cnRQb2ludDpkcmFnT3JpZ2luIHRvVmlldzpbc3Ryb25nU2VsZiB3aW5kb3ddXSksIFtzdHJvbmdT
ZWxmIF9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnNdKTsKKyAgICAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJEcmFnIHNlc3Npb24gcmVxdWVzdGVkOiAlcCBhdCBvcmlnaW46IHslZCwgJWR9
Iiwgc2Vzc2lvbi5nZXQoKSwgZHJhZ09yaWdpbi54KCksIGRyYWdPcmlnaW4ueSgpKTsKKyAgICB9
OworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgW3NlbGYgX2RvQWZ0ZXJQZW5k
aW5nSW1hZ2VFeHRyYWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uXTsKKyNlbHNlCisgICAgcHJlcGFy
ZUZvclNlc3Npb24oKTsKKyNlbmRpZgogfQogCiAtIChOU0FycmF5PFVJRHJhZ0l0ZW0gKj4gKilk
cmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gaXRlbXNGb3JC
ZWdpbm5pbmdTZXNzaW9uOihpZCA8VUlEcmFnU2Vzc2lvbj4pc2Vzc2lvbgpAQCAtODk5NSw2ICs5
MDM1LDEwIEBAIC0gKHZvaWQpX3dyaXRlUHJvbWlzZWRBdHRhY2htZW50VG9QYXN0ZWJvYXJkOihX
ZWJDb3JlOjpQcm9taXNlZEF0dGFjaG1lbnRJbmZvJiYpCiAKICNlbmRpZiAvLyBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQg
PFdlYktpdEFkZGl0aW9ucy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb25BZGRpdGlvbnNBZnRlci5t
bT4KKyNlbmRpZgorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRlbnRWaWV3IChXS1Rl
c3RpbmcpCkBAIC05NDM3LDI0ICs5NDgxLDQzIEBAIC0gKHZvaWQpX2NvbnRleHRNZW51SW50ZXJh
Y3Rpb246KFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIGNvbmZpZ3VyCiAg
ICAgaWYgKCFzZWxmLndlYlZpZXcuY29uZmlndXJhdGlvbi5fbG9uZ1ByZXNzQWN0aW9uc0VuYWJs
ZWQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uKG5pbCk7CiAKLSAgICBbX3dlYlZpZXcgX2Rp
ZFNob3dDb250ZXh0TWVudV07Ci0gICAgCi0gICAgX3Nob3dMaW5rUHJldmlld3MgPSB0cnVlOwot
ICAgIGlmIChOU051bWJlciAqdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSBvYmplY3RGb3JLZXk6d2Via2l0U2hvd0xpbmtQcmV2aWV3c1ByZWZlcmVuY2VLZXld
KQotICAgICAgICBfc2hvd0xpbmtQcmV2aWV3cyA9IHZhbHVlLmJvb2xWYWx1ZTsKLQotICAgIGNv
bnN0IGF1dG8gcG9zaXRpb24gPSBbaW50ZXJhY3Rpb24gbG9jYXRpb25JblZpZXc6c2VsZl07Ci0g
ICAgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0IHsgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KHBvc2l0aW9uKSB9OwotICAgIHJlcXVlc3QuaW5jbHVkZVNuYXBz
aG90ID0gdHJ1ZTsKLSAgICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gdHJ1ZTsKLSAg
ICByZXF1ZXN0LmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyA9ICFzZWxmLl9z
aG91bGRVc2VDb250ZXh0TWVudXM7Ci0KLSAgICBbc2VsZiBkb0FmdGVyUG9zaXRpb25JbmZvcm1h
dGlvblVwZGF0ZTpbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwg
Y29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0gKFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24pIHsKKyAgICBhdXRvIGdldENvbmZpZ3VyYXRpb25BbmRD
b250aW51ZSA9IFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBp
bnRlcmFjdGlvbiA9IHJldGFpblB0cihpbnRlcmFjdGlvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbildIHsKICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYu
Z2V0KCk7CiAgICAgICAgIGlmICghc3Ryb25nU2VsZikKLSAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uKG5pbCk7Ci0gICAgICAgIFtzdHJvbmdTZWxmIGNvbnRpbnVlQ29udGV4dE1lbnVJbnRl
cmFjdGlvbjpjb21wbGV0aW9uLmdldCgpXTsKLSAgICB9IGZvclJlcXVlc3Q6cmVxdWVzdF07Cisg
ICAgICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICAg
ICAgaWYgKHN0cm9uZ1NlbGYtPl9pbWFnZUV4dHJhY3Rpb25TdGF0ZSA9PSBXZWJLaXQ6OkltYWdl
RXh0cmFjdGlvblN0YXRlOjpBY3RpdmUpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24obmlsKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgW3N0cm9u
Z1NlbGYtPl93ZWJWaWV3IF9kaWRTaG93Q29udGV4dE1lbnVdOworCisgICAgICAgIHN0cm9uZ1Nl
bGYtPl9zaG93TGlua1ByZXZpZXdzID0gdHJ1ZTsKKyAgICAgICAgaWYgKE5TTnVtYmVyICp2YWx1
ZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTp3
ZWJraXRTaG93TGlua1ByZXZpZXdzUHJlZmVyZW5jZUtleV0pCisgICAgICAgICAgICBzdHJvbmdT
ZWxmLT5fc2hvd0xpbmtQcmV2aWV3cyA9IHZhbHVlLmJvb2xWYWx1ZTsKKworICAgICAgICBjb25z
dCBhdXRvIHBvc2l0aW9uID0gW2ludGVyYWN0aW9uIGxvY2F0aW9uSW5WaWV3OnN0cm9uZ1NlbGYu
Z2V0KCldOworICAgICAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJl
cXVlc3QgeyBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQocG9zaXRpb24pIH07CisgICAgICAgIHJl
cXVlc3QuaW5jbHVkZVNuYXBzaG90ID0gdHJ1ZTsKKyAgICAgICAgcmVxdWVzdC5pbmNsdWRlTGlu
a0luZGljYXRvciA9IHRydWU7CisgICAgICAgIHJlcXVlc3QubGlua0luZGljYXRvclNob3VsZEhh
dmVMZWdhY3lNYXJnaW5zID0gIVtzdHJvbmdTZWxmIF9zaG91bGRVc2VDb250ZXh0TWVudXNdOwor
CisgICAgICAgIFtzdHJvbmdTZWxmIGRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOlt3
ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHN0cm9uZ1NlbGYuZ2V0KCkpLCBj
b21wbGV0aW9uXSAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbikgewor
ICAgICAgICAgICAgaWYgKGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpKQorICAgICAg
ICAgICAgICAgIFtzdHJvbmdTZWxmIGNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb21w
bGV0aW9uLmdldCgpXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uKG5pbCk7CisgICAgICAgIH0gZm9yUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICB9OworCisjaWYg
RU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgW3NlbGYgX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VF
eHRyYWN0aW9uOmdldENvbmZpZ3VyYXRpb25BbmRDb250aW51ZV07CisjZWxzZQorICAgIGdldENv
bmZpZ3VyYXRpb25BbmRDb250aW51ZSgpOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpY29udGludWVD
b250ZXh0TWVudUludGVyYWN0aW9uOih2b2lkKF4pKFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9u
ICopKWNvbnRpbnVlV2l0aENvbnRleHRNZW51Q29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0ltYWdlRXh0cmFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAyNWUyYjZmNDNkNjU0ZDliNGJlMDI3MjhiNjNl
YjQ0ZWNhMmEwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
RU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKKyNpbmNsdWRlIDxVSUtpdC9VSUtpdC5oPgorCitA
Y2xhc3MgV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplcjsKKworQHByb3RvY29sIFdL
SW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZSA8VUlHZXN0dXJlUmVjb2du
aXplckRlbGVnYXRlPgorLSAodm9pZClpbWFnZUV4dHJhY3Rpb25HZXN0dXJlRGlkQmVnaW46KFdL
SW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlOworQGVuZAorCitAaW50
ZXJmYWNlIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgOiBVSUxvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihVSVZp
ZXcgPFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZT4gKilkZWxlZ2F0
ZTsKKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElN
QUdFX0VYVFJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE1YmRlZTNkMmM0MzU5NjhmOTc0ZWEyZGYwMzMzNjNmMDBmYTU4YzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbWFnZUV4dHJhY3Rpb25HZXN0
dXJlUmVjb2duaXplci5tbQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIu
aCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9O
KQorCitAaW1wbGVtZW50YXRpb24gV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplciB7
CisgICAgX193ZWFrIFVJVmlldyA8V0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplckRl
bGVnYXRlPiAqX2ltYWdlRXh0cmFjdGlvbkRlbGVnYXRlOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEZWxlZ2F0ZTooVUlWaWV3IDxXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyRGVsZWdhdGU+ICopZGVsZWdhdGUKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pbWFnZUV4dHJhY3Rpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgIHNlbGYuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBzZWxmLm1pbmlt
dW1QcmVzc0R1cmF0aW9uID0gMC4xOworICAgIHNlbGYuYWxsb3dhYmxlTW92ZW1lbnQgPSAxOwor
ICAgIHNlbGYubmFtZSA9IEAiSW1hZ2UgZXh0cmFjdGlvbiI7CisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpc2V0U3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZQorewor
ICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9IHNlbGYuc3RhdGU7CisgICAgW3N1cGVyIHNldFN0YXRl
OnN0YXRlXTsKKworICAgIGF1dG8gbmV3U3RhdGUgPSBzZWxmLnN0YXRlOworICAgIGlmIChwcmV2
aW91c1N0YXRlICE9IG5ld1N0YXRlICYmIG5ld1N0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZUJlZ2FuKQorICAgICAgICBbX2ltYWdlRXh0cmFjdGlvbkRlbGVnYXRlIGltYWdlRXh0cmFj
dGlvbkdlc3R1cmVEaWRCZWdpbjpzZWxmXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNTI4ZjQ3MWY0NjNk
ZjZjMTEzMGEzZmI4Mzc3NmJmMWIyYWJlZjk0Li43NWNiNzVmNDAyMjcxZTY5YjdiZWYyNGRiYjE5
YTk0NGY3ZGJkNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE5MzQsNiArMTkzNCw3IEBACiAJCUY0OEQyQTg1MjE1ODNBN0UwMEM2
NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0OEQyQTg0MjE1ODNBMDIwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCAqLzsgfTsK
IAkJRjQ5NkE0MzExRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5NkE0MkYx
RjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovOyB9OwogCQlG
NEE2RDZCQzI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QTZENkJCMjU0Q0Ez
RTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICovOyB9OworCQlGNEJBMzNG
MjI1NzU3RTg5MDAwQTNDRTggLyogV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRCQTMzRjAy
NTc1N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAq
LzsgfTsKIAkJRjRDQjA5RTUyMjVENUEwOTAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBv
bGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRD
QjA5RTQyMjVENUEwMzAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBvbGljeS5oICovOyB9
OwogCQlGNEQ1RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5o
ICovOyB9OwogCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyLmggKi87IH07CkBAIC01NjAyLDYgKzU2MDMsOCBAQAogCQlGNEE2RDZCQjI1NENBM0U5
MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRB
QzY1NUUyMkEzMTQwRTAwQTA1NjA3IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlByZWZlcmVuY2Vz
RGVmYXVsdFZhbHVlc0lPUy5tbTsgcGF0aCA9IGlvcy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1
ZXNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjM3OEQwMjFEREJCQUIw
MDk1QTM3OCAvKiBXZWJVbmRvU3RlcElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVuZG9TdGVwSUQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRCQTMzRjAyNTc1N0U4OTAwMEEzQ0U4
IC8qIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9zL1dLSW1hZ2VF
eHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjRCQTMzRjEyNTc1N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Q0IwOUU0MjI1RDVBMDMw
MDg5MTQ4NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
c2l0ZU1lZGlhU291cmNlUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTFBMjA2MDg3QTEwMDM4QkJB
OCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBw
YXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI3OSw2ICs3MjgyLDggQEAKIAkJCQkwRkNCNEU0MTE4
QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3Jp
Z2luLm1tICovLAogCQkJCUY0REI1NEU0MjMxOUU3MzMwMDlFMzE1NSAvKiBXS0hpZ2hsaWdodExv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmggKi8sCiAJCQkJRjREQjU0RTUyMzE5RTczMzAwOUUz
MTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0gKi8sCisJCQkJ
RjRCQTMzRjAyNTc1N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIuaCAqLywKKwkJCQlGNEJBMzNGMTI1NzU3RTg5MDAwQTNDRTggLyogV0tJbWFnZUV4dHJh
Y3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQk5MzNERjgyRDFCM0JDMDkwMDBBRUE5
RTMgLyogV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5oICovLAogCQkJCTkzM0RGODJGMUIz
QkMwQjQwMEFFQTlFMyAvKiBXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tICovLAogCQkJ
CTJERDVFMTI3MjEwQURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iu
aCAqLywKQEAgLTEyMDU1LDYgKzEyMDYwLDcgQEAKIAkJCQk1MTIzQ0YxQzEzM0QyNjBBMDA1NkY4
MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRjZBQzMxMkM5
MUYzNDAwOEY5QzM1IC8qIFdLSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QUNBMTJD
OTFGNTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0QkEzM0Yy
MjU3NTdFODkwMDBBM0NFOCAvKiBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzNERjgyRTFCM0JDMDkwMDBBRUE5RTMgLyogV0tJbWFnZVBy
ZXZpZXdWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMyMUQ1ODYxQTM4RUUz
QzAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMyMUQ1OEExQTM4RjE5NjAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uVHlwZXMu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBlNTc1ZmNhMDE5ZjZiMTJhOGY0ZGFlNWNiMWQ2ODJk
YTRlNDM2ZWI5Li4zODM4YWIzMjZkZDgzOTZiNjAxMDdjYmEzZjYyNDUwNzRjOTdmNzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMjYzNCw3ICsyNjM0LDcgQEAgc3RhdGljIHZvaWQgaW1hZ2VQb3NpdGlvbkluZm9ybWF0
aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludGUKICAgICBpbmZv
LmltYWdlVVJMID0gZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHJlbmRlckltYWdlLmNh
Y2hlZEltYWdlKCktPnVybCgpLnN0cmluZygpKTsKICAgICBpbmZvLmlzQW5pbWF0ZWRJbWFnZSA9
IGltYWdlLT5pc0FuaW1hdGVkKCk7CiAKLSAgICBpZiAoIXJlcXVlc3QuaW5jbHVkZVNuYXBzaG90
KQorICAgIGlmICghcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgJiYgIXJlcXVlc3QuaW5jbHVkZUlt
YWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRTaXplIHNjcmVlblNpemVJblBp
eGVscyA9IHNjcmVlblNpemUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415176</attachid>
            <date>2020-12-01 16:11:47 -0800</date>
            <delta_ts>2020-12-01 16:54:55 -0800</delta_ts>
            <desc>Address comments</desc>
            <filename>bug-219398-20201201161146.patch</filename>
            <type>text/plain</type>
            <size>25683</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQwZDczYTRiMmVjZjcxYzMy
MTQ3NjNiNWI1NWM5NzY1MWJjNjU0NTIuLjBhMjc1ODU5MDE0YWMyMjc1ZTUzMGFjZDA4ZjM3ZDI0
MjZkYTVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTItMDEgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gU3VwcG9ydCBp
bWFnZSBleHRyYWN0aW9uIGludGVyYWN0aW9ucyBmb3IgYWNjZXNzaWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5Mzk4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83MDc0NDkxND4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vz
c28uCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBhIG5ldyBhY2Nlc3NpYmlsaXR5IGZlYXR1
cmUgcmVsYXRlZCB0byBpbWFnZXMuIFJlZmVyIHRvIHRoZSBidWcgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgICAgICAqIFNoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q6
OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
Ojppc1ZhbGlkRm9yUmVxdWVzdCBjb25zdCk6CisgICAgICAgICogU2hhcmVkL2lvcy9JbnRlcmFj
dGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oOgorCisgICAgICAgIEFkZCBhIG5ldyBmbGFnIHRvIHJl
cXVlc3QgaW1hZ2UgZGF0YSB2aWEgcG9zaXRpb24gaW5mb3JtYXRpb24uIFRoaXMgZmxhZyB3b3Jr
cyBzaW1pbGFybHkgdG8gdGhlIGV4aXN0aW5nCisgICAgICAgIGBpbmNsdWRlU25hcHNob3RgIGZs
YWcsIGV4Y2VwdCB0aGF0IGl0IG9ubHkgZ3JhYnMgZGF0YSB3aGVuIHRoZSBoaXQtdGVzdGVkIG5v
ZGUgaXMgYW4gaW1hZ2UuIEFzIHN1Y2gsIGEgcG9zaXRpb24KKyAgICAgICAgaW5mb3JtYXRpb24g
cmVxdWVzdCB3aXRoIHRoZSBgaW5jbHVkZVNuYXBzaG90YCBmbGFnIHNldCBpcyB2YWxpZCBmb3Ig
YW4gaWRlbnRpY2FsIHJlcXVlc3Qgd2l0aCB0aGlzIG5ldworICAgICAgICBgaW5jbHVkZUltYWdl
RGF0YWAgZmxhZyBzZXQsIGJ1dCBub3QgdmljZSB2ZXJzYS4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bToKKworICAgICAgICBBZGQgdmFyaW91cyBleHRlbnNpb24gcG9pbnRzIGZvciBuZXcgV2ViS2l0
QWRkaXRpb25zIHNuaXBwZXRzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0VXBJbnRl
cmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFuVXBJbnRlcmFjdGlvbl0p
OgorCisgICAgICAgIENhbGwgbmV3IG1ldGhvZHMgdG8gc2V0IHVwIGFuZCB0ZWFyIGRvd24gdGhl
IGltYWdlIGV4dHJhY3Rpb24gaW50ZXJhY3Rpb24gKGRlZmluZWQgaW4gV2ViS2l0QWRkaXRpb25z
KS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6
XSk6CisKKyAgICAgICAgVXBvbiBzdGFydGluZyBhIG5ldyBnZXN0dXJlLCByZXNldCB0aGUgYWN0
aXZlIChvciBwZW5kaW5nKSBpbWFnZSBleHRyYWN0aW9uIGludGVyYWN0aW9uLCBpZiBhcHByb3By
aWF0ZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGdlc3R1cmVSZWNvZ25pemVyOnNob3Vs
ZFJlY29nbml6ZVNpbXVsdGFuZW91c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyOl0pOgorCisgICAg
ICAgIEFsbG93IHRoZSBpbWFnZSBleHRyYWN0aW9uIGdlc3R1cmUgdG8gZmlyZSBhbG9uZ3NpZGUg
YW55IG90aGVyIGdlc3R1cmUuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZHJhZ0ludGVy
YWN0aW9uOnByZXBhcmVGb3JTZXNzaW9uOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2NvbnRleHRNZW51SW50ZXJhY3Rpb246Y29uZmlndXJhdGlvbkZvck1lbnVBdExv
Y2F0aW9uOmNvbXBsZXRpb246XSk6CisKKyAgICAgICAgVGhlc2UgZXhpc3RpbmcgaW50ZXJhY3Rp
b25zIG1heSBjb25mbGljdCB3aXRoIHBlbmRpbmcgaW1hZ2UgZXh0cmFjdGlvbiBpbnRlcmFjdGlv
bnMuIEx1Y2tpbHksIHNpbmNlIHRoZXNlCisgICAgICAgIGludGVyYWN0aW9ucyBhcmUgYm90aCBh
c3luY2hyb25vdXMsIHdlJ3JlIGFibGUgdG8gZGVmZXIgdGhlbSB1bnRpbCBhbnkgcGVuZGluZyBp
bWFnZSBleHRyYWN0aW9uIHJlcXVlc3QgaGFzCisgICAgICAgIGZpbmlzaGVkLCB0byBkZXRlcm1p
bmUgd2hldGhlciBvciBub3QgdGhleSBzaG91bGQgY29tbWVuY2UuIEluIGJvdGggY2FzZXMsIGlt
YWdlIGV4dHJhY3Rpb24gc2hvdWxkIHRha2UKKyAgICAgICAgcHJlY2VkZW5jZSBvdmVyIGRyYWdn
aW5nIGFuZCBjb250ZXh0IG1lbnVzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0ltYWdl
RXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOgorCisgICAgICAgIEFkZCBhIG5l
dyBsb25nIHByZXNzIGdlc3R1cmUgcmVjb2duaXplciB0aGF0IGZpcmVzIG9uIGEgdmVyeSBzaG9y
dCAoMTAwbXMpIGRlbGF5LiBUaGlzIGdlc3R1cmUgaXMgdXNlZCB0bworICAgICAgICBwcmVmbGln
aHQgaW1hZ2UgZXh0cmFjdGlvbiByZXF1ZXN0cyBhaGVhZCBvZiB0aGUgb3RoZXIgbG9uZyBwcmVz
cyBnZXN0dXJlcyAoaW4gcGFydGljdWxhciwgY29udGV4dCBtZW51cyksIHN1Y2gKKyAgICAgICAg
dGhhdCB0aGVzZSBvdGhlciBnZXN0dXJlcyBzaG91bGQgYmUgbWluaW1hbGx5IGltcGFjdGVkIGJ5
IHRoZSB0aW1lIHJlcXVpcmVkIHRvIHBlcmZvcm0gaW1hZ2UgZXh0cmFjdGlvbi4KKworICAgICAg
ICBUaGlzIGlzIHN0aWxsIGEgbG9uZyBwcmVzcyBnZXN0dXJlIGluc3RlYWQgb2YgYSByZWd1bGFy
IGdlc3R1cmUgcmVjb2duaXplciwgc2luY2UgcHJlZmxpZ2h0aW5nIGltYWdlIGV4dHJhY3Rpb24K
KyAgICAgICAgcmVxdWVzdHMgY291bGQgYmUgZXhwZW5zaXZlIGlmIHBlcmZvcm1lZCBkdXJpbmcg
ZXZlcnkgc2luZ2xlIGdlc3R1cmUgKGkuZS4gc2Nyb2xsaW5nLCB0YXBzLCBldGMpLgorCisgICAg
ICAgICgtW1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgaW5pdFdpdGhEZWxlZ2F0
ZTpdKToKKyAgICAgICAgKC1bV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplciBzZXRT
dGF0ZTpdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OmltYWdlUG9zaXRpb25JbmZvcm1hdGlvbik6CisKIDIwMjAtMTItMDEgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgdGVsZW1l
dHJ5IGZvciBzYW5kYm94IHJ1bGVzIHdlIGJlbGlldmUgYXJlIHVudXNlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dC5jcHAKaW5kZXggNGRmMDJlMTcyMzFiNmJkYThjNjE1ZWVlNjJmNjY1ZWM2NDA2YmIwZi4uYmUx
NTg3YmFjOTAyYTcxZmQzYjU0YzU2YmI3OGE4ZDVhMzE0YjI0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qu
Y3BwCkBAIC00MCw2ICs0MCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBpbmNs
dWRlTGlua0luZGljYXRvcjsKICAgICBlbmNvZGVyIDw8IGluY2x1ZGVDYXJldENvbnRleHQ7CiAg
ICAgZW5jb2RlciA8PCBpbmNsdWRlSGFzRG91YmxlQ2xpY2tIYW5kbGVyOworICAgIGVuY29kZXIg
PDwgaW5jbHVkZUltYWdlRGF0YTsKICAgICBlbmNvZGVyIDw8IGxpbmtJbmRpY2F0b3JTaG91bGRI
YXZlTGVnYWN5TWFyZ2luczsKIH0KIApAQCAtNjAsNiArNjEsOSBAQCBib29sIEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBJbnRlcmFj
dGlvbkluZgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVIYXNEb3VibGVD
bGlja0hhbmRsZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pbmNsdWRlSW1hZ2VEYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubGlua0luZGljYXRvclNob3VsZEhhdmVM
ZWdhY3lNYXJnaW5zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MCw2ICs4NCwxMCBA
QCBib29sIEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0Ojppc1ZhbGlkRm9yUmVxdWVzdChj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aQogICAgIGlmIChvdGhlci5pbmNsdWRlSGFzRG91Ymxl
Q2xpY2tIYW5kbGVyICYmICFpbmNsdWRlSGFzRG91YmxlQ2xpY2tIYW5kbGVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBJZiBgaW5jbHVkZVNuYXBzaG90YCBpcyBzZXQsIHRoZW4g
d2Ugd2lsbCBpbmNsdWRlIGRhdGEgZm9yIGltYWdlcyBhcyB3ZWxsLgorICAgIGlmIChvdGhlci5p
bmNsdWRlSW1hZ2VEYXRhICYmICFpbmNsdWRlSW1hZ2VEYXRhICYmICFpbmNsdWRlU25hcHNob3Qp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChvdGhlci5saW5rSW5kaWNhdG9yU2hv
dWxkSGF2ZUxlZ2FjeU1hcmdpbnMgIT0gbGlua0luZGljYXRvclNob3VsZEhhdmVMZWdhY3lNYXJn
aW5zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKaW5kZXggYWYyNTUz
ZGM2MTA1MzI2OGVhMzFhM2ZlZjRmNmY2MTZjNjZkZWJjNC4uZDAyMGU4ZDEyNzZkYjE1ZjNiYTY2
YjBkZjkzZDQxYzE3NzUxNDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0ludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmgKQEAgLTQzLDYgKzQzLDcgQEAg
c3RydWN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHsKICAgICBib29sIGluY2x1ZGVM
aW5rSW5kaWNhdG9yIHsgZmFsc2UgfTsKICAgICBib29sIGluY2x1ZGVDYXJldENvbnRleHQgeyBm
YWxzZSB9OwogICAgIGJvb2wgaW5jbHVkZUhhc0RvdWJsZUNsaWNrSGFuZGxlciB7IHRydWUgfTsK
KyAgICBib29sIGluY2x1ZGVJbWFnZURhdGEgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBsaW5rSW5k
aWNhdG9yU2hvdWxkSGF2ZUxlZ2FjeU1hcmdpbnMgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggOTk1MTgwNzMyODBlOWM5NWEyYjI1ZjAwYmM4YmZiMzg4NzYyMTI0MS4uZmNk
ZjJmNjRjOWEyYzk5YzMwZjg2ZDMzMGNiYzQ2MmE3MWRkNGFhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtNDYyLDYgKzQ2Miw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tEZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplci5tbQogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0K
IFVJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2lu
Lm1tCiBVSVByb2Nlc3MvaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIu
bW0KK1VJUHJvY2Vzcy9pb3MvV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbQog
VUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KIFVJUHJvY2Vzcy9p
b3MvV0tNb3VzZURldmljZU9ic2VydmVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJl
UmVjb2duaXplci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDY5M2U2NDFlOTMwNTNlZjg2NzU2MDVmOTli
NzJjMDQ0YTIxMjMwN2UuLmE4NWRmYjA1NGI3NGQzMTZkOWZlZmI0N2UwNTc5NGMxODAwZDgyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgKQEAgLTExOCw2ICsxMTgsMTAgQEAgY2xhc3MgV2ViUGFnZVByb3h5Owog
QGNsYXNzIF9VSUxvb2t1cEdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIF9VSUhpZ2hsaWdodFZp
ZXc7CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbkFkZGl0aW9uc0JlZm9yZS5oPgorI2VuZGlmCisK
IHR5cGVkZWYgdm9pZCAoXlVJV0tBdXRvY29ycmVjdGlvbkNvbXBsZXRpb25IYW5kbGVyKShVSVdL
QXV0b2NvcnJlY3Rpb25SZWN0cyAqcmVjdHNGb3JJbnB1dCk7CiB0eXBlZGVmIHZvaWQgKF5VSVdL
QXV0b2NvcnJlY3Rpb25Db250ZXh0SGFuZGxlcikoVUlXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCAq
YXV0b2NvcnJlY3Rpb25Db250ZXh0KTsKIHR5cGVkZWYgdm9pZCAoXlVJV0tEaWN0YXRpb25Db250
ZXh0SGFuZGxlcikoTlNTdHJpbmcgKnNlbGVjdGVkVGV4dCwgTlNTdHJpbmcgKmJlZm9yZVRleHQs
IE5TU3RyaW5nICphZnRlclRleHQpOwpAQCAtNDI0LDYgKzQyOCwxNyBAQCBzdHJ1Y3QgV0tBdXRv
Q29ycmVjdGlvbkRhdGEgewogI2VuZGlmCiAKICAgICBWZWN0b3I8QmxvY2tQdHI8dm9pZCgpPj4g
X2FjdGlvbnNUb1BlcmZvcm1BZnRlclJlc2V0dGluZ1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVy
OworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgUmV0YWluUHRyPFdLSW1hZ2VF
eHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXI+IF9pbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2du
aXplcjsKKyAgICBXZWJLaXQ6OkltYWdlRXh0cmFjdGlvblN0YXRlIF9pbWFnZUV4dHJhY3Rpb25T
dGF0ZTsKKyAgICBDR1JlY3QgX2ltYWdlRXh0cmFjdGlvbkludGVyYWN0aW9uQm91bmRzOworICAg
IFZlY3RvcjxCbG9ja1B0cjx2b2lkKCk+PiBfYWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0lt
YWdlRXh0cmFjdGlvbjsKKyNlbmRpZgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNp
bXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb25BZGRpdGlvbnNB
ZnRlci5oPgorI2VuZGlmCiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGI5OGU4NzExMjE3
ODQ4OTEzMGVhZTFjOGJlNDU3NTcyYzUxOTU2ODMuLjcwOTI2NzJlODYzNTU1OGU2M2E5OTI0ZGYw
YTdkODE0YzY3NDRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTM4LDYgKzEzOCwxMCBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2ltcG9ydCA8V2ViS2l0QWRk
aXRpb25zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbkFkZGl0aW9uc0JlZm9yZS5tbT4KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KQEAgLTg5Miw2ICs4OTYsMTAgQEAgLSAo
dm9pZClzZXRVcEludGVyYWN0aW9uCiAgICAgX3BhZ2UtPnByb2Nlc3MoKS51cGRhdGVUZXh0Q2hl
Y2tlclN0YXRlKCk7CiAgICAgX3BhZ2UtPnNldFNjcmVlbklzQmVpbmdDYXB0dXJlZChbW1tzZWxm
IHdpbmRvd10gc2NyZWVuXSBpc0NhcHR1cmVkXSk7CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFD
VElPTikKKyAgICBbc2VsZiBfc2V0VXBJbWFnZUV4dHJhY3Rpb25dOworI2VuZGlmCisKICAgICBf
aGFzU2V0VXBJbnRlcmFjdGlvbnMgPSBZRVM7CiB9CiAKQEAgLTEwNDUsNiArMTA1MywxMCBAQCAt
ICh2b2lkKWNsZWFuVXBJbnRlcmFjdGlvbgogICAgIF9kYXRhTGlzdFRleHRTdWdnZXN0aW9ucyA9
IG5pbDsKICNlbmRpZgogCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgW3NlbGYg
X3RlYXJEb3duSW1hZ2VFeHRyYWN0aW9uXTsKKyNlbmRpZgorCiAgICAgX2hhc1NldFVwSW50ZXJh
Y3Rpb25zID0gTk87CiAgICAgX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29ucyA9IHsg
fTsKIApAQCAtMTUwOCw2ICsxNTIwLDEwIEBAIC0gKHZvaWQpX3dlYlRvdWNoRXZlbnRzUmVjb2du
aXplZDooVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlCiAgICAg
ICAgIFtzZWxmIGRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOlthc3Npc3RhbnQgPSBX
ZWFrT2JqQ1B0cjxXS0FjdGlvblNoZWV0QXNzaXN0YW50PihfYWN0aW9uU2hlZXRBc3Npc3RhbnQu
Z2V0KCkpXSAoV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBpbmZvcm1h
dGlvbikgewogICAgICAgICAgICAgW2Fzc2lzdGFudCBpbnRlcmFjdGlvbkRpZFN0YXJ0V2l0aFBv
c2l0aW9uSW5mb3JtYXRpb246aW5mb3JtYXRpb25dOwogICAgICAgICB9IGZvclJlcXVlc3Q6cG9z
aXRpb25JbmZvcm1hdGlvblJlcXVlc3RdOworCisjaWYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04p
CisgICAgICAgIFtzZWxmIF9jYW5jZWxJbWFnZUV4dHJhY3Rpb25JZk5lZWRlZDpfbGFzdEludGVy
YWN0aW9uTG9jYXRpb25dOworI2VuZGlmCiAgICAgfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKQEAgLTIxNzEsNiArMjE4NywxMSBAQCAtIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdl
c3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkUmVjb2duaQogICAgIGlm
IChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBf
ZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF9kb3VibGVUYXBHZXN0dXJlUmVjb2du
aXplckZvckRvdWJsZUNsaWNrLmdldCgpKSkKICAgICAgICAgcmV0dXJuIFlFUzsKIAorI2lmIEVO
QUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfaW1h
Z2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIpCisgICAgICAgIHJldHVybiBZRVM7CisjZW5k
aWYKKwogICAgIHJldHVybiBOTzsKIH0KIApAQCAtODEwNCwxMiArODEyNSwzMSBAQCAtICh2b2lk
KV9kcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJlcGFy
ZUZvclNlc3Npb246KGlkCiAKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0
ZV07CiAKLSAgICBfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLnByZXBhcmVGb3JEcmFnU2Vzc2lv
bihzZXNzaW9uLCBjb21wbGV0aW9uKTsKKyAgICBhdXRvIHByZXBhcmVGb3JTZXNzaW9uID0gW3dl
YWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIHNlc3Npb24gPSByZXRh
aW5QdHIoc2Vzc2lvbiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildIHsK
KyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlmICgh
c3Ryb25nU2VsZikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZHJhZ09yaWdpbiA9
IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChbc2Vzc2lvbiBsb2NhdGlvbkluVmlldzpzZWxmXSk7
Ci0gICAgX3BhZ2UtPnJlcXVlc3REcmFnU3RhcnQoZHJhZ09yaWdpbiwgV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KFtzZWxmIGNvbnZlcnRQb2ludDpkcmFnT3JpZ2luIHRvVmlldzpzZWxmLndpbmRv
d10pLCBzZWxmLl9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMpOworI2lmIEVOQUJMRShJTUFHRV9F
WFRSQUNUSU9OKQorICAgICAgICBpZiAoc3Ryb25nU2VsZi0+X2ltYWdlRXh0cmFjdGlvblN0YXRl
ID09IFdlYktpdDo6SW1hZ2VFeHRyYWN0aW9uU3RhdGU6OkFjdGl2ZSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24gZmFpbGVkOiAlcCAoZGVmZXJy
aW5nIHRvIGFjdGl2ZSBpbWFnZSBleHRyYWN0aW9uKSIsIHNlc3Npb24uZ2V0KCkpOworICAgICAg
ICAgICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5k
aWYKIAotICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIHJlcXVlc3Rl
ZDogJXAgYXQgb3JpZ2luOiB7JWQsICVkfSIsIHNlc3Npb24sIGRyYWdPcmlnaW4ueCgpLCBkcmFn
T3JpZ2luLnkoKSk7CisgICAgICAgIHN0cm9uZ1NlbGYtPl9kcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUucHJlcGFyZUZvckRyYWdTZXNzaW9uKHNlc3Npb24uZ2V0KCksIGNvbXBsZXRpb24uZ2V0KCkp
OworCisgICAgICAgIGF1dG8gZHJhZ09yaWdpbiA9IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChb
c2Vzc2lvbiBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxmLmdldCgpXSk7CisgICAgICAgIHN0cm9u
Z1NlbGYtPl9wYWdlLT5yZXF1ZXN0RHJhZ1N0YXJ0KGRyYWdPcmlnaW4sIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChbc3Ryb25nU2VsZiBjb252ZXJ0UG9pbnQ6ZHJhZ09yaWdpbiB0b1ZpZXc6W3N0
cm9uZ1NlbGYgd2luZG93XV0pLCBbc3Ryb25nU2VsZiBfYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25z
XSk7CisgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIHJlcXVl
c3RlZDogJXAgYXQgb3JpZ2luOiB7JWQsICVkfSIsIHNlc3Npb24uZ2V0KCksIGRyYWdPcmlnaW4u
eCgpLCBkcmFnT3JpZ2luLnkoKSk7CisgICAgfTsKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNU
SU9OKQorICAgIFtzZWxmIF9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpwcmVwYXJlRm9y
U2Vzc2lvbl07CisjZWxzZQorICAgIHByZXBhcmVGb3JTZXNzaW9uKCk7CisjZW5kaWYKIH0KIAog
LSAoTlNBcnJheTxVSURyYWdJdGVtICo+ICopZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFj
dGlvbiAqKWludGVyYWN0aW9uIGl0ZW1zRm9yQmVnaW5uaW5nU2Vzc2lvbjooaWQgPFVJRHJhZ1Nl
c3Npb24+KXNlc3Npb24KQEAgLTg5OTUsNiArOTAzNSwxMCBAQCAtICh2b2lkKV93cml0ZVByb21p
c2VkQXR0YWNobWVudFRvUGFzdGVib2FyZDooV2ViQ29yZTo6UHJvbWlzZWRBdHRhY2htZW50SW5m
byYmKQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uQWRkaXRpb25zQWZ0ZXIubW0+CisjZW5kaWYKKwogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gV0tDb250ZW50VmlldyAoV0tUZXN0aW5nKQpAQCAtOTQzNywyNCArOTQ4MSw0MyBA
QCAtICh2b2lkKV9jb250ZXh0TWVudUludGVyYWN0aW9uOihVSUNvbnRleHRNZW51SW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiBjb25maWd1cgogICAgIGlmICghc2VsZi53ZWJWaWV3LmNvbmZpZ3Vy
YXRpb24uX2xvbmdQcmVzc0FjdGlvbnNFbmFibGVkKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bihuaWwpOwogCi0gICAgW193ZWJWaWV3IF9kaWRTaG93Q29udGV4dE1lbnVdOwotICAgIAotICAg
IF9zaG93TGlua1ByZXZpZXdzID0gdHJ1ZTsKLSAgICBpZiAoTlNOdW1iZXIgKnZhbHVlID0gW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OndlYmtpdFNo
b3dMaW5rUHJldmlld3NQcmVmZXJlbmNlS2V5XSkKLSAgICAgICAgX3Nob3dMaW5rUHJldmlld3Mg
PSB2YWx1ZS5ib29sVmFsdWU7Ci0KLSAgICBjb25zdCBhdXRvIHBvc2l0aW9uID0gW2ludGVyYWN0
aW9uIGxvY2F0aW9uSW5WaWV3OnNlbGZdOwotICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QgcmVxdWVzdCB7IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChwb3NpdGlvbikg
fTsKLSAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCA9IHRydWU7Ci0gICAgcmVxdWVzdC5pbmNs
dWRlTGlua0luZGljYXRvciA9IHRydWU7Ci0gICAgcmVxdWVzdC5saW5rSW5kaWNhdG9yU2hvdWxk
SGF2ZUxlZ2FjeU1hcmdpbnMgPSAhc2VsZi5fc2hvdWxkVXNlQ29udGV4dE1lbnVzOwotCi0gICAg
W3NlbGYgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6W3dlYWtTZWxmID0gV2Vha09i
akNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbildIChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uKSB7Cisg
ICAgYXV0byBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUgPSBbd2Vha1NlbGYgPSBXZWFrT2Jq
Q1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKSwgaW50ZXJhY3Rpb24gPSByZXRhaW5QdHIoaW50ZXJh
Y3Rpb24pLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXSB7CiAgICAgICAg
IGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAgICBpZiAoIXN0cm9uZ1Nl
bGYpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbihuaWwpOwotICAgICAgICBbc3Ryb25n
U2VsZiBjb250aW51ZUNvbnRleHRNZW51SW50ZXJhY3Rpb246Y29tcGxldGlvbi5nZXQoKV07Ci0g
ICAgfSBmb3JSZXF1ZXN0OnJlcXVlc3RdOworICAgICAgICAgICAgcmV0dXJuOworCisjaWYgRU5B
QkxFKElNQUdFX0VYVFJBQ1RJT04pCisgICAgICAgIGlmIChzdHJvbmdTZWxmLT5faW1hZ2VFeHRy
YWN0aW9uU3RhdGUgPT0gV2ViS2l0OjpJbWFnZUV4dHJhY3Rpb25TdGF0ZTo6QWN0aXZlKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uKG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyNlbmRpZgorCisgICAgICAgIFtzdHJvbmdTZWxmLT5fd2ViVmlldyBfZGlkU2hvd0NvbnRl
eHRNZW51XTsKKworICAgICAgICBzdHJvbmdTZWxmLT5fc2hvd0xpbmtQcmV2aWV3cyA9IHRydWU7
CisgICAgICAgIGlmIChOU051bWJlciAqdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6d2Via2l0U2hvd0xpbmtQcmV2aWV3c1ByZWZlcmVu
Y2VLZXldKQorICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3Nob3dMaW5rUHJldmlld3MgPSB2YWx1
ZS5ib29sVmFsdWU7CisKKyAgICAgICAgY29uc3QgYXV0byBwb3NpdGlvbiA9IFtpbnRlcmFjdGlv
biBsb2NhdGlvbkluVmlldzpzdHJvbmdTZWxmLmdldCgpXTsKKyAgICAgICAgV2ViS2l0OjpJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0IHsgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KHBvc2l0aW9uKSB9OworICAgICAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCA9IHRydWU7
CisgICAgICAgIHJlcXVlc3QuaW5jbHVkZUxpbmtJbmRpY2F0b3IgPSB0cnVlOworICAgICAgICBy
ZXF1ZXN0LmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyA9ICFbc3Ryb25nU2Vs
ZiBfc2hvdWxkVXNlQ29udGV4dE1lbnVzXTsKKworICAgICAgICBbc3Ryb25nU2VsZiBkb0FmdGVy
UG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZTpbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRl
bnRWaWV3PihzdHJvbmdTZWxmLmdldCgpKSwgY29tcGxldGlvbl0gKFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHN0cm9uZ1Nl
bGYgPSB3ZWFrU2VsZi5nZXQoKSkKKyAgICAgICAgICAgICAgICBbc3Ryb25nU2VsZiBjb250aW51
ZUNvbnRleHRNZW51SW50ZXJhY3Rpb246Y29tcGxldGlvbi5nZXQoKV07CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgY29tcGxldGlvbihuaWwpOworICAgICAgICB9IGZvclJlcXVl
c3Q6cmVxdWVzdF07CisgICAgfTsKKworI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorICAg
IFtzZWxmIF9kb0FmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjpnZXRDb25maWd1cmF0aW9uQW5k
Q29udGludWVdOworI2Vsc2UKKyAgICBnZXRDb25maWd1cmF0aW9uQW5kQ29udGludWUoKTsKKyNl
bmRpZgogfQogCiAtICh2b2lkKWNvbnRpbnVlQ29udGV4dE1lbnVJbnRlcmFjdGlvbjoodm9pZChe
KShVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAqKSljb250aW51ZVdpdGhDb250ZXh0TWVudUNv
bmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0lt
YWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4
MWFiMWI3ZjAyZGNiZGNkM2JhNjNmZDhlMDJmODg2MGE3ZTIzNDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVj
b2duaXplci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorCisj
aW5jbHVkZSA8VUlLaXQvVUlLaXQuaD4KKworQGNsYXNzIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVy
ZVJlY29nbml6ZXI7CisKK0Bwcm90b2NvbCBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyRGVsZWdhdGUgPFVJR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZT4KKy0gKHZvaWQpaW1hZ2VF
eHRyYWN0aW9uR2VzdHVyZURpZEJlZ2luOihXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyICopZ2VzdHVyZTsKK0BlbmQKKworQGludGVyZmFjZSBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyIDogVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhJbWFnZUV4dHJhY3Rpb25HZXN0dXJlRGVsZWdhdGU6KFVJVmlldyA8V0tJ
bWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPiAqKWRlbGVnYXRlOworCitA
ZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU1BR0VfRVhU
UkFDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0ltYWdl
RXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZi
ZmNhZjhmMTliNTVmNTAyYzNmZDc2MGVkYTAxMDZhNDQ4NzgyMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyLm1tCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIgorCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCisKK0Bp
bXBsZW1lbnRhdGlvbiBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyIHsKKyAgICBf
X3dlYWsgVUlWaWV3IDxXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGU+
ICpfaW1hZ2VFeHRyYWN0aW9uRGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEltYWdlRXh0cmFjdGlvbkdlc3R1cmVEZWxlZ2F0ZTooVUlWaWV3IDxXS0ltYWdlRXh0cmFjdGlv
bkdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGU+ICopZGVsZWdhdGUKK3sKKyAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pbWFnZUV4dHJh
Y3Rpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIHNlbGYuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICBzZWxmLm1pbmltdW1QcmVzc0R1cmF0aW9uID0gMC4xOworICAgIHNlbGYuYWxsb3dhYmxl
TW92ZW1lbnQgPSAwOworICAgIHNlbGYubmFtZSA9IEAiSW1hZ2UgZXh0cmFjdGlvbiI7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0U3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSlzdGF0ZQoreworICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9IHNlbGYuc3RhdGU7CisgICAg
c3VwZXIuc3RhdGUgPSBzdGF0ZTsKKworICAgIGF1dG8gbmV3U3RhdGUgPSBzZWxmLnN0YXRlOwor
ICAgIGlmIChwcmV2aW91c1N0YXRlICE9IG5ld1N0YXRlICYmIG5ld1N0YXRlID09IFVJR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKQorICAgICAgICBbX2ltYWdlRXh0cmFjdGlvbkRlbGVnYXRl
IGltYWdlRXh0cmFjdGlvbkdlc3R1cmVEaWRCZWdpbjpzZWxmXTsKK30KKworQGVuZAorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElNQUdFX0VYVFJBQ1RJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
NTI4ZjQ3MWY0NjNkZjZjMTEzMGEzZmI4Mzc3NmJmMWIyYWJlZjk0Li43NWNiNzVmNDAyMjcxZTY5
YjdiZWYyNGRiYjE5YTk0NGY3ZGJkNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5MzQsNiArMTkzNCw3IEBACiAJCUY0OEQyQTg1
MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQyQTg0MjE1ODNBMDIwMEM2NzUyQiAvKiBBcHBLaXRT
UEkuaCAqLzsgfTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
ICovOyB9OwogCQlGNEE2RDZCQzI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
QTZENkJCMjU0Q0EzRTkwMEI2NUZBQSAvKiBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oICovOyB9
OworCQlGNEJBMzNGMjI1NzU3RTg5MDAwQTNDRTggLyogV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJl
UmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRCQTMzRjAyNTc1N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIuaCAqLzsgfTsKIAkJRjRDQjA5RTUyMjVENUEwOTAwODkxNDg3IC8qIFdlYnNpdGVN
ZWRpYVNvdXJjZVBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjRDQjA5RTQyMjVENUEwMzAwODkxNDg3IC8qIFdlYnNpdGVNZWRpYVNvdXJjZVBv
bGljeS5oICovOyB9OwogCQlGNEQ1RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5oICovOyB9OwogCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlj
a2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLmggKi87IH07CkBAIC01NjAyLDYgKzU2MDMsOCBAQAogCQlGNEE2
RDZCQjI1NENBM0U5MDBCNjVGQUEgLyogU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjRBQzY1NUUyMkEzMTQwRTAwQTA1NjA3IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVs
dFZhbHVlc0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdl
YlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbTsgcGF0aCA9IGlvcy9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjM3
OEQwMjFEREJCQUIwMDk1QTM3OCAvKiBXZWJVbmRvU3RlcElELmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlVuZG9TdGVwSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRCQTMzRjAyNTc1
N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0g
aW9zL1dLSW1hZ2VFeHRyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjRCQTMzRjEyNTc1N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0
aW9uR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0ltYWdlRXh0
cmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLSW1hZ2VFeHRyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Q0Iw
OUU0MjI1RDVBMDMwMDg5MTQ4NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZp
ZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTFBMjA2
MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI3OSw2ICs3MjgyLDggQEAKIAkJ
CQkwRkNCNEU0MTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2Jq
Q1NlY3VyaXR5T3JpZ2luLm1tICovLAogCQkJCUY0REI1NEU0MjMxOUU3MzMwMDlFMzE1NSAvKiBX
S0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmggKi8sCiAJCQkJRjREQjU0RTUy
MzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIu
bW0gKi8sCisJCQkJRjRCQTMzRjAyNTc1N0U4OTAwMEEzQ0U4IC8qIFdLSW1hZ2VFeHRyYWN0aW9u
R2VzdHVyZVJlY29nbml6ZXIuaCAqLywKKwkJCQlGNEJBMzNGMTI1NzU3RTg5MDAwQTNDRTggLyog
V0tJbWFnZUV4dHJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQk5MzNERjgyRDFC
M0JDMDkwMDBBRUE5RTMgLyogV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5oICovLAogCQkJ
CTkzM0RGODJGMUIzQkMwQjQwMEFFQTlFMyAvKiBXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVy
Lm1tICovLAogCQkJCTJERDVFMTI3MjEwQURDN0EwMERCNjAxMiAvKiBXS0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IuaCAqLywKQEAgLTEyMDU1LDYgKzEyMDYwLDcgQEAKIAkJCQk1MTIzQ0YxQzEz
M0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNDRjZBQzMxMkM5MUYzNDAwOEY5QzM1IC8qIFdLSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQ0Y2QUNBMTJDOTFGNTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuaCBpbiBIZWFkZXJzICovLAor
CQkJCUY0QkEzM0YyMjU3NTdFODkwMDBBM0NFOCAvKiBXS0ltYWdlRXh0cmFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzNERjgyRTFCM0JDMDkwMDBBRUE5RTMg
LyogV0tJbWFnZVByZXZpZXdWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMy
MUQ1ODYxQTM4RUUzQzAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMyMUQ1OEExQTM4RjE5NjAwODA1MkJFIC8qIFdLSW1tZWRpYXRl
QWN0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBlNTc1ZmNhMDE5ZjZiMTJhOGY0
ZGFlNWNiMWQ2ODJkYTRlNDM2ZWI5Li4zODM4YWIzMjZkZDgzOTZiNjAxMDdjYmEzZjYyNDUwNzRj
OTdmNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMjYzNCw3ICsyNjM0LDcgQEAgc3RhdGljIHZvaWQgaW1hZ2VQb3Np
dGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IElu
dGUKICAgICBpbmZvLmltYWdlVVJMID0gZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHJl
bmRlckltYWdlLmNhY2hlZEltYWdlKCktPnVybCgpLnN0cmluZygpKTsKICAgICBpbmZvLmlzQW5p
bWF0ZWRJbWFnZSA9IGltYWdlLT5pc0FuaW1hdGVkKCk7CiAKLSAgICBpZiAoIXJlcXVlc3QuaW5j
bHVkZVNuYXBzaG90KQorICAgIGlmICghcmVxdWVzdC5pbmNsdWRlU25hcHNob3QgJiYgIXJlcXVl
c3QuaW5jbHVkZUltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRTaXplIHNj
cmVlblNpemVJblBpeGVscyA9IHNjcmVlblNpemUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>