<?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>204748</bug_id>
          
          <creation_ts>2019-12-02 08:09:56 -0800</creation_ts>
          <short_desc>[iOS] Introduce a gesture recognizer that can be used to defer recognition of other gestures</short_desc>
          <delta_ts>2020-01-06 14:00:50 -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>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</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>1594596</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 08:09:56 -0800</bug_when>
    <thetext>Work towards webkit.org/b/204664.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594606</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 08:51:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/38670692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594614</commentid>
    <comment_count>2</comment_count>
      <attachid>384628</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 08:58:19 -0800</bug_when>
    <thetext>Created attachment 384628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594644</commentid>
    <comment_count>3</comment_count>
      <attachid>384628</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-12-02 09:35:41 -0800</bug_when>
    <thetext>Comment on attachment 384628
Patch

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

&gt; Source/WebKit/ChangeLog:25
&gt; +        gesture from connecting the entire gesture subgraph under WKWebView through failure depencies. This would result

sp depencies

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:209
&gt; +    RetainPtr&lt;WKDeferringGestureRecognizer&gt; _touchEventDeferringGestureRecognizerForImmediatelyResettableGestures;
&gt; +    RetainPtr&lt;WKDeferringGestureRecognizer&gt; _touchEventDeferringGestureRecognizerForDelayedResettableGestures;

Are these &quot;touch-event-deferring&quot; (that&apos;s how I read it)? Don&apos;t they defer many things /pending/ touch event reply?

&gt; Source/WebKit/UIProcess/ios/WKDeferringGestureRecognizer.h:36
&gt; +- (instancetype)initWithView:(WKContentView *)view;

In an ideally-generic world this would probably be 

- (instancetype)initWithView:(UIView *)view delegate:(id &lt;WKDeferringGestureRecognizerDelegate&gt;)delegate;

And not know anything about WKContentView.

Does that make it any more useful? It does seem like it could be useful outside of WKContentView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594654</commentid>
    <comment_count>4</comment_count>
      <attachid>384628</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 09:45:12 -0800</bug_when>
    <thetext>Comment on attachment 384628
Patch

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

Thanks for taking a look!

&gt;&gt; Source/WebKit/ChangeLog:25
&gt;&gt; +        gesture from connecting the entire gesture subgraph under WKWebView through failure depencies. This would result
&gt; 
&gt; sp depencies

oops! fixed.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:209
&gt;&gt; +    RetainPtr&lt;WKDeferringGestureRecognizer&gt; _touchEventDeferringGestureRecognizerForDelayedResettableGestures;
&gt; 
&gt; Are these &quot;touch-event-deferring&quot; (that&apos;s how I read it)? Don&apos;t they defer many things /pending/ touch event reply?

That’s true. Maybe these should just be _deferringGestureRecognizerForImmediatelyResettableGestures and _deferringGestureRecognizerForDelayedResettableGestures (would make the names a little bit less of a mouthful as well).

&gt;&gt; Source/WebKit/UIProcess/ios/WKDeferringGestureRecognizer.h:36
&gt;&gt; +- (instancetype)initWithView:(WKContentView *)view;
&gt; 
&gt; In an ideally-generic world this would probably be 
&gt; 
&gt; - (instancetype)initWithView:(UIView *)view delegate:(id &lt;WKDeferringGestureRecognizerDelegate&gt;)delegate;
&gt; 
&gt; And not know anything about WKContentView.
&gt; 
&gt; Does that make it any more useful? It does seem like it could be useful outside of WKContentView.

While I don’t foresee any use outside of WKContentView, it wouldn’t hurt to architect it this way from the get-go; I’ll change it to be delegate-based instead of directly talking to the content view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594660</commentid>
    <comment_count>5</comment_count>
      <attachid>384635</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 10:01:42 -0800</bug_when>
    <thetext>Created attachment 384635
Address comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594665</commentid>
    <comment_count>6</comment_count>
      <attachid>384637</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 10:10:30 -0800</bug_when>
    <thetext>Created attachment 384637
Address comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594715</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 11:25:07 -0800</bug_when>
    <thetext>The Windows test failure (webanimations/accelerated-animation-removal-upon-transition-completion.html) is not relevant to this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594738</commentid>
    <comment_count>8</comment_count>
      <attachid>384637</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 12:21:20 -0800</bug_when>
    <thetext>Comment on attachment 384637
Address comments

Clearing flags on attachment: 384637

Committed r253005: &lt;https://trac.webkit.org/changeset/253005&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384628</attachid>
            <date>2019-12-02 08:58:19 -0800</date>
            <delta_ts>2019-12-02 09:35:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204748-20191202085818.patch</filename>
            <type>text/plain</type>
            <size>22298</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiZWExYThjZGZhMDFmYTM1
ZWVjMDU5NmFlMGIzMjg5ODM2YWMzY2YuLjM0OGQwNTNlZTE3OGVmMWJlYWUxYTJlNmE5MDQxYWZh
YmFhZTM5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTktMTItMDIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW50cm9kdWNl
IGEgZ2VzdHVyZSByZWNvZ25pemVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmZXIgcmVjb2duaXRp
b24gb2Ygb3RoZXIgZ2VzdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNDc0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg2NzA2OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
cyBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLCB3aGljaCBpcyBzaW1pbGFyIHRvIFVJS2l0
J3MgX1VJUmVsYXRpb25zaGlwR2VzdHVyZVJlY29nbml6ZXIuIEluIGEKKyAgICAgICAgZnV0dXJl
IHBhdGNoLCB0aGlzIHdpbGwgYmUgYWRkZWQgdG8gV0tDb250ZW50VmlldyB0byBwcmV2ZW50IHBs
YXRmb3JtIGdlc3R1cmVzIChwaW5jaGluZywgcGFubmluZywgc2luZ2xlL2RvdWJsZQorICAgICAg
ICB0YXBzLCBldGMuKSBmcm9tIHJlY29nbml6aW5nIHdoZW4gZGlzcGF0Y2hpbmcgYSBwcmV2ZW50
YWJsZSB0b3VjaCBldmVudCB0byB0aGUgcGFnZS4KKworICAgICAgICBBZGRpdGlvbmFsbHkgcmVu
YW1lcyBhIG1lbWJlciB2YXJpYWJsZSBvbiBXS0NvbnRlbnRWaWV3LCBpbiBwcmVwYXJhdGlvbiBm
b3IgbWFraW5nIHRvdWNoIGdlc3R1cmUgcmVjb2duaXRpb24KKyAgICAgICAgYXN5bmNocm9ub3Vz
LiBObyBuZXcgdGVzdHMsIHNpbmNlIHRoZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciB5ZXQu
CisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorCisgICAgICAgIEFkZCB0aGUgbmV3IGZp
bGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
OgorCisgICAgICAgIEFkZCBhIGNvdXBsZSBvZiAoY3VycmVudGx5IHVudXNlZCkgZGVmZXJyaW5n
IGdlc3R1cmUgcmVjb2duaXplcnMuIFRoZXNlIHdpbGwgYmUgYWRkZWQgdG8gV0tDb250ZW50Vmll
dyBpbiBhCisgICAgICAgIGZ1dHVyZSBwYXRjaC4gVGhlcmUgYXJlIHR3byBkZWZlcnJpbmcgZ2Vz
dHVyZXMgaGVyZSAob25lIGZvciAiaW1tZWRpYXRlbHkgcmVzZXR0YWJsZSIgZ2VzdHVyZXMgYW5k
IGFub3RoZXIgZm9yCisgICAgICAgIGdlc3R1cmVzIGZvciB3aGljaCB0aGUgcmVzZXQgaXMgImRl
ZmVycmVkIiAtLSBpLmUuLCBtdWx0aS10YXAgZ2VzdHVyZXMpOyB0aGlzIHByZXZlbnRzIGEgc2lu
Z2xlIGRlZmVycmluZworICAgICAgICBnZXN0dXJlIGZyb20gY29ubmVjdGluZyB0aGUgZW50aXJl
IGdlc3R1cmUgc3ViZ3JhcGggdW5kZXIgV0tXZWJWaWV3IHRocm91Z2ggZmFpbHVyZSBkZXBlbmNp
ZXMuIFRoaXMgd291bGQgcmVzdWx0CisgICAgICAgIGluIHZhcmlvdXMgdXNhYmlsaXR5IGlzc3Vl
cywgc3VjaCBhcyBiZWluZyB1bmFibGUgdG8gcGVyZm9ybSBhIHBhbiBnZXN0dXJlIHRvIHNjcm9s
bCBXS1Njcm9sbFZpZXcgaWYgYSB0YXAgd2FzCisgICAgICAgIHJlY29nbml6ZWQgd2l0aGluIHRo
ZSBsYXN0IDMwMCBtcywgc2luY2UgYWxsIGdlc3R1cmVzIHdvdWxkIG5lZWQgdG8gd2FpdCB1bnRp
bCBldmVyeSBkb3VibGUgYW5kIHRyaXBsZS10YXAKKyAgICAgICAgZ2VzdHVyZSB1bmRlciBXS1dl
YlZpZXcgaGFzIGZhaWxlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rp
b25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVk
Ol0pOgorCisgICAgICAgIFJlbmFtZSBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkg
dG8gX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzIGluIHByZXBhcmF0aW9uIGZv
ciBhZGRpbmcgYQorICAgICAgICBjb2RlcGF0aCBmb3IgZnVsbHkgYXN5bmNocm9ub3VzIHRvdWNo
IGV2ZW50IGRpc3BhdGNoOyB3ZSBhbHNvIGZsaXAgdGhlIGNvbmRpdGlvbmFsIGluIGFueSBwbGFj
ZXMgd2hlcmUKKyAgICAgICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5IHdhcyBw
cmV2aW91c2x5IHNldCBvciByZWFkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dlYlRv
dWNoRXZlbnQ6cHJldmVudHNOYXRpdmVHZXN0dXJlczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuT3JQaW5jaEdlc3R1cmVdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRJZ25vcmVXZWJUb3VjaFdpdGhF
dmVudDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjppc0lu
dGVycnVwdGluZ01vbWVudHVtU2Nyb2xsaW5nV2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IHNob3VsZEFsbG93RGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6dG9EZWZlckdl
c3R1cmVzV2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRlZmVycmluZ0dl
c3R1cmVSZWNvZ25pemVyOnNob3VsZERlZmVyT3RoZXJHZXN0dXJlUmVjb2duaXplcjpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzaG91bGRJZ25vcmVXZWJUb3VjaF0pOiBEZWxldGVkLgor
CisgICAgICAgIERyaXZlLWJ5IGZpeDogcmVtb3ZlIHRoaXMgdW5uZWNlc3NhcnkgbWV0aG9kIGlt
cGxlbWVudGF0aW9uLCBhbmQgdGhlIHJlbGF0ZWQgRklYTUUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBpbml0V2l0aFZpZXc6XSk6Cisg
ICAgICAgICgtW1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgdG91Y2hlc0JlZ2FuOndpdGhF
dmVudDpdKToKKworICAgICAgICBVbmxlc3MgdGhlIHRvdWNoIGlzIGludGVycnVwdHMgbW9tZW50
dW0gc2Nyb2xsaW5nLCBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHNob3VsZCB0cmFuc2l0
aW9uIHRvIFBvc3NpYmxlCisgICAgICAgIHN0YXRlIHdoZW4gc3RhcnRpbmcgYSB0b3VjaC4gTGF0
ZXIsIC1zZXREZWZhdWx0UHJldmVudGVkOiBpcyBpbnZva2VkLCB3aGljaCB3aWxsIGVpdGhlciB0
cmFuc2l0aW9uIHRoZSBkZWZlcnJpbmcKKyAgICAgICAgZ2VzdHVyZSByZWNvZ25pemVyIHRvIEZh
aWxlZCBzdGF0ZSAodGhlcmVieSBhbGxvd2luZyBuYXRpdmUgZ2VzdHVyZXMgdG8gYmVnaW4pLCBv
ciBFbmRlZCBzdGF0ZSAocHJldmVudGluZyBvdGhlcgorICAgICAgICBuYXRpdmUgZ2VzdHVyZXMp
LgorCisgICAgICAgICgtW1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgdG91Y2hlc0NhbmNl
bGxlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6
ZXIgc2V0RGVmYXVsdFByZXZlbnRlZDpdKToKKyAgICAgICAgKC1bV0tEZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplciBjYW5CZVByZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6XSk6CisKKyAgICAg
ICAgUmV0dXJuIE5PIGhlcmUgdG8gcHJldmVudCBjZXJ0YWluIHBsYXRmb3JtIGdlc3R1cmVzIChl
LmcuIHNjcm9sbCB2aWV3IHBhbm5pbmcpIGZyb20gY2F1c2luZyB0aGUgZGVmZXJyaW5nCisgICAg
ICAgIGdlc3R1cmUgdG8gRmFpbGVkIHN0YXRlLCB3aGVuIHRoZXNlIGdlc3R1cmVzIGF0dGVtcHQg
dG8gdHJhbnNpdGlvbiBmcm9tIFBvc3NpYmxlIHRvIEJlZ2FuIHN0YXRlLgorCisgICAgICAgICgt
W1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkRGVmZXJHZXN0dXJlUmVjb2duaXpl
cjpdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAx
OS0xMi0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bUFNPTl0gQ3Jhc2ggaW4gTmV0d29ya1Byb2Nlc3NQcm94eTo6b3Blbk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDYzYzRkZmExMGFi
MDk0OGMyNjBhYTI5NTc5YjMwNWIwYTIxNjYxNzguLmY0YmRlYjU3MDcxZDMwZjg1YzBkMWFhNTNl
NDdkOWYzOTEyMjgwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQyNiw2ICs0MjYsNyBA
QCBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KIFVJUHJvY2Vzcy9pb3Mv
V0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBAbm8tdW5pZnkKK1VJUHJvY2Vzcy9pb3MvV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXpl
ci5tbQogVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdDb29yZGluYXRvci5tbQogVUlQcm9jZXNzL2lv
cy9XS0RyYXdpbmdWaWV3Lm1tCiBVSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oCmluZGV4IDkyZGE2MDNlZTk5NDczZGU2YjAxMmRhNTYzMjViNDNmMmNk
Yzc0ODcuLjllN2NlOWU1Mjc2MjE0Yjk1ZWI0YzYwZDZiODk5ZDllY2U3MDAxOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0
OwogQGNsYXNzIFdlYkV2ZW50OwogQGNsYXNzIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ7CiBAY2xh
c3MgV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvOworQGNsYXNzIFdLRGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXI7CiBAY2xhc3MgV0tEcmF3aW5nQ29vcmRpbmF0b3I7CiBAY2xhc3MgV0tGb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3OwogQGNsYXNzIFdLRm9ybUlucHV0Q29udHJvbDsKQEAgLTIwNCw5ICsy
MDUsMTEgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIEBlbmQKIAogQGludGVyZmFj
ZSBXS0NvbnRlbnRWaWV3ICgpIHsKKyAgICBSZXRhaW5QdHI8V0tEZWZlcnJpbmdHZXN0dXJlUmVj
b2duaXplcj4gX3RvdWNoRXZlbnREZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckltbWVkaWF0
ZWx5UmVzZXR0YWJsZUdlc3R1cmVzOworICAgIFJldGFpblB0cjxXS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyPiBfdG91Y2hFdmVudERlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXll
ZFJlc2V0dGFibGVHZXN0dXJlczsKICAgICBSZXRhaW5QdHI8VUlXZWJUb3VjaEV2ZW50c0dlc3R1
cmVSZWNvZ25pemVyPiBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyOwogCi0gICAgQk9PTCBf
Y2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHk7CisgICAgQk9PTCBfdG91Y2hFdmVudHND
YW5QcmV2ZW50TmF0aXZlR2VzdHVyZXM7CiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQogICAg
IEJPT0wgX3ByZXZlbnRzUGFubmluZ0luWEF4aXM7CiAgICAgQk9PTCBfcHJldmVudHNQYW5uaW5n
SW5ZQXhpczsKQEAgLTUzNiw2ICs1MzksOSBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJ
RVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAo
dm9pZClfZGlkQ2hhbmdlRHJhZ0NhcmV0UmVjdDooQ0dSZWN0KXByZXZpb3VzUmVjdCBjdXJyZW50
UmVjdDooQ0dSZWN0KXJlY3Q7CiAjZW5kaWYKIAorLSAoQk9PTClzaG91bGRBbGxvd0RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyOihXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyICopZGVmZXJy
aW5nR2VzdHVyZVJlY29nbml6ZXIgdG9EZWZlckdlc3R1cmVzV2l0aEV2ZW50OihVSUV2ZW50ICop
ZXZlbnQ7CistIChCT09MKWRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyOihXS0RlZmVycmluZ0dl
c3R1cmVSZWNvZ25pemVyICopZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkRGVmZXJP
dGhlckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXI7CisKIC0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXdGb3JQcmVzZW50ZWRMaXN0Vmlld0Nv
bnRyb2xsZXI7CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IDRmMzA2ZjUyYjk4NDkzYWQ5ZTlhMDBkNTc2ZWJkN2NlMTc5NjIzNzAuLjJmMDUyYjViZTVh
ZjM1NDFkMDZkYjM3ZDAyZWNiMzBiMDAzOTU0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDgsNiAr
NDgsNyBAQAogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLRGF0
ZVBpY2tlclZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0RlZmVycmluZ0dlc3R1cmVSZWNv
Z25pemVyLmgiCiAjaW1wb3J0ICJXS0RyYXdpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tF
cnJvci5oIgogI2ltcG9ydCAiV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmgiCkBAIC04NDQsNiAr
ODQ1LDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgX2FjdGlvblNoZWV0QXNzaXN0
YW50ID0gYWRvcHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmll
dzpzZWxmXSk7CiAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsK
ICAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxmKTsKKyAgICBfdG91Y2hFdmVudHNDYW5Q
cmV2ZW50TmF0aXZlR2VzdHVyZXMgPSBZRVM7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRh
cENvbW1pdCA9IE5POwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87CiAgICAgX2lz
RG91YmxlVGFwUGVuZGluZyA9IE5POwpAQCAtMTQxMCwxOSArMTQxMiwxOSBAQCAtICh2b2lkKV93
ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6KFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBXZWJLaXQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQgbmF0aXZlV2ViVG91Y2hFdmVudCB7IGxhc3RUb3VjaEV2ZW50LCBn
ZXN0dXJlUmVjb2duaXplck1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29nbml6ZXIpIH07Ci0gICAg
bmF0aXZlV2ViVG91Y2hFdmVudC5zZXRDYW5QcmV2ZW50TmF0aXZlR2VzdHVyZXMoIV9jYW5TZW5k
VG91Y2hFdmVudHNBc3luY2hyb25vdXNseSB8fCBbZ2VzdHVyZVJlY29nbml6ZXIgaXNEZWZhdWx0
UHJldmVudGVkXSk7CisgICAgbmF0aXZlV2ViVG91Y2hFdmVudC5zZXRDYW5QcmV2ZW50TmF0aXZl
R2VzdHVyZXMoX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzIHx8IFtnZXN0dXJl
UmVjb2duaXplciBpc0RlZmF1bHRQcmV2ZW50ZWRdKTsKIAogI2lmIEVOQUJMRShQT0lOVEVSX0VW
RU5UUykKICAgICBbc2VsZiBfaGFuZGxlVG91Y2hBY3Rpb25zRm9yVG91Y2hFdmVudDpuYXRpdmVX
ZWJUb3VjaEV2ZW50XTsKICNlbmRpZgogCi0gICAgaWYgKF9jYW5TZW5kVG91Y2hFdmVudHNBc3lu
Y2hyb25vdXNseSkKLSAgICAgICAgX3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnRBc3luY2hyb25vdXNs
eShuYXRpdmVXZWJUb3VjaEV2ZW50KTsKLSAgICBlbHNlCisgICAgaWYgKF90b3VjaEV2ZW50c0Nh
blByZXZlbnROYXRpdmVHZXN0dXJlcykKICAgICAgICAgX3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnRT
eW5jaHJvbm91c2x5KG5hdGl2ZVdlYlRvdWNoRXZlbnQpOworICAgIGVsc2UKKyAgICAgICAgX3Bh
Z2UtPmhhbmRsZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShuYXRpdmVXZWJUb3VjaEV2ZW50KTsK
IAogICAgIGlmIChuYXRpdmVXZWJUb3VjaEV2ZW50LmFsbFRvdWNoUG9pbnRzQXJlUmVsZWFzZWQo
KSkgewotICAgICAgICBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkgPSBOTzsKKyAg
ICAgICAgX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzID0gWUVTOwogCiAjaWYg
RU5BQkxFKFBPSU5URVJfRVZFTlRTKQogICAgICAgICBpZiAoIV9wYWdlLT5pc1Njcm9sbGluZ09y
Wm9vbWluZygpKQpAQCAtMTU5Miw3ICsxNTk0LDcgQEAgLSAodm9pZClfd2ViVG91Y2hFdmVudDoo
Y29uc3QgV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50Jil0b3VjaEV2ZW50IHByZXZlbnRzTmEK
ICAgICBpZiAocHJldmVudHNOYXRpdmVHZXN0dXJlKSB7CiAgICAgICAgIF9sb25nUHJlc3NDYW5D
bGljayA9IE5POwogCi0gICAgICAgIF9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSA9
IFlFUzsKKyAgICAgICAgX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzID0gTk87
CiAgICAgICAgIFtfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyIHNldERlZmF1bHRQcmV2ZW50
ZWQ6WUVTXTsKICAgICB9CiB9CkBAIC0yNzk3LDcgKzI3OTksNyBAQCAtICh2b2lkKXNjcm9sbFZp
ZXdXaWxsU3RhcnRQYW5PclBpbmNoR2VzdHVyZQogCiAgICAgW19rZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yIHdpbGxTdGFydEludGVyYWN0aXZlU2Nyb2xsXTsKIAotICAgIF9jYW5TZW5kVG91Y2hF
dmVudHNBc3luY2hyb25vdXNseSA9IFlFUzsKKyAgICBfdG91Y2hFdmVudHNDYW5QcmV2ZW50TmF0
aXZlR2VzdHVyZXMgPSBOTzsKIH0KIAogLSAodm9pZClfZGlkRW5kU2Nyb2xsaW5nT3Jab29taW5n
CkBAIC02NDU4LDE2ICs2NDYwLDE1IEBAIC0gKHZvaWQpX3ByZXNlcnZlRm9jdXNXaXRoVG9rZW46
KGlkIDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPil0b2tlbiBkZXN0cnVjdGl2CiAKICNwcmFn
bWEgbWFyayAtIEltcGxlbWVudGF0aW9uIG9mIFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2du
aXplckRlbGVnYXRlLgogCi0vLyBGSVhNRTogUmVtb3ZlIG9uY2UgLWdlc3R1cmVSZWNvZ25pemVy
OnNob3VsZElnbm9yZVdlYlRvdWNoV2l0aEV2ZW50OiBpcyBpbiBVSVdlYlRvdWNoRXZlbnRzR2Vz
dHVyZVJlY29nbml6ZXIuaC4gUmVmZXIgdG8gPHJkYXI6Ly9wcm9ibGVtLzMzMjE3NTI1PiBmb3Ig
bW9yZSBkZXRhaWxzLgotLSAoQk9PTClzaG91bGRJZ25vcmVXZWJUb3VjaAorLSAoQk9PTClnZXN0
dXJlUmVjb2duaXplcjooVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlY29nbml6ZXIgc2hvdWxkSWdub3JlV2ViVG91Y2hXaXRoRXZlbnQ6KFVJRXZlbnQgKilldmVu
dAogewotICAgIHJldHVybiBOTzsKKyAgICBfdG91Y2hFdmVudHNDYW5QcmV2ZW50TmF0aXZlR2Vz
dHVyZXMgPSBZRVM7CisKKyAgICByZXR1cm4gW3NlbGYgZ2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVy
ZVJlY29nbml6ZXIgaXNJbnRlcnJ1cHRpbmdNb21lbnR1bVNjcm9sbGluZ1dpdGhFdmVudDpldmVu
dF07CiB9CiAKLS0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJV2ViVG91Y2hFdmVudHNHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZElnbm9yZVdlYlRvdWNoV2l0
aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKKy0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplciBpc0ludGVycnVwdGluZ01vbWVudHVt
U2Nyb2xsaW5nV2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKIHsKLSAgICBfY2FuU2VuZFRvdWNo
RXZlbnRzQXN5bmNocm9ub3VzbHkgPSBOTzsKLQogICAgIE5TU2V0PFVJVG91Y2ggKj4gKnRvdWNo
ZXMgPSBbZXZlbnQgdG91Y2hlc0Zvckdlc3R1cmVSZWNvZ25pemVyOmdlc3R1cmVSZWNvZ25pemVy
XTsKICAgICBmb3IgKFVJVG91Y2ggKnRvdWNoIGluIHRvdWNoZXMpIHsKICAgICAgICAgaWYgKFt0
b3VjaC52aWV3IGlzS2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmlldyBjbGFzc11dICYmIFsoVUlTY3Jv
bGxWaWV3ICopdG91Y2gudmlldyBfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb25dKQpAQCAtNjY4
Myw2ICs2Njg0LDI3IEBAIC0gKHZvaWQpX2hpZGVDb250ZXh0TWVudUhpbnRDb250YWluZXIKICAg
ICBbX2NvbnRleHRNZW51SGludENvbnRhaW5lclZpZXcgc2V0SGlkZGVuOllFU107CiB9CiAKKy0g
KEJPT0wpc2hvdWxkQWxsb3dEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcjooV0tEZWZlcnJpbmdH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHRvRGVmZXJHZXN0dXJlc1dpdGhF
dmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgcmV0dXJuICFbc2VsZiBnZXN0dXJlUmVjb2du
aXplcjpnZXN0dXJlUmVjb2duaXplciBpc0ludGVycnVwdGluZ01vbWVudHVtU2Nyb2xsaW5nV2l0
aEV2ZW50OmV2ZW50XTsKK30KKworLSAoQk9PTClkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcjoo
V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciAqKWRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVy
IHNob3VsZERlZmVyT3RoZXJHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAq
KWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgYXV0byBpc011bHRpcGxlVGFwR2VzdHVyZSA9IFtd
KFVJR2VzdHVyZVJlY29nbml6ZXIgKmdlc3R1cmUpIHsKKyAgICAgICAgcmV0dXJuIFtnZXN0dXJl
IGlzS2luZE9mQ2xhc3M6VUlUYXBHZXN0dXJlUmVjb2duaXplci5jbGFzc10gJiYgWyhVSVRhcEdl
c3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZSBudW1iZXJPZlRhcHNSZXF1aXJlZF0gPiAxOworICAg
IH07CisKKyAgICBpZiAoZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoRXZlbnRE
ZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckRlbGF5ZWRSZXNldHRhYmxlR2VzdHVyZXMpCisg
ICAgICAgIHJldHVybiBnZXN0dXJlUmVjb2duaXplciAhPSBfdG91Y2hFdmVudEdlc3R1cmVSZWNv
Z25pemVyICYmIGlzTXVsdGlwbGVUYXBHZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyKTsKKworICAg
IGlmIChkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfdG91Y2hFdmVudERlZmVycmluZ0dl
c3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVyZXMpCisgICAgICAg
IHJldHVybiBnZXN0dXJlUmVjb2duaXplciAhPSBfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVy
ICYmICFpc011bHRpcGxlVGFwR2VzdHVyZShnZXN0dXJlUmVjb2duaXplcik7CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTk87Cit9CisKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogCiBzdGF0aWMgQk9PTCBzaG91bGRFbmFibGVEcmFnSW50ZXJhY3Rpb25Gb3JQb2xp
Y3koX1dLRHJhZ0ludGVyYWN0aW9uUG9saWN5IHBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1OTc3MzMxZjhhZTU0MDU5YzUyMzkwZDUzYmFiZmEzNTdjNWYwNmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEZWZlcnJpbmdHZXN0
dXJlUmVjb2duaXplci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisK
K0BjbGFzcyBXS0NvbnRlbnRWaWV3OworCitAaW50ZXJmYWNlIFdLRGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXIgOiBVSUdlc3R1cmVSZWNvZ25pemVyCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3OworLSAodm9pZClzZXREZWZhdWx0UHJldmVudGVk
OihCT09MKWRlZmF1bHRQcmV2ZW50ZWQ7CistIChCT09MKXNob3VsZERlZmVyR2VzdHVyZVJlY29n
bml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcjsKKworQGVuZAor
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZThiMGNlNjFhOWI5MTk3YmE3MzI4NGYzNGIxNzg3YWQ4NmNjNGM1NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1
cmVSZWNvZ25pemVyLm1tCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIldLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCIKKworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rl
ZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHsKKyAgICBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3
PiBfdmlldzsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50Vmll
dyAqKXZpZXcKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICAgICAgX3ZpZXcg
PSB2aWV3OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXRvdWNoZXNCZWdhbjooTlNT
ZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAg
ICBbc3VwZXIgdG91Y2hlc0JlZ2FuOnRvdWNoZXMgd2l0aEV2ZW50OmV2ZW50XTsKKyAgICBpZiAo
W192aWV3IHNob3VsZEFsbG93RGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6c2VsZiB0b0RlZmVy
R2VzdHVyZXNXaXRoRXZlbnQ6ZXZlbnRdKQorICAgICAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJl
UmVjb2duaXplclN0YXRlUG9zc2libGU7CisgICAgZWxzZQorICAgICAgICBzZWxmLnN0YXRlID0g
VUlHZXN0dXJlUmVjb2duaXplclN0YXRlRmFpbGVkOworfQorCistICh2b2lkKXRvdWNoZXNDYW5j
ZWxsZWQ6KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2
ZW50Cit7CisgICAgW3N1cGVyIHRvdWNoZXNDYW5jZWxsZWQ6dG91Y2hlcyB3aXRoRXZlbnQ6ZXZl
bnRdOworICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVGYWlsZWQ7Cit9
CisKKy0gKHZvaWQpc2V0RGVmYXVsdFByZXZlbnRlZDooQk9PTClkZWZhdWx0UHJldmVudGVkCit7
CisgICAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQpCisgICAgICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1
cmVSZWNvZ25pemVyU3RhdGVFbmRlZDsKKyAgICBlbHNlCisgICAgICAgIHNlbGYuc3RhdGUgPSBV
SUdlc3R1cmVSZWNvZ25pemVyU3RhdGVGYWlsZWQ7Cit9CisKKy0gKEJPT0wpY2FuQmVQcmV2ZW50
ZWRCeUdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopcHJldmVudGluZ0dl
c3R1cmVSZWNvZ25pemVyCit7CisgICAgcmV0dXJuIE5POworfQorCistIChCT09MKXNob3VsZERl
ZmVyR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2du
aXplcgoreworICAgIHJldHVybiBbX3ZpZXcgZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6c2Vs
ZiBzaG91bGREZWZlck90aGVyR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVyZVJlY29nbml6ZXJdOwor
fQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWNiODFjY2MyMDJj
ZTYyMWIzYWQ4NTFmNWFiYTllNWU0N2JiMmZjYy4uZDlhNzgxNTEyNDM3M2FjMjI2YjMxYzFlZTE4
M2FiZmMwNDE4NjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNzE3LDYgKzE3MTcsNyBAQAogCQlGNDM4Q0QyMTIyNDFGNjk1MDBE
RTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZEREEgLyog
V0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0MjkxOTYxRkE1OTQyQTAw
MkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnRJbnRlcm5hbC5oICovOyB9OworCQlGNDQ4MTU2NDIzODc4MjAwMDA5ODI2NTcgLyog
V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0ODE1NjIyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVmZXJy
aW5nR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2
IC8qIFdlYkljb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVz
LmggKi87IH07CiAJCUY0OEQyQTg1MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQyQTg0MjE1ODNB
MDIwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCAqLzsgfTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAwNEMx
NzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovOyB9OwpAQCAtNDgwOCw2ICs0ODA5LDggQEAKIAkJRjQ0
MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQyOTE5MzFG
QTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS0F0dGFjaG1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI5MTk1
MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLQXR0YWNobWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0NDgxNTYyMjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9
IGlvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NDgxNTYzMjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tEZWZlcnJpbmdHZXN0dXJlUmVj
b2duaXplci5tbTsgcGF0aCA9IGlvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYgLyog
V2ViSWNvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJ
Y29uVXRpbGl0aWVzLmg7IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0
aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYklj
b25VdGlsaXRpZXMubW07IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4RDJBODQyMTU4M0EwMjAwQzY3NTJCIC8qIEFwcEtpdFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcHBLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTYxNTEsNiArNjE1NCw4IEBACiAJCQkJMEZDQjRFM0QxOEJCRTA0NDAwMEZDRkM5IC8q
IFdLQ29udGVudFZpZXcubW0gKi8sCiAJCQkJMEZDQjRFNkExOEJCRjI2QTAwMEZDRkM5IC8qIFdL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oICovLAogCQkJCTBGQ0I0RTZCMThCQkYyNkEwMDBGQ0ZD
OSAvKiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gKi8sCisJCQkJRjQ0ODE1NjIyMzg3ODIw
MDAwOTgyNjU3IC8qIFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKKwkJCQlGNDQ4
MTU2MzIzODc4MjAwMDA5ODI2NTcgLyogV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5tbSAq
LywKIAkJCQkyRDIxQTQ1OTIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3Iu
aCAqLywKIAkJCQkyRDIxQTQ1ODIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0
b3IubW0gKi8sCiAJCQkJMkRDMThGQUIyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcu
aCAqLywKQEAgLTk4MjAsNyArOTgyNSw2IEBACiAJCQkJNTExRjhBN0IxMzhCNDYwOTAwQTk1RjQ0
IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4RTY5MEMxNjlC
NTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
OEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTdBQTc0NkQ1MjM1OTNEODEwMDA5NTA1MCAvKiBTZWNJdGVtU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJv
eHlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8q
IFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQy
QjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIyNyw2ICsx
MDIzMSw3IEBACiAJCQkJMzdBNzA5QTkxRTNFQTQwQzAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9y
VHlwZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU5NEZDMTYyMDM1MUE2RDAwOTc0
QkEwIC8qIFdLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzdFQUQ0NTE3RTJDNTFBMDAyRDE5M0QgLyogV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0NDgxNTY0MjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dl
c3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzM1OUMwRDIxNTQ3MzlGMDA5
RTc5NDggLyogV0tEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzcyREIyRjFBNjc3
RDRBMDBDNjk3QzUgLyogV0tEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDA3NUZBMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RpY3Rpb25hcnkuaCBpbiBI
ZWFkZXJzICovLAo=
</data>
<flag name="review"
          id="400419"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384635</attachid>
            <date>2019-12-02 10:01:42 -0800</date>
            <delta_ts>2019-12-02 10:09:01 -0800</delta_ts>
            <desc>Address comments</desc>
            <filename>bug-204748-20191202100141.patch</filename>
            <type>text/plain</type>
            <size>22790</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiZWExYThjZGZhMDFmYTM1
ZWVjMDU5NmFlMGIzMjg5ODM2YWMzY2YuLmQ1M2UzN2VmMGVjNDAwOTZkOTllNTQyNmMzMTA2Yzhi
ZjIzNTM1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTktMTItMDIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW50cm9kdWNl
IGEgZ2VzdHVyZSByZWNvZ25pemVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmZXIgcmVjb2duaXRp
b24gb2Ygb3RoZXIgZ2VzdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNDc0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg2NzA2OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBJbnRyb2R1Y2VzIFdL
RGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIsIHdoaWNoIGlzIHNpbWlsYXIgdG8gVUlLaXQncyBf
VUlSZWxhdGlvbnNoaXBHZXN0dXJlUmVjb2duaXplci4gSW4gYQorICAgICAgICBmdXR1cmUgcGF0
Y2gsIHRoaXMgd2lsbCBiZSBhZGRlZCB0byBXS0NvbnRlbnRWaWV3IHRvIHByZXZlbnQgcGxhdGZv
cm0gZ2VzdHVyZXMgKHBpbmNoaW5nLCBwYW5uaW5nLCBzaW5nbGUvZG91YmxlCisgICAgICAgIHRh
cHMsIGV0Yy4pIGZyb20gcmVjb2duaXppbmcgd2hlbiBkaXNwYXRjaGluZyBhIHByZXZlbnRhYmxl
IHRvdWNoIGV2ZW50IHRvIHRoZSBwYWdlLgorCisgICAgICAgIEFkZGl0aW9uYWxseSByZW5hbWVz
IGEgbWVtYmVyIHZhcmlhYmxlIG9uIFdLQ29udGVudFZpZXcsIGluIHByZXBhcmF0aW9uIGZvciBt
YWtpbmcgdG91Y2ggZ2VzdHVyZSByZWNvZ25pdGlvbgorICAgICAgICBhc3luY2hyb25vdXMuIE5v
IG5ldyB0ZXN0cywgc2luY2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yIHlldC4KKwor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisKKyAgICAgICAgQWRkIHRoZSBuZXcgZmlsZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisK
KyAgICAgICAgQWRkIGEgY291cGxlIG9mIChjdXJyZW50bHkgdW51c2VkKSBkZWZlcnJpbmcgZ2Vz
dHVyZSByZWNvZ25pemVycy4gVGhlc2Ugd2lsbCBiZSBhZGRlZCB0byBXS0NvbnRlbnRWaWV3IGlu
IGEKKyAgICAgICAgZnV0dXJlIHBhdGNoLiBUaGVyZSBhcmUgdHdvIGRlZmVycmluZyBnZXN0dXJl
cyBoZXJlIChvbmUgZm9yICJpbW1lZGlhdGVseSByZXNldHRhYmxlIiBnZXN0dXJlcyBhbmQgYW5v
dGhlciBmb3IKKyAgICAgICAgZ2VzdHVyZXMgZm9yIHdoaWNoIHRoZSByZXNldCBpcyAiZGVmZXJy
ZWQiIC0tIGkuZS4sIG11bHRpLXRhcCBnZXN0dXJlcyk7IHRoaXMgcHJldmVudHMgYSBzaW5nbGUg
ZGVmZXJyaW5nCisgICAgICAgIGdlc3R1cmUgZnJvbSBjb25uZWN0aW5nIHRoZSBlbnRpcmUgZ2Vz
dHVyZSBzdWJncmFwaCB1bmRlciBXS1dlYlZpZXcgdGhyb3VnaCBmYWlsdXJlIGRlcGVuZGVuY2ll
cy4gVGhpcyB3b3VsZAorICAgICAgICByZXN1bHQgaW4gdmFyaW91cyB1c2FiaWxpdHkgaXNzdWVz
LCBzdWNoIGFzIGJlaW5nIHVuYWJsZSB0byBwZXJmb3JtIGEgcGFuIGdlc3R1cmUgdG8gc2Nyb2xs
IFdLU2Nyb2xsVmlldyBpZiBhCisgICAgICAgIHRhcCB3YXMgcmVjb2duaXplZCB3aXRoaW4gdGhl
IGxhc3QgMzAwIG1zLCBzaW5jZSBhbGwgZ2VzdHVyZXMgd291bGQgbmVlZCB0byB3YWl0IHVudGls
IGV2ZXJ5IGRvdWJsZSBhbmQgdHJpcGxlLQorICAgICAgICB0YXAgZ2VzdHVyZSB1bmRlciBXS1dl
YlZpZXcgaGFzIGZhaWxlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rp
b25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVk
Ol0pOgorCisgICAgICAgIFJlbmFtZSBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkg
dG8gX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzIGluIHByZXBhcmF0aW9uIGZv
ciBhZGRpbmcgYQorICAgICAgICBjb2RlcGF0aCBmb3IgZnVsbHkgYXN5bmNocm9ub3VzIHRvdWNo
IGV2ZW50IGRpc3BhdGNoOyB3ZSBhbHNvIGZsaXAgdGhlIGNvbmRpdGlvbmFsIGluIGFueSBwbGFj
ZXMgd2hlcmUKKyAgICAgICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5IHdhcyBw
cmV2aW91c2x5IHNldCBvciByZWFkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dlYlRv
dWNoRXZlbnQ6cHJldmVudHNOYXRpdmVHZXN0dXJlczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuT3JQaW5jaEdlc3R1cmVdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRJZ25vcmVXZWJUb3VjaFdpdGhF
dmVudDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjppc0lu
dGVycnVwdGluZ01vbWVudHVtU2Nyb2xsaW5nV2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyOnNob3VsZERlZmVyR2VzdHVyZXNX
aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXI6c2hvdWxkRGVmZXJPdGhlckdlc3R1cmVSZWNvZ25pemVyOl0pOgorCisgICAgICAg
IEltcGxlbWVudCBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzaG91bGRJZ25vcmVXZWJUb3VjaF0pOiBEZWxldGVkLgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogcmVtb3ZlIHRoaXMgdW5uZWNlc3NhcnkgbWV0aG9kIGltcGxl
bWVudGF0aW9uLCBhbmQgdGhlIHJlbGF0ZWQgRklYTUUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBpbml0V2l0aERlbGVnYXRlOl0pOgor
ICAgICAgICAoLVtXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNCZWdhbjp3aXRo
RXZlbnQ6XSk6CisKKyAgICAgICAgVW5sZXNzIHRoZSB0b3VjaCBpcyBpbnRlcnJ1cHRzIG1vbWVu
dHVtIHNjcm9sbGluZywgV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBzaG91bGQgdHJhbnNp
dGlvbiB0byBQb3NzaWJsZQorICAgICAgICBzdGF0ZSB3aGVuIHN0YXJ0aW5nIGEgdG91Y2guIExh
dGVyLCAtc2V0RGVmYXVsdFByZXZlbnRlZDogaXMgaW52b2tlZCwgd2hpY2ggd2lsbCBlaXRoZXIg
dHJhbnNpdGlvbiB0aGUgZGVmZXJyaW5nCisgICAgICAgIGdlc3R1cmUgcmVjb2duaXplciB0byBG
YWlsZWQgc3RhdGUgKHRoZXJlYnkgYWxsb3dpbmcgbmF0aXZlIGdlc3R1cmVzIHRvIGJlZ2luKSwg
b3IgRW5kZWQgc3RhdGUgKHByZXZlbnRpbmcgb3RoZXIKKyAgICAgICAgbmF0aXZlIGdlc3R1cmVz
KS4KKworICAgICAgICAoLVtXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNDYW5j
ZWxsZWQ6d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25p
emVyIHNldERlZmF1bHRQcmV2ZW50ZWQ6XSk6CisgICAgICAgICgtW1dLRGVmZXJyaW5nR2VzdHVy
ZVJlY29nbml6ZXIgY2FuQmVQcmV2ZW50ZWRCeUdlc3R1cmVSZWNvZ25pemVyOl0pOgorCisgICAg
ICAgIFJldHVybiBOTyBoZXJlIHRvIHByZXZlbnQgY2VydGFpbiBwbGF0Zm9ybSBnZXN0dXJlcyAo
ZS5nLiBzY3JvbGwgdmlldyBwYW5uaW5nKSBmcm9tIGNhdXNpbmcgdGhlIGRlZmVycmluZworICAg
ICAgICBnZXN0dXJlIHRvIEZhaWxlZCBzdGF0ZSwgd2hlbiB0aGVzZSBnZXN0dXJlcyBhdHRlbXB0
IHRvIHRyYW5zaXRpb24gZnJvbSBQb3NzaWJsZSB0byBCZWdhbiBzdGF0ZS4KKworICAgICAgICAo
LVtXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHNob3VsZERlZmVyR2VzdHVyZVJlY29nbml6
ZXI6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MTktMTItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1BTT05dIENyYXNoIGluIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA2M2M0ZGZhMTBh
YjA5NDhjMjYwYWEyOTU3OWIzMDViMGEyMTY2MTc4Li5mNGJkZWI1NzA3MWQzMGY4NWMwZDFhYTUz
ZTQ3ZDlmMzkxMjI4MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MjYsNiArNDI2LDcg
QEAgVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCiBVSVByb2Nlc3MvaW9z
L1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tIEBuby11bmlmeQogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gQG5vLXVuaWZ5CitVSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6
ZXIubW0KIFVJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0KIFVJUHJvY2Vzcy9p
b3MvV0tEcmF3aW5nVmlldy5tbQogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaAppbmRleCA5MmRhNjAzZWU5OTQ3M2RlNmIwMTJkYTU2MzI1YjQzZjJj
ZGM3NDg3Li42MzhkMzhmNWNmMWZkYzYzMWI1ODhhOWYwYTExY2JhNzg2YjZjZGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAi
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIgogI2ltcG9ydCAiV0tBaXJQbGF5Um91dGVQaWNrZXIu
aCIKKyNpbXBvcnQgIldLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCIKICNpbXBvcnQgIldL
RmlsZVVwbG9hZFBhbmVsLmgiCiAjaW1wb3J0ICJXS0Zvcm1QZXJpcGhlcmFsLmgiCiAjaW1wb3J0
ICJXS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuaCIKQEAgLTIwNCw5ICsyMDUsMTEgQEAgc3Ry
dWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIEBlbmQKIAogQGludGVyZmFjZSBXS0NvbnRlbnRW
aWV3ICgpIHsKKyAgICBSZXRhaW5QdHI8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcj4gX2Rl
ZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRm9ySW1tZWRpYXRlbHlSZXNldHRhYmxlR2VzdHVyZXM7
CisgICAgUmV0YWluUHRyPFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI+IF9kZWZlcnJpbmdH
ZXN0dXJlUmVjb2duaXplckZvckRlbGF5ZWRSZXNldHRhYmxlR2VzdHVyZXM7CiAgICAgUmV0YWlu
UHRyPFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplcj4gX3RvdWNoRXZlbnRHZXN0dXJl
UmVjb2duaXplcjsKIAotICAgIEJPT0wgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5
OworICAgIEJPT0wgX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzOwogI2lmIEVO
QUJMRShQT0lOVEVSX0VWRU5UUykKICAgICBCT09MIF9wcmV2ZW50c1Bhbm5pbmdJblhBeGlzOwog
ICAgIEJPT0wgX3ByZXZlbnRzUGFubmluZ0luWUF4aXM7CkBAIC0zOTgsNyArNDAxLDcgQEAgc3Ry
dWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdLQ29udGVu
dFZpZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJVGV4
dEF1dG9zY3JvbGxpbmcsIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudCwgVUlUZXh0SW5wdXRQcml2
YXRlLCBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0ZSwgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVS
ZWNvZ25pemVyRGVsZWdhdGUsIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbCwgV0tBY3Rpb25T
aGVldEFzc2lzdGFudERlbGVnYXRlLCBXS0ZpbGVVcGxvYWRQYW5lbERlbGVnYXRlLCBXS0tleWJv
YXJkU2Nyb2xsVmlld0FuaW1hdG9yRGVsZWdhdGUKK0BpbnRlcmZhY2UgV0tDb250ZW50VmlldyAo
V0tJbnRlcmFjdGlvbikgPFVJR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZSwgVUlUZXh0QXV0b3Nj
cm9sbGluZywgVUlUZXh0SW5wdXRNdWx0aURvY3VtZW50LCBVSVRleHRJbnB1dFByaXZhdGUsIFVJ
V2ViRm9ybUFjY2Vzc29yeURlbGVnYXRlLCBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6
ZXJEZWxlZ2F0ZSwgVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLCBXS0FjdGlvblNoZWV0QXNz
aXN0YW50RGVsZWdhdGUsIFdLRmlsZVVwbG9hZFBhbmVsRGVsZWdhdGUsIFdLS2V5Ym9hcmRTY3Jv
bGxWaWV3QW5pbWF0b3JEZWxlZ2F0ZSwgV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckRlbGVn
YXRlCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgICwg
V0tTaGFyZVNoZWV0RGVsZWdhdGUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNGYzMDZmNTJi
OTg0OTNhZDllOWEwMGQ1NzZlYmQ3Y2UxNzk2MjM3MC4uZDI3ZmEzOTY4ZjJlYTdlNjBkNmFmZTU2
ODhiOGNkNTkwZmFiODkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04NDQsNiArODQ0LDcgQEAgLSAo
dm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRvcHRO
UyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7CiAg
ICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICBfc21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyPihzZWxmKTsKKyAgICBfdG91Y2hFdmVudHNDYW5QcmV2ZW50TmF0aXZl
R2VzdHVyZXMgPSBZRVM7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRhcENvbW1pdCA9IE5P
OwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87CiAgICAgX2lzRG91YmxlVGFwUGVu
ZGluZyA9IE5POwpAQCAtMTQxMCwxOSArMTQxMSwxOSBAQCAtICh2b2lkKV93ZWJUb3VjaEV2ZW50
c1JlY29nbml6ZWQ6KFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNo
RXZlbnQgbmF0aXZlV2ViVG91Y2hFdmVudCB7IGxhc3RUb3VjaEV2ZW50LCBnZXN0dXJlUmVjb2du
aXplck1vZGlmaWVyRmxhZ3MoZ2VzdHVyZVJlY29nbml6ZXIpIH07Ci0gICAgbmF0aXZlV2ViVG91
Y2hFdmVudC5zZXRDYW5QcmV2ZW50TmF0aXZlR2VzdHVyZXMoIV9jYW5TZW5kVG91Y2hFdmVudHNB
c3luY2hyb25vdXNseSB8fCBbZ2VzdHVyZVJlY29nbml6ZXIgaXNEZWZhdWx0UHJldmVudGVkXSk7
CisgICAgbmF0aXZlV2ViVG91Y2hFdmVudC5zZXRDYW5QcmV2ZW50TmF0aXZlR2VzdHVyZXMoX3Rv
dWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzIHx8IFtnZXN0dXJlUmVjb2duaXplciBp
c0RlZmF1bHRQcmV2ZW50ZWRdKTsKIAogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICBb
c2VsZiBfaGFuZGxlVG91Y2hBY3Rpb25zRm9yVG91Y2hFdmVudDpuYXRpdmVXZWJUb3VjaEV2ZW50
XTsKICNlbmRpZgogCi0gICAgaWYgKF9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSkK
LSAgICAgICAgX3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnRBc3luY2hyb25vdXNseShuYXRpdmVXZWJU
b3VjaEV2ZW50KTsKLSAgICBlbHNlCisgICAgaWYgKF90b3VjaEV2ZW50c0NhblByZXZlbnROYXRp
dmVHZXN0dXJlcykKICAgICAgICAgX3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnRTeW5jaHJvbm91c2x5
KG5hdGl2ZVdlYlRvdWNoRXZlbnQpOworICAgIGVsc2UKKyAgICAgICAgX3BhZ2UtPmhhbmRsZVRv
dWNoRXZlbnRBc3luY2hyb25vdXNseShuYXRpdmVXZWJUb3VjaEV2ZW50KTsKIAogICAgIGlmIChu
YXRpdmVXZWJUb3VjaEV2ZW50LmFsbFRvdWNoUG9pbnRzQXJlUmVsZWFzZWQoKSkgewotICAgICAg
ICBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkgPSBOTzsKKyAgICAgICAgX3RvdWNo
RXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzID0gWUVTOwogCiAjaWYgRU5BQkxFKFBPSU5U
RVJfRVZFTlRTKQogICAgICAgICBpZiAoIV9wYWdlLT5pc1Njcm9sbGluZ09yWm9vbWluZygpKQpA
QCAtMTU5Miw3ICsxNTkzLDcgQEAgLSAodm9pZClfd2ViVG91Y2hFdmVudDooY29uc3QgV2ViS2l0
OjpOYXRpdmVXZWJUb3VjaEV2ZW50Jil0b3VjaEV2ZW50IHByZXZlbnRzTmEKICAgICBpZiAocHJl
dmVudHNOYXRpdmVHZXN0dXJlKSB7CiAgICAgICAgIF9sb25nUHJlc3NDYW5DbGljayA9IE5POwog
Ci0gICAgICAgIF9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSA9IFlFUzsKKyAgICAg
ICAgX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzID0gTk87CiAgICAgICAgIFtf
dG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyIHNldERlZmF1bHRQcmV2ZW50ZWQ6WUVTXTsKICAg
ICB9CiB9CkBAIC0yNzk3LDcgKzI3OTgsNyBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsU3RhcnRQ
YW5PclBpbmNoR2VzdHVyZQogCiAgICAgW19rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yIHdpbGxT
dGFydEludGVyYWN0aXZlU2Nyb2xsXTsKIAotICAgIF9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hy
b25vdXNseSA9IFlFUzsKKyAgICBfdG91Y2hFdmVudHNDYW5QcmV2ZW50TmF0aXZlR2VzdHVyZXMg
PSBOTzsKIH0KIAogLSAodm9pZClfZGlkRW5kU2Nyb2xsaW5nT3Jab29taW5nCkBAIC02NDU4LDE2
ICs2NDU5LDE1IEBAIC0gKHZvaWQpX3ByZXNlcnZlRm9jdXNXaXRoVG9rZW46KGlkIDxOU0NvcHlp
bmcsIE5TU2VjdXJlQ29kaW5nPil0b2tlbiBkZXN0cnVjdGl2CiAKICNwcmFnbWEgbWFyayAtIElt
cGxlbWVudGF0aW9uIG9mIFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplckRlbGVnYXRl
LgogCi0vLyBGSVhNRTogUmVtb3ZlIG9uY2UgLWdlc3R1cmVSZWNvZ25pemVyOnNob3VsZElnbm9y
ZVdlYlRvdWNoV2l0aEV2ZW50OiBpcyBpbiBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6
ZXIuaC4gUmVmZXIgdG8gPHJkYXI6Ly9wcm9ibGVtLzMzMjE3NTI1PiBmb3IgbW9yZSBkZXRhaWxz
LgotLSAoQk9PTClzaG91bGRJZ25vcmVXZWJUb3VjaAorLSAoQk9PTClnZXN0dXJlUmVjb2duaXpl
cjooVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIg
c2hvdWxkSWdub3JlV2ViVG91Y2hXaXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAogewotICAgIHJl
dHVybiBOTzsKKyAgICBfdG91Y2hFdmVudHNDYW5QcmV2ZW50TmF0aXZlR2VzdHVyZXMgPSBZRVM7
CisKKyAgICByZXR1cm4gW3NlbGYgZ2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVyZVJlY29nbml6ZXIg
aXNJbnRlcnJ1cHRpbmdNb21lbnR1bVNjcm9sbGluZ1dpdGhFdmVudDpldmVudF07CiB9CiAKLS0g
KEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZElnbm9yZVdlYlRvdWNoV2l0aEV2ZW50OihVSUV2
ZW50ICopZXZlbnQKKy0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplciBpc0ludGVycnVwdGluZ01vbWVudHVtU2Nyb2xsaW5nV2l0
aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKIHsKLSAgICBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNo
cm9ub3VzbHkgPSBOTzsKLQogICAgIE5TU2V0PFVJVG91Y2ggKj4gKnRvdWNoZXMgPSBbZXZlbnQg
dG91Y2hlc0Zvckdlc3R1cmVSZWNvZ25pemVyOmdlc3R1cmVSZWNvZ25pemVyXTsKICAgICBmb3Ig
KFVJVG91Y2ggKnRvdWNoIGluIHRvdWNoZXMpIHsKICAgICAgICAgaWYgKFt0b3VjaC52aWV3IGlz
S2luZE9mQ2xhc3M6W1VJU2Nyb2xsVmlldyBjbGFzc11dICYmIFsoVUlTY3JvbGxWaWV3ICopdG91
Y2gudmlldyBfaXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb25dKQpAQCAtNjY4Myw2ICs2NjgzLDI5
IEBAIC0gKHZvaWQpX2hpZGVDb250ZXh0TWVudUhpbnRDb250YWluZXIKICAgICBbX2NvbnRleHRN
ZW51SGludENvbnRhaW5lclZpZXcgc2V0SGlkZGVuOllFU107CiB9CiAKKyNwcmFnbWEgbWFyayAt
IFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZQorCistIChCT09MKWRlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyOihXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyICopZGVmZXJy
aW5nR2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkRGVmZXJHZXN0dXJlc1dpdGhFdmVudDooVUlFdmVu
dCAqKWV2ZW50Cit7CisgICAgcmV0dXJuICFbc2VsZiBnZXN0dXJlUmVjb2duaXplcjpkZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplciBpc0ludGVycnVwdGluZ01vbWVudHVtU2Nyb2xsaW5nV2l0aEV2
ZW50OmV2ZW50XTsKK30KKworLSAoQk9PTClkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcjooV0tE
ZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciAqKWRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHNo
b3VsZERlZmVyT3RoZXJHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyCit7CisgICAgYXV0byBpc011bHRpcGxlVGFwR2VzdHVyZSA9IFtdKFVJ
R2VzdHVyZVJlY29nbml6ZXIgKmdlc3R1cmUpIHsKKyAgICAgICAgcmV0dXJuIFtnZXN0dXJlIGlz
S2luZE9mQ2xhc3M6VUlUYXBHZXN0dXJlUmVjb2duaXplci5jbGFzc10gJiYgWyhVSVRhcEdlc3R1
cmVSZWNvZ25pemVyICopZ2VzdHVyZSBudW1iZXJPZlRhcHNSZXF1aXJlZF0gPiAxOworICAgIH07
CisKKyAgICBpZiAoZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgPT0gX2RlZmVycmluZ0dlc3R1
cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0dXJlcykKKyAgICAgICAgcmV0dXJu
IGdlc3R1cmVSZWNvZ25pemVyICE9IF90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIgJiYgaXNN
dWx0aXBsZVRhcEdlc3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIpOworCisgICAgaWYgKGRlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyID09IF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckltbWVk
aWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzKQorICAgICAgICByZXR1cm4gZ2VzdHVyZVJlY29nbml6
ZXIgIT0gX3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplciAmJiAhaXNNdWx0aXBsZVRhcEdlc3R1
cmUoZ2VzdHVyZVJlY29nbml6ZXIpOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIE5POworfQorCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogc3RhdGljIEJPT0wg
c2hvdWxkRW5hYmxlRHJhZ0ludGVyYWN0aW9uRm9yUG9saWN5KF9XS0RyYWdJbnRlcmFjdGlvblBv
bGljeSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tE
ZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNGQ0OWRkMTFhMDM4
NjY5YjE2MzdmOTY0YWVmNzM1NDFkNjQzMGEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCww
ICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgorCitAY2xhc3MgV0tEZWZlcnJpbmdH
ZXN0dXJlUmVjb2duaXplcjsKKworQHByb3RvY29sIFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6
ZXJEZWxlZ2F0ZQorLSAoQk9PTClkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcjooV0tEZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplciAqKWRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHNob3VsZERl
ZmVyR2VzdHVyZXNXaXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudDsKKy0gKEJPT0wpZGVmZXJyaW5n
R2VzdHVyZVJlY29nbml6ZXI6KFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgKilkZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplciBzaG91bGREZWZlck90aGVyR2VzdHVyZVJlY29nbml6ZXI6KFVJ
R2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcjsKK0BlbmQKKworQGludGVyZmFj
ZSBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIDogVUlHZXN0dXJlUmVjb2duaXplcgorCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLRGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXJEZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2b2lkKXNldERlZmF1bHRQcmV2ZW50ZWQ6
KEJPT0wpZGVmYXVsdFByZXZlbnRlZDsKKy0gKEJPT0wpc2hvdWxkRGVmZXJHZXN0dXJlUmVjb2du
aXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyOworCitAZW5kCisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMjZlMzMzYjI5OGY0MjE0NmYxMzhmYTg1OGJkNmQ4OTU2MDdmYTAxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVy
ZVJlY29nbml6ZXIubW0KQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5oIgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0Bp
bXBsZW1lbnRhdGlvbiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHsKKyAgICBXZWFrT2Jq
Q1B0cjxpZCA8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlPj4gX2RlbGVnYXRl
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLRGVmZXJyaW5n
R2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBpZiAoc2VsZiA9IFtz
dXBlciBpbml0XSkKKyAgICAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpdG91Y2hlc0JlZ2FuOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hl
cyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIFtzdXBlciB0b3VjaGVzQmVnYW46
dG91Y2hlcyB3aXRoRXZlbnQ6ZXZlbnRdOworICAgIGlmIChbX2RlbGVnYXRlIGRlZmVycmluZ0dl
c3R1cmVSZWNvZ25pemVyOnNlbGYgc2hvdWxkRGVmZXJHZXN0dXJlc1dpdGhFdmVudDpldmVudF0p
CisgICAgICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVQb3NzaWJsZTsK
KyAgICBlbHNlCisgICAgICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVG
YWlsZWQ7Cit9CisKKy0gKHZvaWQpdG91Y2hlc0NhbmNlbGxlZDooTlNTZXQ8VUlUb3VjaCAqPiAq
KXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBbc3VwZXIgdG91Y2hl
c0NhbmNlbGxlZDp0b3VjaGVzIHdpdGhFdmVudDpldmVudF07CisgICAgc2VsZi5zdGF0ZSA9IFVJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZUZhaWxlZDsKK30KKworLSAodm9pZClzZXREZWZhdWx0UHJl
dmVudGVkOihCT09MKWRlZmF1bHRQcmV2ZW50ZWQKK3sKKyAgICBpZiAoZGVmYXVsdFByZXZlbnRl
ZCkKKyAgICAgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOwor
ICAgIGVsc2UKKyAgICAgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUZh
aWxlZDsKK30KKworLSAoQk9PTCljYW5CZVByZXZlbnRlZEJ5R2VzdHVyZVJlY29nbml6ZXI6KFVJ
R2VzdHVyZVJlY29nbml6ZXIgKilwcmV2ZW50aW5nR2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBy
ZXR1cm4gTk87Cit9CisKKy0gKEJPT0wpc2hvdWxkRGVmZXJHZXN0dXJlUmVjb2duaXplcjooVUlH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgcmV0dXJuIFtfZGVs
ZWdhdGUgZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6c2VsZiBzaG91bGREZWZlck90aGVyR2Vz
dHVyZVJlY29nbml6ZXI6Z2VzdHVyZVJlY29nbml6ZXJdOworfQorCitAZW5kCisKKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWNiODFjY2MyMDJjZTYyMWIzYWQ4NTFmNWFiYTllNWU0
N2JiMmZjYy4uZDlhNzgxNTEyNDM3M2FjMjI2YjMxYzFlZTE4M2FiZmMwNDE4NjQxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzE3
LDYgKzE3MTcsNyBAQAogCQlGNDM4Q0QyMTIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJl
ZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNQ
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTkxMUZBNTkxMDcwMDJD
QzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1l
bnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oICov
OyB9OworCQlGNDQ4MTU2NDIzODc4MjAwMDA5ODI2NTcgLyogV0tEZWZlcnJpbmdHZXN0dXJlUmVj
b2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ0ODE1NjIyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIu
aCAqLzsgfTsKIAkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NERGRUIw
MUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi87IH07CiAJCUY0OEQyQTg1
MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQyQTg0MjE1ODNBMDIwMEM2NzUyQiAvKiBBcHBLaXRT
UEkuaCAqLzsgfTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
ICovOyB9OwpAQCAtNDgwOCw2ICs0ODA5LDggQEAKIAkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNF
IC8qIF9XS0F0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dL
QXR0YWNobWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBf
V0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudEludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDgxNTYyMjM4NzgyMDAwMDk4
MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdL
RGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS0RlZmVycmluZ0dlc3R1
cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDgxNTYzMjM4
NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlv
cy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJY29uVXRpbGl0aWVzLmg7IHBhdGgg
PSBpb3MvV2ViSWNvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkljb25VdGlsaXRpZXMubW07IHBhdGgg
PSBpb3MvV2ViSWNvblV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ4RDJBODQyMTU4M0EwMjAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNTEsNiArNjE1NCw4
IEBACiAJCQkJMEZDQjRFM0QxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXcubW0gKi8s
CiAJCQkJMEZDQjRFNkExOEJCRjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oICovLAogCQkJCTBGQ0I0RTZCMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gKi8sCisJCQkJRjQ0ODE1NjIyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVmZXJy
aW5nR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKKwkJCQlGNDQ4MTU2MzIzODc4MjAwMDA5ODI2NTcg
LyogV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkyRDIxQTQ1OTIxREVE
NDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCAqLywKIAkJCQkyRDIxQTQ1ODIx
REVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0gKi8sCiAJCQkJMkRDMThG
QUIyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCAqLywKQEAgLTk4MjAsNyArOTgy
NSw2IEBACiAJCQkJNTExRjhBN0IxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFy
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0
ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3
MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBQTc0
NkQ1MjM1OTNEODEwMDA5NTA1MCAvKiBTZWNJdGVtU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25T
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIyNyw2ICsxMDIzMSw3IEBACiAJCQkJMzdBNzA5
QTkxRTNFQTQwQzAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkU5NEZDMTYyMDM1MUE2RDAwOTc0QkEwIC8qIFdLRGF0ZVBpY2tlclZp
ZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzdFQUQ0NTE3RTJDNTFBMDAyRDE5
M0QgLyogV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NDgx
NTY0MjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzM1OUMwRDIxNTQ3MzlGMDA5RTc5NDggLyogV0tEZXByZWNhdGVk
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzcyREIyRjFBNjc3RDRBMDBDNjk3QzUgLyogV0tEaWFn
bm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NUZBMTI0
RkYwMjcwMDY4RjIwQSAvKiBXS0RpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384637</attachid>
            <date>2019-12-02 10:10:30 -0800</date>
            <delta_ts>2019-12-02 12:21:20 -0800</delta_ts>
            <desc>Address comments</desc>
            <filename>bug-204748-20191202101029.patch</filename>
            <type>text/plain</type>
            <size>23258</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiZWExYThjZGZhMDFmYTM1
ZWVjMDU5NmFlMGIzMjg5ODM2YWMzY2YuLjY2YWQ4MzZlOGNhZTZiZjk0YzY4NTJjOWRhZDQ1NzIy
ZWJkYmI2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTktMTItMDIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW50cm9kdWNl
IGEgZ2VzdHVyZSByZWNvZ25pemVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmZXIgcmVjb2duaXRp
b24gb2Ygb3RoZXIgZ2VzdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNDc0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzg2NzA2OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBJbnRyb2R1Y2VzIFdL
RGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIsIHdoaWNoIGlzIHNpbWlsYXIgdG8gVUlLaXQncyBf
VUlSZWxhdGlvbnNoaXBHZXN0dXJlUmVjb2duaXplci4gSW4gYQorICAgICAgICBmdXR1cmUgcGF0
Y2gsIHRoaXMgd2lsbCBiZSBhZGRlZCB0byBXS0NvbnRlbnRWaWV3IHRvIHByZXZlbnQgcGxhdGZv
cm0gZ2VzdHVyZXMgKHBpbmNoaW5nLCBwYW5uaW5nLCBzaW5nbGUvZG91YmxlCisgICAgICAgIHRh
cHMsIGV0Yy4pIGZyb20gcmVjb2duaXppbmcgd2hlbiBkaXNwYXRjaGluZyBhIHByZXZlbnRhYmxl
IHRvdWNoIGV2ZW50IHRvIHRoZSBwYWdlLgorCisgICAgICAgIEFkZGl0aW9uYWxseSByZW5hbWVz
IGEgbWVtYmVyIHZhcmlhYmxlIG9uIFdLQ29udGVudFZpZXcsIGluIHByZXBhcmF0aW9uIGZvciBt
YWtpbmcgdG91Y2ggZ2VzdHVyZSByZWNvZ25pdGlvbgorICAgICAgICBhc3luY2hyb25vdXMuIE5v
IG5ldyB0ZXN0cywgc2luY2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yIHlldC4KKwor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisKKyAgICAgICAgQWRkIHRoZSBuZXcgZmlsZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisK
KyAgICAgICAgQWRkIGEgY291cGxlIG9mIChjdXJyZW50bHkgdW51c2VkKSBkZWZlcnJpbmcgZ2Vz
dHVyZSByZWNvZ25pemVycy4gVGhlc2Ugd2lsbCBiZSBhZGRlZCB0byBXS0NvbnRlbnRWaWV3IGlu
IGEKKyAgICAgICAgZnV0dXJlIHBhdGNoLiBUaGVyZSBhcmUgdHdvIGRlZmVycmluZyBnZXN0dXJl
cyBoZXJlIChvbmUgZm9yICJpbW1lZGlhdGVseSByZXNldHRhYmxlIiBnZXN0dXJlcyBhbmQgYW5v
dGhlciBmb3IKKyAgICAgICAgZ2VzdHVyZXMgZm9yIHdoaWNoIHRoZSByZXNldCBpcyAiZGVmZXJy
ZWQiIC0tIGkuZS4sIG11bHRpLXRhcCBnZXN0dXJlcyk7IHRoaXMgcHJldmVudHMgYSBzaW5nbGUg
ZGVmZXJyaW5nCisgICAgICAgIGdlc3R1cmUgZnJvbSBjb25uZWN0aW5nIHRoZSBlbnRpcmUgZ2Vz
dHVyZSBzdWJncmFwaCB1bmRlciBXS1dlYlZpZXcgdGhyb3VnaCBmYWlsdXJlIGRlcGVuZGVuY2ll
cy4gVGhpcyB3b3VsZAorICAgICAgICByZXN1bHQgaW4gdmFyaW91cyB1c2FiaWxpdHkgaXNzdWVz
LCBzdWNoIGFzIGJlaW5nIHVuYWJsZSB0byBwZXJmb3JtIGEgcGFuIGdlc3R1cmUgdG8gc2Nyb2xs
IFdLU2Nyb2xsVmlldyBpZiBhCisgICAgICAgIHRhcCB3YXMgcmVjb2duaXplZCB3aXRoaW4gdGhl
IGxhc3QgMzAwIG1zLCBzaW5jZSBhbGwgZ2VzdHVyZXMgd291bGQgbmVlZCB0byB3YWl0IHVudGls
IGV2ZXJ5IGRvdWJsZSBhbmQgdHJpcGxlLQorICAgICAgICB0YXAgZ2VzdHVyZSB1bmRlciBXS1dl
YlZpZXcgaGFzIGZhaWxlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rp
b25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVk
Ol0pOgorCisgICAgICAgIFJlbmFtZSBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkg
dG8gX3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzIGluIHByZXBhcmF0aW9uIGZv
ciBhZGRpbmcgYQorICAgICAgICBjb2RlcGF0aCBmb3IgZnVsbHkgYXN5bmNocm9ub3VzIHRvdWNo
IGV2ZW50IGRpc3BhdGNoOyB3ZSBhbHNvIGZsaXAgdGhlIGNvbmRpdGlvbmFsIGluIGFueSBwbGFj
ZXMgd2hlcmUKKyAgICAgICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5IHdhcyBw
cmV2aW91c2x5IHNldCBvciByZWFkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dlYlRv
dWNoRXZlbnQ6cHJldmVudHNOYXRpdmVHZXN0dXJlczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuT3JQaW5jaEdlc3R1cmVdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRJZ25vcmVXZWJUb3VjaFdpdGhF
dmVudDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjppc0lu
dGVycnVwdGluZ01vbWVudHVtU2Nyb2xsaW5nV2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyOnNob3VsZERlZmVyR2VzdHVyZXNX
aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXI6c2hvdWxkRGVmZXJPdGhlckdlc3R1cmVSZWNvZ25pemVyOl0pOgorCisgICAgICAg
IEltcGxlbWVudCBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzaG91bGRJZ25vcmVXZWJUb3VjaF0pOiBEZWxldGVkLgorCisg
ICAgICAgIERyaXZlLWJ5IGZpeDogcmVtb3ZlIHRoaXMgdW5uZWNlc3NhcnkgbWV0aG9kIGltcGxl
bWVudGF0aW9uLCBhbmQgdGhlIHJlbGF0ZWQgRklYTUUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBpbml0V2l0aERlZmVycmluZ0dlc3R1
cmVEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBk
ZWZlcnJpbmdHZXN0dXJlRGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tEZWZlcnJpbmdHZXN0dXJl
UmVjb2duaXplciB0b3VjaGVzQmVnYW46d2l0aEV2ZW50Ol0pOgorCisgICAgICAgIFVubGVzcyB0
aGUgdG91Y2ggaXMgaW50ZXJydXB0cyBtb21lbnR1bSBzY3JvbGxpbmcsIFdLRGVmZXJyaW5nR2Vz
dHVyZVJlY29nbml6ZXIgc2hvdWxkIHRyYW5zaXRpb24gdG8gUG9zc2libGUKKyAgICAgICAgc3Rh
dGUgd2hlbiBzdGFydGluZyBhIHRvdWNoLiBMYXRlciwgLXNldERlZmF1bHRQcmV2ZW50ZWQ6IGlz
IGludm9rZWQsIHdoaWNoIHdpbGwgZWl0aGVyIHRyYW5zaXRpb24gdGhlIGRlZmVycmluZworICAg
ICAgICBnZXN0dXJlIHJlY29nbml6ZXIgdG8gRmFpbGVkIHN0YXRlICh0aGVyZWJ5IGFsbG93aW5n
IG5hdGl2ZSBnZXN0dXJlcyB0byBiZWdpbiksIG9yIEVuZGVkIHN0YXRlIChwcmV2ZW50aW5nIG90
aGVyCisgICAgICAgIG5hdGl2ZSBnZXN0dXJlcykuCisKKyAgICAgICAgKC1bV0tEZWZlcnJpbmdH
ZXN0dXJlUmVjb2duaXplciB0b3VjaGVzQ2FuY2VsbGVkOndpdGhFdmVudDpdKToKKyAgICAgICAg
KC1bV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBzZXREZWZhdWx0UHJldmVudGVkOl0pOgor
ICAgICAgICAoLVtXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIGNhbkJlUHJldmVudGVkQnlH
ZXN0dXJlUmVjb2duaXplcjpdKToKKworICAgICAgICBSZXR1cm4gTk8gaGVyZSB0byBwcmV2ZW50
IGNlcnRhaW4gcGxhdGZvcm0gZ2VzdHVyZXMgKGUuZy4gc2Nyb2xsIHZpZXcgcGFubmluZykgZnJv
bSBjYXVzaW5nIHRoZSBkZWZlcnJpbmcKKyAgICAgICAgZ2VzdHVyZSB0byBGYWlsZWQgc3RhdGUs
IHdoZW4gdGhlc2UgZ2VzdHVyZXMgYXR0ZW1wdCB0byB0cmFuc2l0aW9uIGZyb20gUG9zc2libGUg
dG8gQmVnYW4gc3RhdGUuCisKKyAgICAgICAgKC1bV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXpl
ciBzaG91bGREZWZlckdlc3R1cmVSZWNvZ25pemVyOl0pOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEyLTAyICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtQU09OXSBDcmFzaCBpbiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggNjNjNGRmYTEwYWIwOTQ4YzI2MGFhMjk1NzliMzA1YjBhMjE2NjE3
OC4uZjRiZGViNTcwNzFkMzBmODVjMGQxYWE1M2U0N2Q5ZjM5MTIyODA4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtNDI2LDYgKzQyNiw3IEBAIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVl
dEFzc2lzdGFudC5tbQogVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1Zp
ZXcubW0KIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBAbm8tdW5pZnkKIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIEBuby11bmlmeQorVUlQcm9jZXNzL2lv
cy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tCiBVSVByb2Nlc3MvaW9zL1dLRHJhd2lu
Z0Nvb3JkaW5hdG9yLm1tCiBVSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW0KIFVJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggOTJkYTYw
M2VlOTk0NzNkZTZiMDEyZGE1NjMyNWI0M2YyY2RjNzQ4Ny4uNjM4ZDM4ZjVjZjFmZGM2MzFiNTg4
YTlmMGExMWNiYTc4NmI2Y2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtNDIsNiArNDIsNyBAQAogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaCIKICNp
bXBvcnQgIldLQWlyUGxheVJvdXRlUGlja2VyLmgiCisjaW1wb3J0ICJXS0RlZmVycmluZ0dlc3R1
cmVSZWNvZ25pemVyLmgiCiAjaW1wb3J0ICJXS0ZpbGVVcGxvYWRQYW5lbC5oIgogI2ltcG9ydCAi
V0tGb3JtUGVyaXBoZXJhbC5oIgogI2ltcG9ydCAiV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
LmgiCkBAIC0yMDQsOSArMjA1LDExIEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiBA
ZW5kCiAKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoKSB7CisgICAgUmV0YWluUHRyPFdLRGVm
ZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI+IF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvcklt
bWVkaWF0ZWx5UmVzZXR0YWJsZUdlc3R1cmVzOworICAgIFJldGFpblB0cjxXS0RlZmVycmluZ0dl
c3R1cmVSZWNvZ25pemVyPiBfZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJGb3JEZWxheWVkUmVz
ZXR0YWJsZUdlc3R1cmVzOwogICAgIFJldGFpblB0cjxVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJl
Y29nbml6ZXI+IF90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXI7CiAKLSAgICBCT09MIF9jYW5T
ZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseTsKKyAgICBCT09MIF90b3VjaEV2ZW50c0NhblBy
ZXZlbnROYXRpdmVHZXN0dXJlczsKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgQk9P
TCBfcHJldmVudHNQYW5uaW5nSW5YQXhpczsKICAgICBCT09MIF9wcmV2ZW50c1Bhbm5pbmdJbllB
eGlzOwpAQCAtMzk4LDcgKzQwMSw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAK
IEBlbmQKIAotQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS0ludGVyYWN0aW9uKSA8VUlHZXN0
dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVRleHRBdXRvc2Nyb2xsaW5nLCBVSVRleHRJbnB1dE11
bHRpRG9jdW1lbnQsIFVJVGV4dElucHV0UHJpdmF0ZSwgVUlXZWJGb3JtQWNjZXNzb3J5RGVsZWdh
dGUsIFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplckRlbGVnYXRlLCBVSVdLSW50ZXJh
Y3Rpb25WaWV3UHJvdG9jb2wsIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZSwgV0tGaWxl
VXBsb2FkUGFuZWxEZWxlZ2F0ZSwgV0tLZXlib2FyZFNjcm9sbFZpZXdBbmltYXRvckRlbGVnYXRl
CitAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLSW50ZXJhY3Rpb24pIDxVSUdlc3R1cmVSZWNv
Z25pemVyRGVsZWdhdGUsIFVJVGV4dEF1dG9zY3JvbGxpbmcsIFVJVGV4dElucHV0TXVsdGlEb2N1
bWVudCwgVUlUZXh0SW5wdXRQcml2YXRlLCBVSVdlYkZvcm1BY2Nlc3NvcnlEZWxlZ2F0ZSwgVUlX
ZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUsIFVJV0tJbnRlcmFjdGlvblZp
ZXdQcm90b2NvbCwgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlLCBXS0ZpbGVVcGxvYWRQ
YW5lbERlbGVnYXRlLCBXS0tleWJvYXJkU2Nyb2xsVmlld0FuaW1hdG9yRGVsZWdhdGUsIFdLRGVm
ZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZQogI2lmICFQTEFURk9STShXQVRDSE9TKSAm
JiAhUExBVEZPUk0oQVBQTEVUVikKICAgICAsIFdLU2hhcmVTaGVldERlbGVnYXRlCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IDRmMzA2ZjUyYjk4NDkzYWQ5ZTlhMDBkNTc2ZWJkN2NlMTc5NjIz
NzAuLmQyN2ZhMzk2OGYyZWE3ZTYwZDZhZmU1Njg4YjhjZDU5MGZhYjg5MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtODQ0LDYgKzg0NCw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIF9h
Y3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0FjdGlvblNoZWV0QXNzaXN0YW50IGFs
bG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwogICAgIFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgc2V0
RGVsZWdhdGU6c2VsZl07CiAgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBtYWtl
VW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CisgICAg
X3RvdWNoRXZlbnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzID0gWUVTOwogICAgIF9pc0V4cGVj
dGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVz
cyA9IE5POwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKQEAgLTE0MTAsMTkgKzE0MTEs
MTkgQEAgLSAodm9pZClfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVkOihVSVdlYlRvdWNoRXZlbnRz
R2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmUKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50IG5hdGl2ZVdlYlRvdWNoRXZlbnQgeyBs
YXN0VG91Y2hFdmVudCwgZ2VzdHVyZVJlY29nbml6ZXJNb2RpZmllckZsYWdzKGdlc3R1cmVSZWNv
Z25pemVyKSB9OwotICAgIG5hdGl2ZVdlYlRvdWNoRXZlbnQuc2V0Q2FuUHJldmVudE5hdGl2ZUdl
c3R1cmVzKCFfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkgfHwgW2dlc3R1cmVSZWNv
Z25pemVyIGlzRGVmYXVsdFByZXZlbnRlZF0pOworICAgIG5hdGl2ZVdlYlRvdWNoRXZlbnQuc2V0
Q2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzKF90b3VjaEV2ZW50c0NhblByZXZlbnROYXRpdmVHZXN0
dXJlcyB8fCBbZ2VzdHVyZVJlY29nbml6ZXIgaXNEZWZhdWx0UHJldmVudGVkXSk7CiAKICNpZiBF
TkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgW3NlbGYgX2hhbmRsZVRvdWNoQWN0aW9uc0ZvclRv
dWNoRXZlbnQ6bmF0aXZlV2ViVG91Y2hFdmVudF07CiAjZW5kaWYKIAotICAgIGlmIChfY2FuU2Vu
ZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkpCi0gICAgICAgIF9wYWdlLT5oYW5kbGVUb3VjaEV2
ZW50QXN5bmNocm9ub3VzbHkobmF0aXZlV2ViVG91Y2hFdmVudCk7Ci0gICAgZWxzZQorICAgIGlm
IChfdG91Y2hFdmVudHNDYW5QcmV2ZW50TmF0aXZlR2VzdHVyZXMpCiAgICAgICAgIF9wYWdlLT5o
YW5kbGVUb3VjaEV2ZW50U3luY2hyb25vdXNseShuYXRpdmVXZWJUb3VjaEV2ZW50KTsKKyAgICBl
bHNlCisgICAgICAgIF9wYWdlLT5oYW5kbGVUb3VjaEV2ZW50QXN5bmNocm9ub3VzbHkobmF0aXZl
V2ViVG91Y2hFdmVudCk7CiAKICAgICBpZiAobmF0aXZlV2ViVG91Y2hFdmVudC5hbGxUb3VjaFBv
aW50c0FyZVJlbGVhc2VkKCkpIHsKLSAgICAgICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJv
bm91c2x5ID0gTk87CisgICAgICAgIF90b3VjaEV2ZW50c0NhblByZXZlbnROYXRpdmVHZXN0dXJl
cyA9IFlFUzsKIAogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICAgICAgaWYgKCFfcGFn
ZS0+aXNTY3JvbGxpbmdPclpvb21pbmcoKSkKQEAgLTE1OTIsNyArMTU5Myw3IEBAIC0gKHZvaWQp
X3dlYlRvdWNoRXZlbnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudCYpdG91Y2hF
dmVudCBwcmV2ZW50c05hCiAgICAgaWYgKHByZXZlbnRzTmF0aXZlR2VzdHVyZSkgewogICAgICAg
ICBfbG9uZ1ByZXNzQ2FuQ2xpY2sgPSBOTzsKIAotICAgICAgICBfY2FuU2VuZFRvdWNoRXZlbnRz
QXN5bmNocm9ub3VzbHkgPSBZRVM7CisgICAgICAgIF90b3VjaEV2ZW50c0NhblByZXZlbnROYXRp
dmVHZXN0dXJlcyA9IE5POwogICAgICAgICBbX3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplciBz
ZXREZWZhdWx0UHJldmVudGVkOllFU107CiAgICAgfQogfQpAQCAtMjc5Nyw3ICsyNzk4LDcgQEAg
LSAodm9pZClzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuT3JQaW5jaEdlc3R1cmUKIAogICAgIFtfa2V5
Ym9hcmRTY3JvbGxpbmdBbmltYXRvciB3aWxsU3RhcnRJbnRlcmFjdGl2ZVNjcm9sbF07CiAKLSAg
ICBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkgPSBZRVM7CisgICAgX3RvdWNoRXZl
bnRzQ2FuUHJldmVudE5hdGl2ZUdlc3R1cmVzID0gTk87CiB9CiAKIC0gKHZvaWQpX2RpZEVuZFNj
cm9sbGluZ09yWm9vbWluZwpAQCAtNjQ1OCwxNiArNjQ1OSwxNSBAQCAtICh2b2lkKV9wcmVzZXJ2
ZUZvY3VzV2l0aFRva2VuOihpZCA8TlNDb3B5aW5nLCBOU1NlY3VyZUNvZGluZz4pdG9rZW4gZGVz
dHJ1Y3RpdgogCiAjcHJhZ21hIG1hcmsgLSBJbXBsZW1lbnRhdGlvbiBvZiBVSVdlYlRvdWNoRXZl
bnRzR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZS4KIAotLy8gRklYTUU6IFJlbW92ZSBvbmNlIC1n
ZXN0dXJlUmVjb2duaXplcjpzaG91bGRJZ25vcmVXZWJUb3VjaFdpdGhFdmVudDogaXMgaW4gVUlX
ZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyLmguIFJlZmVyIHRvIDxyZGFyOi8vcHJvYmxl
bS8zMzIxNzUyNT4gZm9yIG1vcmUgZGV0YWlscy4KLS0gKEJPT0wpc2hvdWxkSWdub3JlV2ViVG91
Y2gKKy0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZElnbm9yZVdlYlRvdWNoV2l0aEV2ZW50
OihVSUV2ZW50ICopZXZlbnQKIHsKLSAgICByZXR1cm4gTk87CisgICAgX3RvdWNoRXZlbnRzQ2Fu
UHJldmVudE5hdGl2ZUdlc3R1cmVzID0gWUVTOworCisgICAgcmV0dXJuIFtzZWxmIGdlc3R1cmVS
ZWNvZ25pemVyOmdlc3R1cmVSZWNvZ25pemVyIGlzSW50ZXJydXB0aW5nTW9tZW50dW1TY3JvbGxp
bmdXaXRoRXZlbnQ6ZXZlbnRdOwogfQogCi0tIChCT09MKWdlc3R1cmVSZWNvZ25pemVyOihVSVdl
YlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplciBzaG91bGRJ
Z25vcmVXZWJUb3VjaFdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50CistIChCT09MKWdlc3R1cmVS
ZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIgaXNJbnRl
cnJ1cHRpbmdNb21lbnR1bVNjcm9sbGluZ1dpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50CiB7Ci0g
ICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5ID0gTk87Ci0KICAgICBOU1NldDxV
SVRvdWNoICo+ICp0b3VjaGVzID0gW2V2ZW50IHRvdWNoZXNGb3JHZXN0dXJlUmVjb2duaXplcjpn
ZXN0dXJlUmVjb2duaXplcl07CiAgICAgZm9yIChVSVRvdWNoICp0b3VjaCBpbiB0b3VjaGVzKSB7
CiAgICAgICAgIGlmIChbdG91Y2gudmlldyBpc0tpbmRPZkNsYXNzOltVSVNjcm9sbFZpZXcgY2xh
c3NdXSAmJiBbKFVJU2Nyb2xsVmlldyAqKXRvdWNoLnZpZXcgX2lzSW50ZXJydXB0aW5nRGVjZWxl
cmF0aW9uXSkKQEAgLTY2ODMsNiArNjY4MywyOSBAQCAtICh2b2lkKV9oaWRlQ29udGV4dE1lbnVI
aW50Q29udGFpbmVyCiAgICAgW19jb250ZXh0TWVudUhpbnRDb250YWluZXJWaWV3IHNldEhpZGRl
bjpZRVNdOwogfQogCisjcHJhZ21hIG1hcmsgLSBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVy
RGVsZWdhdGUKKworLSAoQk9PTClkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplcjooV0tEZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplciAqKWRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyIHNob3VsZERl
ZmVyR2VzdHVyZXNXaXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIHJldHVybiAhW3Nl
bGYgZ2VzdHVyZVJlY29nbml6ZXI6ZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgaXNJbnRlcnJ1
cHRpbmdNb21lbnR1bVNjcm9sbGluZ1dpdGhFdmVudDpldmVudF07Cit9CisKKy0gKEJPT0wpZGVm
ZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6KFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgKilk
ZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciBzaG91bGREZWZlck90aGVyR2VzdHVyZVJlY29nbml6
ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgoreworICAgIGF1dG8g
aXNNdWx0aXBsZVRhcEdlc3R1cmUgPSBbXShVSUdlc3R1cmVSZWNvZ25pemVyICpnZXN0dXJlKSB7
CisgICAgICAgIHJldHVybiBbZ2VzdHVyZSBpc0tpbmRPZkNsYXNzOlVJVGFwR2VzdHVyZVJlY29n
bml6ZXIuY2xhc3NdICYmIFsoVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmUgbnVtYmVy
T2ZUYXBzUmVxdWlyZWRdID4gMTsKKyAgICB9OworCisgICAgaWYgKGRlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyID09IF9kZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckZvckRlbGF5ZWRSZXNldHRh
YmxlR2VzdHVyZXMpCisgICAgICAgIHJldHVybiBnZXN0dXJlUmVjb2duaXplciAhPSBfdG91Y2hF
dmVudEdlc3R1cmVSZWNvZ25pemVyICYmIGlzTXVsdGlwbGVUYXBHZXN0dXJlKGdlc3R1cmVSZWNv
Z25pemVyKTsKKworICAgIGlmIChkZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciA9PSBfZGVmZXJy
aW5nR2VzdHVyZVJlY29nbml6ZXJGb3JJbW1lZGlhdGVseVJlc2V0dGFibGVHZXN0dXJlcykKKyAg
ICAgICAgcmV0dXJuIGdlc3R1cmVSZWNvZ25pemVyICE9IF90b3VjaEV2ZW50R2VzdHVyZVJlY29n
bml6ZXIgJiYgIWlzTXVsdGlwbGVUYXBHZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyKTsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOTzsKK30KKwogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAKIHN0YXRpYyBCT09MIHNob3VsZEVuYWJsZURyYWdJbnRlcmFjdGlvbkZv
clBvbGljeShfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgcG9saWN5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTY4NjJiNjMwY2I5YWU5ZmVjMDVlNDQzZmNkYTQ2YmFlYjU0Nzc1Mwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCA8VUlLaXQvVUlL
aXQuaD4KKworQGNsYXNzIFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI7CisKK0Bwcm90b2Nv
bCBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUKKy0gKEJPT0wpZGVmZXJyaW5n
R2VzdHVyZVJlY29nbml6ZXI6KFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgKilkZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplciBzaG91bGREZWZlckdlc3R1cmVzV2l0aEV2ZW50OihVSUV2ZW50
ICopZXZlbnQ7CistIChCT09MKWRlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyOihXS0RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyICopZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIgc2hvdWxkRGVm
ZXJPdGhlckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJl
Y29nbml6ZXI7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXpl
ciA6IFVJR2VzdHVyZVJlY29nbml6ZXIKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVmZXJy
aW5nR2VzdHVyZURlbGVnYXRlOihpZCA8V0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplckRlbGVn
YXRlPilkZWZlcnJpbmdHZXN0dXJlRGVsZWdhdGU7CistICh2b2lkKXNldERlZmF1bHRQcmV2ZW50
ZWQ6KEJPT0wpZGVmYXVsdFByZXZlbnRlZDsKKy0gKEJPT0wpc2hvdWxkRGVmZXJHZXN0dXJlUmVj
b2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyOworCitAcHJv
cGVydHkgKG5vbmF0b21pYywgd2VhaywgcmVhZG9ubHkpIGlkIDxXS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyRGVsZWdhdGU+IGRlZmVycmluZ0dlc3R1cmVEZWxlZ2F0ZTsKKworQGVuZAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWIzNzYwOTdhM2EwNDEyZWExZDk4M2Q5NGM2NzU4ZDYyYmI0NjY3OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyLm1tCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCIKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitAaW1w
bGVtZW50YXRpb24gV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplciB7CisgICAgV2Vha09iakNQ
dHI8aWQgPFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZT4+IF9kZWZlcnJpbmdH
ZXN0dXJlRGVsZWdhdGU7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlZmVycmluZ0dl
c3R1cmVEZWxlZ2F0ZTooaWQgPFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0ZT4p
ZGVmZXJyaW5nR2VzdHVyZURlbGVnYXRlCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0p
CisgICAgICAgIF9kZWZlcnJpbmdHZXN0dXJlRGVsZWdhdGUgPSBkZWZlcnJpbmdHZXN0dXJlRGVs
ZWdhdGU7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkIDxXS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyRGVsZWdhdGU+KWRlZmVycmluZ0dlc3R1cmVEZWxlZ2F0ZQoreworICAgIHJldHVy
biBfZGVmZXJyaW5nR2VzdHVyZURlbGVnYXRlLmdldCgpLmdldCgpOworfQorCistICh2b2lkKXRv
dWNoZXNCZWdhbjooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50
ICopZXZlbnQKK3sKKyAgICBbc3VwZXIgdG91Y2hlc0JlZ2FuOnRvdWNoZXMgd2l0aEV2ZW50OmV2
ZW50XTsKKyAgICBpZiAoW19kZWZlcnJpbmdHZXN0dXJlRGVsZWdhdGUgZGVmZXJyaW5nR2VzdHVy
ZVJlY29nbml6ZXI6c2VsZiBzaG91bGREZWZlckdlc3R1cmVzV2l0aEV2ZW50OmV2ZW50XSkKKyAg
ICAgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZVBvc3NpYmxlOworICAg
IGVsc2UKKyAgICAgICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUZhaWxl
ZDsKK30KKworLSAodm9pZCl0b3VjaGVzQ2FuY2VsbGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91
Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIFtzdXBlciB0b3VjaGVzQ2Fu
Y2VsbGVkOnRvdWNoZXMgd2l0aEV2ZW50OmV2ZW50XTsKKyAgICBzZWxmLnN0YXRlID0gVUlHZXN0
dXJlUmVjb2duaXplclN0YXRlRmFpbGVkOworfQorCistICh2b2lkKXNldERlZmF1bHRQcmV2ZW50
ZWQ6KEJPT0wpZGVmYXVsdFByZXZlbnRlZAoreworICAgIGlmIChkZWZhdWx0UHJldmVudGVkKQor
ICAgICAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQ7CisgICAg
ZWxzZQorICAgICAgICBzZWxmLnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRmFpbGVk
OworfQorCistIChCT09MKWNhbkJlUHJldmVudGVkQnlHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0
dXJlUmVjb2duaXplciAqKXByZXZlbnRpbmdHZXN0dXJlUmVjb2duaXplcgoreworICAgIHJldHVy
biBOTzsKK30KKworLSAoQk9PTClzaG91bGREZWZlckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1
cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICByZXR1cm4gW19kZWZlcnJp
bmdHZXN0dXJlRGVsZWdhdGUgZGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXI6c2VsZiBzaG91bGRE
ZWZlck90aGVyR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVyZVJlY29nbml6ZXJdOworfQorCitAZW5k
CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWNiODFjY2MyMDJjZTYyMWIzYWQ4
NTFmNWFiYTllNWU0N2JiMmZjYy4uZDlhNzgxNTEyNDM3M2FjMjI2YjMxYzFlZTE4M2FiZmMwNDE4
NjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNzE3LDYgKzE3MTcsNyBAQAogCQlGNDM4Q0QyMTIyNDFGNjk1MDBERTZEREEgLyog
V0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdl
UHJlZmVyZW5jZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTkx
MUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8q
IF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJ
bnRlcm5hbC5oICovOyB9OworCQlGNDQ4MTU2NDIzODc4MjAwMDA5ODI2NTcgLyogV0tEZWZlcnJp
bmdHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ0ODE1NjIyMzg3ODIwMDAwOTgyNjU3IC8qIFdLRGVmZXJyaW5nR2VzdHVy
ZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYklj
b25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi87IH07
CiAJCUY0OEQyQTg1MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQyQTg0MjE1ODNBMDIwMEM2NzUy
QiAvKiBBcHBLaXRTUEkuaCAqLzsgfTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAwNEMxNzU3IC8qIERy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5oICovOyB9OwpAQCAtNDgwOCw2ICs0ODA5LDggQEAKIAkJRjQ0MjkxOTExRkE1
OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNo
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQyOTE5MzFGQTU5MzExMDAy
Q0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F0dGFj
aG1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI5MTk1MUZBNTk0MkEw
MDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0
YWNobWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDgxNTYy
MjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS0Rl
ZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUY0NDgxNTYzMjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5t
bTsgcGF0aCA9IGlvcy9XS0RlZmVycmluZ0dlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0
aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJY29uVXRpbGl0
aWVzLmg7IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkljb25VdGlsaXRp
ZXMubW07IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ4RDJBODQyMTU4M0EwMjAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBcHBLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYx
NTEsNiArNjE1NCw4IEBACiAJCQkJMEZDQjRFM0QxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQ29udGVu
dFZpZXcubW0gKi8sCiAJCQkJMEZDQjRFNkExOEJCRjI2QTAwMEZDRkM5IC8qIFdLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oICovLAogCQkJCTBGQ0I0RTZCMThCQkYyNkEwMDBGQ0ZDOSAvKiBXS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gKi8sCisJCQkJRjQ0ODE1NjIyMzg3ODIwMDAwOTgyNjU3
IC8qIFdLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCAqLywKKwkJCQlGNDQ4MTU2MzIzODc4
MjAwMDA5ODI2NTcgLyogV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQky
RDIxQTQ1OTIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IuaCAqLywKIAkJ
CQkyRDIxQTQ1ODIxREVENDlCMDAyNDg3RTcgLyogV0tEcmF3aW5nQ29vcmRpbmF0b3IubW0gKi8s
CiAJCQkJMkRDMThGQUIyMTg5MTA0ODAwMjVBODhEIC8qIFdLRHJhd2luZ1ZpZXcuaCAqLywKQEAg
LTk4MjAsNyArOTgyNSw2IEBACiAJCQkJNTExRjhBN0IxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0
ZW1TaGltTGlicmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4RTY5MEMxNjlCNTYzRjAwOUI2
NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEU2OTE4MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAotCQkJCTdBQTc0NkQ1MjM1OTNEODEwMDA5NTA1MCAvKiBTZWNJdGVtU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NzBBQjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2Vz
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4RkZB
IC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIyNyw2ICsxMDIzMSw3IEBA
CiAJCQkJMzdBNzA5QTkxRTNFQTQwQzAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU5NEZDMTYyMDM1MUE2RDAwOTc0QkEwIC8qIFdL
RGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzdFQUQ0NTE3
RTJDNTFBMDAyRDE5M0QgLyogV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY0NDgxNTY0MjM4NzgyMDAwMDk4MjY1NyAvKiBXS0RlZmVycmluZ0dlc3R1cmVSZWNv
Z25pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzM1OUMwRDIxNTQ3MzlGMDA5RTc5NDggLyog
V0tEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzcyREIyRjFBNjc3RDRBMDBDNjk3
QzUgLyogV0tEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDA3NUZBMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICov
LAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>