<?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>148509</bug_id>
          
          <creation_ts>2015-08-26 19:54:35 -0700</creation_ts>
          <short_desc>Factor out Lookup invocation</short_desc>
          <delta_ts>2015-08-27 14:25:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>dbates</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121170</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-26 19:54:35 -0700</bug_when>
    <thetext>Factor out Lookup invocation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121171</commentid>
    <comment_count>1</comment_count>
      <attachid>260022</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-26 19:55:17 -0700</bug_when>
    <thetext>Created attachment 260022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121388</commentid>
    <comment_count>2</comment_count>
      <attachid>260076</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-27 12:09:21 -0700</bug_when>
    <thetext>Created attachment 260076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121391</commentid>
    <comment_count>3</comment_count>
      <attachid>260077</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-27 12:11:57 -0700</bug_when>
    <thetext>Created attachment 260077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121393</commentid>
    <comment_count>4</comment_count>
      <attachid>260079</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-27 12:20:08 -0700</bug_when>
    <thetext>Created attachment 260079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121418</commentid>
    <comment_count>5</comment_count>
      <attachid>260079</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-08-27 14:16:30 -0700</bug_when>
    <thetext>Comment on attachment 260079
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:470
&gt; +    return (id&lt;NSImmediateActionAnimationController&gt;)DictionaryLookup::animationControllerForPopup(dictionaryPopupInfo, _wkView, [self](TextIndicator&amp; textIndicator) {

Why do you need the cast here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121420</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-27 14:19:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 260079 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260079&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm:470
&gt; &gt; +    return (id&lt;NSImmediateActionAnimationController&gt;)DictionaryLookup::animationControllerForPopup(dictionaryPopupInfo, _wkView, [self](TextIndicator&amp; textIndicator) {
&gt; 
&gt; Why do you need the cast here?

I don&apos;t, anymore! (In a previous version of the patch, it always returned void*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121427</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-27 14:25:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/189052</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260022</attachid>
            <date>2015-08-26 19:55:17 -0700</date>
            <delta_ts>2015-08-27 12:09:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148509-20150826195519.patch</filename>
            <type>text/plain</type>
            <size>71994</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjY2U5OTM2ZmYzNjIx
OTUzMTg2NGNkMDhlNWE0NTk5M2Y1ZDhlZi4uMDVjMTlmYTMyMmU0NmU3MWEwZGMxNjBhYzJmZWI2
N2U5ZDUyZmZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTA4LTI2ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3Ig
b3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVyZSdzIGEgdG9uIG9mIGR1cGxpY2F0ZWQgY29kZSBpbiBsZWdhY3kg
YW5kIG1vZGVybiBXZWJLaXQgdG8gdGFsayB0bworICAgICAgICBMb29rdXAuIEFuZCwgaXQncyBw
cmV0dHkgbWVzc3kuIEFzIGEgZmlyc3Qgc3RlcCB0byBtYWtpbmcgaXQgbGVzcyBtZXNzeSwKKyAg
ICAgICAgbWFrZSBpdCBzbyB3ZSBvbmx5IGhhdmUgaXQgaW4gb25lIHBsYWNlIGluc3RlYWQgb2Yg
Zm91ciAob3IgdHdvKS4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAu
aDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9yUERGU2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3dQb3B1cE9yQ3JlYXRlQW5pbWF0aW9uQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5TG9va3VwOjpzaG93UG9wdXApOgorICAgICAgICAo
V2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1cDo6aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpY3Rpb25hcnlMb29rdXA6OmFuaW1hdGlvbkNvbnRyb2xsZXJGb3JQb3B1cCk6CisgICAgICAg
IChXZWJDb3JlOjpyYW5nZUZvckRpY3Rpb25hcnlMb29rdXBGb3JTZWxlY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6cmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVz
dWx0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRpY3Rpb25hcnlMb29rdXBGb3JQREZT
ZWxlY3Rpb24pOiBEZWxldGVkLgorICAgICAgICBNb3ZlIERpY3Rpb25hcnlMb29rdXAgc3R1ZmYg
aW50byBhIGNsYXNzIGZvciBiZXR0ZXIgbmFtZXMuCisKKyAgICAgICAgTW92ZSBEaWN0aW9uYXJ5
UG9wdXBJbmZvIGludG8gRGljdGlvbmFyeUxvb2t1cC5oLiBUaGlzIHdhcyBkdXBsaWNhdGVkCisg
ICAgICAgIGluIGJvdGggbGVnYWN5IGFuZCBtb2Rlcm4gV2ViS2l0LgorCisgICAgICAgIE1vdmUg
c2hvd1BvcHVwLCBoaWRlUG9wdXAsIGFuZCBhbmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAgaGVy
ZS4KKyAgICAgICAgc2hvd1BvcHVwIGFuZCBhbmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAgYm90
aCBib3R0bGVuZWNrIHRocm91Z2gKKyAgICAgICAgYSBzaW5nbGUgZnVuY3Rpb24sIHdoZXJlIHBy
ZXZpb3VzbHkgd2UgZHVwbGljYXRlZCBhbGwgb2YgdGhlIGNvZGUKKyAgICAgICAgZm9yIGJvdGgg
b2YgdGhlbSwgYW5kIGluIGJvdGggbGVnYWN5IGFuZCBtb2Rlcm4gV2ViS2l0LgorCisgICAgICAg
IHNob3dQb3B1cCBhbmQgYW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwIHRha2UgYSBibG9jayB0
aGF0IHRoZXkgKm1heSoKKyAgICAgICAgY2FsbCBpZiB3ZSBoYXZlIHN1cHBvcnQgZm9yIG92ZXJy
aWRpbmcgTG9va3VwJ3MgaW5kaWNhdG9yIHdpdGggVGV4dEluZGljYXRvciwKKyAgICAgICAgYmVj
YXVzZSB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXMgZGlmZmVyZW50IHBlciBXZWJLaXQuCisK
KyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHRCYXNlZE9u
TG9va3VwKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24pOgorICAg
ICAgICBBZGp1c3QgdG8gdGhlIG5ldyBuYW1pbmcuCisKIDIwMTUtMDgtMjYgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIHdhdGNoZG9nIG1fZGlkRmlyZSBzdGF0ZSBl
cnJvbmVvdXNseSByZXRhaW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmViMWMxMjczZDY2ZGFjZGUxODA2ODZl
YzgyYjI0NWE4NDFlYzBkYy4uNjgyYWM0OTQ1Y2E1NzJmMzAxMmEzZjg0MmNmMmY5OWE1ZWYxMTA1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wOC0yNiAgVGltb3RoeSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIG91dCBMb29rdXAg
aW52b2NhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4NTA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wOC0yNiAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IGJ1aWxk
IGFmdGVyIHIxODg5ODIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMjRlYmFmM2VjODRkNTA1YzQyODFm
ZTFhNGJlZmEyY2IzZmZjOTMzOS4uYWYwYWRlYjIxZmRlNjczMDliODNlMzY3NDZiYTQ3OWY1Nzg1
ODQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA4LTI2ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3Ig
b3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlZpZXcvRGljdGlvbmFyeVBvcHVwSW5mby5oOiBSZW1vdmVkLgor
ICAgICAgICBNb3ZlIHRvIFdlYkNvcmUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfbG9va1VwSW5EaWN0aW9uYXJ5RnJvbU1lbnU6
XSk6CisgICAgICAgIERpY3Rpb25hcnlQb3B1cEluZm8ga2VlcHMgYSBUZXh0SW5kaWNhdG9yRGF0
YSwgbm90IGEgVGV4dEluZGljYXRvci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRhdGFEZXRlY3RlZExpbmtdKToKKyAgICAgICAg
KGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSk6CisgICAgICAgICgtW1dlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVwYXJlRm9yRGljdGlv
bmFyeUxvb2t1cF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9hbmltYXRpb25Db250cm9sbGVyRm9y
RGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VGV4
dEluZGljYXRvcjp3aXRoTGlmZXRpbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Nob3dEaWN0
aW9uYXJ5TG9va3VwUG9wdXA6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgTW92ZSBhIGJ1bmNoIG9mIGNvZGUgdG8gV2ViQ29yZS4KKyAgICAgICAgRmFj
dG9yIHNvbWUgdGhhdCBoYXMgdG8gc3RheSBvdXQgaW50byBfcHJlcGFyZUZvckRpY3Rpb25hcnlM
b29rdXAuCisKIDIwMTUtMDgtMjYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT046IFNhZmFyaSBuYXZpZ2F0ZXMgYWZ0ZXIgYSBjYW5jZWxsZWQgZm9y
Y2UgY2xpY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyODQ1ZDljODEwZGU3ZDUwYjVmYTdmMzRjOTkxY2I0ODk5
MjA1ZTRlLi43MDQyOGE4YTBmNWQ1YTBjZTdmNTFkOGIyMzdlMGVjNjA4NDhkNzhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTUtMDgtMjYgIFRpbW90aHkgSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBvdXQgTG9va3VwIGludm9jYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAg
ICAgICAgQWRqdXN0IGZvciBhIHN0cnVjdCBpbiBhIGZ1bm55IHBsYWNlLgorCisgICAgICAgICog
U2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJl
ZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg6IFJlbW92ZWQuCisgICAgICAgIE1vdmVkIHRvIFdlYkNv
cmUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxEaWN0aW9uYXJ5UG9wdXBJbmZvPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEaWN0aW9uYXJ5UG9wdXBJbmZvPjo6ZGVjb2RlKToK
KyAgICAgICAgQWRkIGVuY29kZS9kZWNvZGVycyBmb3IgRGljdGlvbmFyeVBvcHVwSW5mbyBub3cg
dGhhdCBpdCdzIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAg
KiBTaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoK1tXS1ZpZXcgaGlkZVdvcmREZWZpbml0aW9uV2lu
ZG93XSk6CisgICAgICAgICgtW1dLVmlldyBfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2lu
ZG93c10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cCk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfYW5pbWF0aW9uQ29udHJvbGxlckZvclRl
eHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6c2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpsb29rdXBUZXh0QXRMb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW06CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclNlbGVjdGlvbkluUERGUGx1Z2luKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6bG9va3VwVGV4dEF0TG9jYXRpb24pOgorICAgICAgICBBZGp1
c3QgdG8gbmV3IG5hbWVzIGFuZCBtb3ZlIHN0dWZmIHRvIFdlYkNvcmUuCisKIDIwMTUtMDgtMjYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGNy
YXNoIGR1ZSB0byBhbmltYXRpb25EaWRFbmQgY2FsbGVkIG9uIGRlYWxsb2NhdGVkIFJlbW90ZUxh
eWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXAuaAppbmRleCBmNjIyOGY1ZDc4ZTQ0M2ViMzhjNDM0MDVkYTUxMDY4MWNhMTdjOTViLi4zN2Uz
Y2UwNTk0YzAzYzJjOTk1YmIzYTJhNjMwMWZmNGQ4NDBkZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCkBAIC0yNiwxMSArMjYsMTUgQEAKICNp
Zm5kZWYgRGljdGlvbmFyeUxvb2t1cF9oCiAjZGVmaW5lIERpY3Rpb25hcnlMb29rdXBfaAogCi0j
aWYgUExBVEZPUk0oTUFDKQotCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlRl
eHRJbmRpY2F0b3IuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKK09CSkNfQ0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOwogT0JKQ19DTEFTUyBO
U0RpY3Rpb25hcnk7CitPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU1ZpZXc7CiBP
QkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTIg
KzQzLDM0IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFZpc2li
bGVTZWxlY3Rpb247CiAKLVdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9y
RGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgTlNE
aWN0aW9uYXJ5ICoqb3B0aW9ucyk7Ci1XRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiBy
YW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcgKmRp
Y3Rpb25hcnlMb29rdXBGb3JQREZTZWxlY3Rpb24oUERGU2VsZWN0aW9uICosIE5TRGljdGlvbmFy
eSAqKm9wdGlvbnMpOworc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm8geworICAgIEZsb2F0UG9p
bnQgb3JpZ2luOworICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJbmRpY2F0b3I7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gb3B0aW9uczsKKyAgICBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nOworI2VuZGlmCit9
OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjaWYgUExBVEZPUk0oTUFDKQorCitjbGFzcyBE
aWN0aW9uYXJ5TG9va3VwIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
c1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYs
IE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNz
UmVmUHRyPFJhbmdlPiByYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0Jiwg
TlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE5TU3Ry
aW5nICpzdHJpbmdGb3JQREZTZWxlY3Rpb24oUERGU2VsZWN0aW9uICosIE5TRGljdGlvbmFyeSAq
Km9wdGlvbnMpOworCisgICAgLy8gRklYTUU6IFNob3VsZCBtb3ZlL3VuaWZ5IGRpY3Rpb25hcnlQ
b3B1cEluZm9Gb3JSYW5nZSBoZXJlIHRvby4KKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNob3dQb3B1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiwgTlNWaWV3ICosIHN0ZDo6
ZnVuY3Rpb248dm9pZChUZXh0SW5kaWNhdG9yJik+IHRleHRJbmRpY2F0b3JJbnN0YWxsYXRpb25D
YWxsYmFjayk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgaGlkZVBvcHVwKCk7CisK
KyAgICAvLyBUaGlzIGlzIGFjdHVhbGx5IGFuIGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlcj4sIGJ1dCB0aGlzIGhlYWRlciBpcyB1c2VkIGluIHB1cmUtQysrIGZpbGVzLgor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkKiBhbmltYXRpb25Db250cm9sbGVyRm9yUG9w
dXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYsIE5TVmlldyAqLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoVGV4dEluZGljYXRvciYpPiB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJhY2spOwor
fTsKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CiAjZW5kaWYgLy8gRGljdGlvbmFyeUxvb2t1cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbQppbmRleCBlZDA0NzllNGIyYmI5YjdlYmRlMmEwMWRi
ZjcxZWU2NjYyNjNiYzkyLi4yZDg5OWY3Mzc2MDc1MmY4OGI0MDczNjliZWM0M2E0ZjIyNjljYTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3Vw
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW0K
QEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIkhUTUxDb252ZXJ0ZXIuaCIKICNpbXBvcnQgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIkxvb2t1cFNQSS5oIgorI2ltcG9ydCAiTlNJbW1lZGlh
dGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9y
dCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgpAQCAtNDcsNiArNDgsOCBAQAog
I2ltcG9ydCA8UERGS2l0L1BERktpdC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCitTT0ZU
X0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3VwLCBMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNo
VGVybUluZGljYXRvciwgTlNTdHJpbmcgKikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgYm9vbCBzZWxlY3Rpb25Db250YWluc1Bvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKQEAgLTYxLDcgKzY0
LDcgQEAgc3RhdGljIGJvb2wgc2VsZWN0aW9uQ29udGFpbnNQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWaXMKICAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZS0+
Y29udGFpbnMocG9zaXRpb24pOwogfQogCi1QYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rp
b25hcnlMb29rdXBGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQorUGFzc1JlZlB0cjxSYW5nZT4gRGljdGlvbmFyeUxv
b2t1cDo6cmFuZ2VGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQogewogICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRS
YW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2VsZWN0ZWRS
YW5nZSkKQEAgLTg3LDcgKzkwLDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9u
YXJ5TG9va3VwRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHMKICAgICByZXR1
cm4gc2VsZWN0ZWRSYW5nZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXRUZXN0UmVzdWx0LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQorUGFzc1JlZlB0cjxSYW5nZT4g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgaGl0VGVzdFJlc3VsdCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAgICBOb2RlKiBu
b2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUp
CkBAIC0xMTMsNyArMTE2LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5
TG9va3VwQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGgKICAgICAvLyBJZiB3
ZSBoaXQgdGhlIHNlbGVjdGlvbiwgdXNlIHRoYXQgaW5zdGVhZCBvZiBsZXR0aW5nIExvb2t1cCBk
ZWNpZGUgdGhlIHJhbmdlLgogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJhbWUt
PnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbkNvbnRhaW5zUG9zaXRpb24ocG9zaXRp
b24sIHNlbGVjdGlvbikpCi0gICAgICAgIHJldHVybiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBG
b3JTZWxlY3Rpb24oc2VsZWN0aW9uLCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIERpY3Rpb25h
cnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7CiAKICAgICBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMgPSBWaXNpYmxl
U2VsZWN0aW9uKHBvc2l0aW9uKTsKICAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVz
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKQEAgLTE1MCw3ICsxNTMs
NyBAQCBzdGF0aWMgdm9pZCBleHBhbmRTZWxlY3Rpb25CeUNoYXJhY3RlcnMoUERGU2VsZWN0aW9u
ICpzZWxlY3Rpb24sIE5TSW50ZWdlciBudW1iZQogICAgIGNoYXJhY3RlcnNBZGRlZEFmdGVyRW5k
ID0gc2VsZWN0aW9uLnN0cmluZy5sZW5ndGggLSBvcmlnaW5hbExlbmd0aCAtIGNoYXJhY3RlcnNB
ZGRlZEJlZm9yZVN0YXJ0OwogfQogCi1OU1N0cmluZyAqZGljdGlvbmFyeUxvb2t1cEZvclBERlNl
bGVjdGlvbihQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykK
K05TU3RyaW5nICpEaWN0aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQREZTZWxlY3Rpb24oUERGU2Vs
ZWN0aW9uICpzZWxlY3Rpb24sIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCiB7CiAgICAgLy8gRG9u
J3QgZG8gYW55dGhpbmcgaWYgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIGF0IHRoZSBwb2ludC4KICAg
ICBpZiAoIXNlbGVjdGlvbiB8fCAhc2VsZWN0aW9uLnN0cmluZy5sZW5ndGgpCkBAIC0xODUsNiAr
MTg4LDY5IEBAIE5TU3RyaW5nICpkaWN0aW9uYXJ5TG9va3VwRm9yUERGU2VsZWN0aW9uKFBERlNl
bGVjdGlvbiAqc2VsZWN0aW9uLCBOU0RpY3Rpb25hcnkKICAgICByZXR1cm4gc2VsZWN0aW9uLnN0
cmluZzsKIH0KIAorc3RhdGljIGlkIHNob3dQb3B1cE9yQ3JlYXRlQW5pbWF0aW9uQ29udHJvbGxl
cihib29sIGNyZWF0ZUFuaW1hdGlvbkNvbnRyb2xsZXIsIGNvbnN0IERpY3Rpb25hcnlQb3B1cElu
Zm8mIGRpY3Rpb25hcnlQb3B1cEluZm8sIE5TVmlldyAqdmlldywgc3RkOjpmdW5jdGlvbjx2b2lk
KFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKQorewor
ICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtdXRhYmxlT3B0
aW9ucyA9IGFkb3B0TlMoWyhOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlv
bnMuZ2V0KCkgbXV0YWJsZUNvcHldKTsKKworICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJ
bmRpY2F0b3I6OmNyZWF0ZShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpOworCisg
ICAgaWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYm
IHRleHRJbmRpY2F0b3IuZ2V0KCkuY29udGVudEltYWdlKCkpIHsKKyAgICAgICAgdGV4dEluZGlj
YXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAgICAgICBb
bXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlvbkRpc2Fi
bGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOworCisgICAgICAgIGlmIChbZ2V0TFVMb29rdXBEZWZp
bml0aW9uTW9kdWxlQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dEZWZp
bml0aW9uRm9yVGVybTpyZWxhdGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9uczopXSkgeworICAgICAg
ICAgICAgRmxvYXRSZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyA9IHRleHRJbmRp
Y2F0b3IuZ2V0KCkudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcygpWzBdOworICAg
ICAgICAgICAgZmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzLm1vdmVCeSh0ZXh0SW5kaWNh
dG9yLmdldCgpLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKS5sb2NhdGlv
bigpKTsKKyAgICAgICAgICAgIGlmIChjcmVhdGVBbmltYXRpb25Db250cm9sbGVyKSB7CisjaWYg
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1cEFuaW1h
dGlvbkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmlu
Zy5nZXQoKSByZWxhdGl2ZVRvUmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgb2ZW
aWV3OnZpZXcgb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07CisjZWxzZQorICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFtn
ZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpk
aWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6
Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzIG9mVmlldzp2aWV3IG9wdGlvbnM6bXV0YWJs
ZU9wdGlvbnMuZ2V0KCldOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBvcHVwSW5m
by5vcmlnaW47CisKKyAgICAvLyBDb252ZXJ0IHRvIHNjcmVlbiBjb29yZGluYXRlcy4KKyAgICB0
ZXh0QmFzZWxpbmVPcmlnaW4gPSBbdmlldyBjb252ZXJ0UG9pbnQ6dGV4dEJhc2VsaW5lT3JpZ2lu
IHRvVmlldzpuaWxdOworICAgIHRleHRCYXNlbGluZU9yaWdpbiA9IFt2aWV3LndpbmRvdyBjb252
ZXJ0UmVjdFRvU2NyZWVuOk5TTWFrZVJlY3QodGV4dEJhc2VsaW5lT3JpZ2luLngsIHRleHRCYXNl
bGluZU9yaWdpbi55LCAwLCAwKV0ub3JpZ2luOworCisgICAgaWYgKGNyZWF0ZUFuaW1hdGlvbkNv
bnRyb2xsZXIpIHsKKyNpZiAgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
MDAKKyAgICAgICAgcmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxv
b2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmli
dXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11
dGFibGVPcHRpb25zLmdldCgpXTsKKyNlbHNlCisgICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYK
KyAgICB9CisKKyAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVm
aW5pdGlvbkZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgp
IGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0
KCldOworICAgIHJldHVybiBuaWw7Cit9CisKK3ZvaWQgRGljdGlvbmFyeUxvb2t1cDo6c2hvd1Bv
cHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8sIE5TVmll
dyAqdmlldywgc3RkOjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRv
ckluc3RhbGxhdGlvbkNhbGxiYWNrKQoreworICAgIHNob3dQb3B1cE9yQ3JlYXRlQW5pbWF0aW9u
Q29udHJvbGxlcihmYWxzZSwgZGljdGlvbmFyeVBvcHVwSW5mbywgdmlldywgdGV4dEluZGljYXRv
ckluc3RhbGxhdGlvbkNhbGxiYWNrKTsKK30KKwordm9pZCBEaWN0aW9uYXJ5TG9va3VwOjpoaWRl
UG9wdXAoKQoreworICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygp
IGhpZGVEZWZpbml0aW9uXTsKK30KKwordm9pZCogRGljdGlvbmFyeUxvb2t1cDo6YW5pbWF0aW9u
Q29udHJvbGxlckZvclBvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQ
b3B1cEluZm8sIE5TVmlldyAqdmlldywgc3RkOjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3Im
KT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKQoreworICAgIHJldHVybiAodm9p
ZCopc2hvd1BvcHVwT3JDcmVhdGVBbmltYXRpb25Db250cm9sbGVyKHRydWUsIGRpY3Rpb25hcnlQ
b3B1cEluZm8sIHZpZXcsIHRleHRJbmRpY2F0b3JJbnN0YWxsYXRpb25DYWxsYmFjayk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCAwMDU1NTMxNjFlNDEz
MDMwOTJlNjQ1ODU1ZjAyYzIzZGYwNWEwMzkxLi4xMjY5ZGE2NDJhYTU1NjU0NjgwZDA1Y2E0M2E5
MDAxM2FhMzlhOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tCkBAIC0xMDc5LDcgKzEwNzksNyBAQCBWaXNpYmxlU2VsZWN0aW9uIEV2ZW50SGFuZGxlcjo6
c2VsZWN0Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3VsdEJhc2VkT25Mb29rdXAoYwogICAgICAg
ICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25z
ID0gbmlsOwotICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdlID0gcmFuZ2VGb3JEaWN0aW9uYXJ5
TG9va3VwQXRIaXRUZXN0UmVzdWx0KHJlc3VsdCwgJm9wdGlvbnMpKQorICAgIGlmIChSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVz
dWx0LCAmb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSk7
CiAKICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IDRiYWNkNTVmZWUzYmUxOTVmYTMwNzRmNGIzNzAzNDJlMTdiNGNmOTku
LjI1ZDVmNjlhYjE1N2QwN2M1MTcyZThhMjZjMGM4MGM1YjU1YWE3YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyNjgsNyArMTI2OCw3IEBAIFJlZlB0cjxSYW5nZT4g
SW50ZXJuYWxzOjpyYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGludCB4LCBpbnQg
eSwgRXhjZXB0CiAgICAgCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkb2N1bWVudC0+ZnJh
bWUoKS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50
UG9pbnQoeCwgeSkpOwogICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG51bGxwdHI7Ci0gICAg
cmV0dXJuIHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZv
cHRpb25zKTsKKyAgICByZXR1cm4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1
bHQocmVzdWx0LCAmb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh4KTsKICAgICBV
TlVTRURfUEFSQU0oeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAxZjM4YjY1NjdjZDU1MzcyYTIwMWJhY2M1ZmM0NGUzZWVjMTIwZjA0
Li45ZTA0NmRiOWJlZDc4OTM1MjExMWI3M2M5M2MxODljNTUxNTNjYzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMSw3ICsxMDEs
NiBAQAogCQkyRDI1Mzk2NzE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQyNTM5NjUxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlci5tbSAqLzsgfTsKIAkJMkRENjMyQzIxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREQ2MzJDMDE5RTVEMUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkRENjMyQzMxOUU1RDFGMDAwMkU5QzdCIC8q
IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENjMyQzExOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tICovOyB9OwotCQkyREYwNjRBOTFBMkRENTNDMDBE
QkIzNTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGMDY0QTgxQTJERDUzQzAwREJCMzU0IC8qIERpY3Rpb25h
cnlQb3B1cEluZm8uaCAqLzsgfTsKIAkJMzEyRTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5v
dGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMkUyRkU2MTRFNDgx
ODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90
aWZpY2F0aW9uLm1tICovOyB9OwogCQkzMTJFMkZFOTE0RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90
aWZpY2F0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMkUyRkU4MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25JbnRl
cm5hbC5oICovOyB9OwpAQCAtNTYzLDcgKzU2Miw2IEBACiAJCTJEODFEQUIzMDNFQjBCMkQwMEE4
MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkyREQ2MzJDMDE5RTVE
MUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRENjMyQzExOUU1RDFGMDAwMkU5QzdCIC8q
IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJERjA2NEE4MUEyREQ1M0MwMERCQjM1NCAvKiBEaWN0
aW9uYXJ5UG9wdXBJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3Rp
b25hcnlQb3B1cEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRTJGRTMx
NEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEyRTJGRTQxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8q
IFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMzIxLDcgKzEzMTksNiBAQAogCQkJCUY1MkNBNkJEMDJERjlEMEYwMTg2MzVDQSAvKiBI
VE1MICovLAogCQkJCTUxRTk0QzA3MDZDMDJDQTMwMEE5QjA5RSAvKiBQREYgKi8sCiAJCQkJQTEw
QzFENzkxODIwMzAxOTAwMzY4ODNBIC8qIGlvcyAqLywKLQkJCQkyREYwNjRBODFBMkRENTNDMDBE
QkIzNTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovLAogCQkJCTgzNzM0MzVBMDYyNEVFMEQw
MEYzQjI4OSAvKiBXZWJBcmNoaXZlLmggKi8sCiAJCQkJODM3MzQzNUIwNjI0RUUwRDAwRjNCMjg5
IC8qIFdlYkFyY2hpdmUubW0gKi8sCiAJCQkJNDRCQjhCMTMxMjQxQTAyMjAwMUUzQTIyIC8qIFdl
YkFyY2hpdmVJbnRlcm5hbC5oICovLApAQCAtMTg0MCw3ICsxODM3LDYgQEAKIAkJCQlBMTBDMUQ4
QzE4MjAzMDVFMDAzNjg4M0EgLyogV2ViUERGVmlld0lQaG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM5ODEwNkQwODI0QkYwMTAwOERGMDM4IC8qIFdlYktpdEVycm9yc1ByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEOEJGQ0U4MTU1MzEyMjQwMDVBRkIyNSAvKiBXZWJLaXRGdWxsU2Ny
ZWVuTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTJERjA2NEE5MUEyREQ1M0MwMERCQjM1
NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAxRDA4
MjRCRjAxMDA4REYwMzggLyogV2ViS2l0TG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5
ODEwMUUwODI0QkYwMTAwOERGMDM4IC8qIFdlYktpdE5TU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUFGNTg5NDBFRENDRjE1MDA4RDg4M0QgLyogV2ViS2l0UGx1Z2luQWdlbnQu
ZGVmcyBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L0RpY3Rp
b25hcnlQb3B1cEluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU1OGM2MmNi
MTQ5MjFlYjI5YWI2ZTcwOGM5ZmYxYmI2MjBkZmQ2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L0RpY3Rpb25h
cnlQb3B1cEluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KLSNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotQGNsYXNzIE5TQXR0cmlidXRlZFN0cmluZzsKLUBj
bGFzcyBOU0RpY3Rpb25hcnk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRleHRJbmRp
Y2F0b3I7Ci19OwotCi1zdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbyB7Ci0gICAgTlNQb2ludCBv
cmlnaW47Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gb3B0aW9uczsKLSAgICBSZXRhaW5Q
dHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yOwotfTsKLQotI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGE4
ZGI4ZTAxMDRkMTdmNzllZGM5ODNiNDkzODY1N2NjOGM2NzNmNDQuLjMwOTgwZDMwYWE2N2UyZGVi
OTgyMWU5N2QwMDcyMjUwZTU1YmQyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQpAQCAtMzQsNyArMzQsNiBAQAogI2ltcG9ydCAiRE9NRG9jdW1lbnRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01SYW5nZUludGVy
bmFsLmgiCi0jaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJXZWJBcmNo
aXZlLmgiCiAjaW1wb3J0ICJXZWJDbGlwVmlldy5oIgogI2ltcG9ydCAiV2ViQ29udGV4dE1lbnVD
bGllbnQuaCIKQEAgLTgyLDYgKzgxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4
dE1lbnVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRG
cmFnbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4K
QEAgLTU2ODksNyArNTY4OSw4IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5k
aW5nc0VuYWJsZWQoKQogICAgIERpY3Rpb25hcnlQb3B1cEluZm8gaW5mbzsKICAgICBpbmZvLmF0
dHJpYnV0ZWRTdHJpbmcgPSBhdHRyU3RyaW5nOwogICAgIGluZm8ub3JpZ2luID0gY29yZUZyYW1l
LT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coZW5jbG9zaW5nSW50UmVjdChyZWN0KSkubG9jYXRp
b24oKTsKLSAgICBpbmZvLnRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRo
U2VsZWN0aW9uSW5GcmFtZSgqY29yZUZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNu
YXBzaG90V2l0aFNlbGVjdGlvbkhpZ2hsaWdodCwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRy
YW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSk7CisgICAgaWYgKGF1dG8gdGV4dEluZGljYXRv
ciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKCpjb3JlRnJhbWUs
IFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0
LCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRl
KSkKKyAgICAgICAgaW5mby50ZXh0SW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwog
ICAgIFtbc2VsZiBfd2ViVmlld10gX3Nob3dEaWN0aW9uYXJ5TG9va3VwUG9wdXA6aW5mb107CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAxNDc0YjM1OTM1MDcxOWJhNDJhNDdiZTdhZmVjMzk0
ZTcwNDBjZjEzLi44ZmY1ZWQxNTg1YmYwNzczYWVmYmI1ZGZiYjk0ZjMxYmJmZTBhYTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJET01FbGVtZW50SW50
ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJ
bnRlcm5hbC5oIgotI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiV2Vi
RWxlbWVudERpY3Rpb25hcnkuaCIKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYkhUTUxWaWV3LmgiCkBAIC00NTQsNiArNDUzLDcgQEAgc3RhdGljIEludFJlY3QgZWxl
bWVudEJvdW5kaW5nQm94SW5XaW5kb3dDb29yZGluYXRlc0Zyb21Ob2RlKE5vZGUqIG5vZGUpCiAg
ICAgaWYgKCFsaW5rUmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxU
ZXh0SW5kaWNhdG9yPiBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2Uo
KmxpbmtSYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbkRlZmF1bHQsIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW4pOworICAgIGluZGljYXRvci0+ZGF0YSgpLnRleHRC
b3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBbX3dlYlZpZXcgX2NvbnZlcnRSZWN0
RnJvbVJvb3RWaWV3OmluZGljYXRvci0+dGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcygpXTsKIAogICAgIF9jdXJyZW50QWN0aW9uQ29udGV4dCA9IFthY3Rpb25Db250ZXh0IGNv
bnRleHRGb3JWaWV3Ol93ZWJWaWV3IGFsdE1vZGU6WUVTIGludGVyYWN0aW9uU3RhcnRlZEhhbmRs
ZXI6XigpIHsKICAgICB9IGludGVyYWN0aW9uQ2hhbmdlZEhhbmRsZXI6XigpIHsKQEAgLTUxMCw3
ICs1MTAsOSBAQCBzdGF0aWMgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZv
Rm9yUmFuZ2UoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFuZwogICAgIH1dOwogCiAgICAgcG9wdXBJ
bmZvLmF0dHJpYnV0ZWRTdHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmcuZ2V0KCk7Ci0g
ICAgcG9wdXBJbmZvLnRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25EZWZhdWx0LCBwcmVzZW50YXRpb25UcmFuc2l0
aW9uKTsKKworICAgIGlmIChhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoUmFuZ2UocmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25EZWZhdWx0LCBwcmVzZW50YXRp
b25UcmFuc2l0aW9uKSkKKyAgICAgICAgcG9wdXBJbmZvLnRleHRJbmRpY2F0b3IgPSB0ZXh0SW5k
aWNhdG9yLT5kYXRhKCk7CiAgICAgcmV0dXJuIHBvcHVwSW5mbzsKIH0KIApAQCAtNTI4LDcgKzUz
MCw3IEBAIHN0YXRpYyBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZShGcmFtZSogZnJhbWUsIFJhbmdlJiByYW5nCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgUmVmUHRyPFJhbmdlPiBkaWN0aW9u
YXJ5UmFuZ2UgPSByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQoX2hpdFRl
c3RSZXN1bHQsICZvcHRpb25zKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGRpY3Rpb25hcnlSYW5nZSA9
IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KF9oaXRUZXN0UmVzdWx0LCAm
b3B0aW9ucyk7CiAgICAgaWYgKCFkaWN0aW9uYXJ5UmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA4ZjE1ZGI1NTgzZWU1ZDhm
ZDFmYjhhMGQ4NGM3M2ZmYWIxZWU5ZWMwLi5iNjUxZjA5MmIzZGEyZTBlYWZmYWEyMzQ2NmIxMDAy
YzdlOTNiMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zNSw3ICsz
NSw2IEBACiAjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2Rl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRpY3Rp
b25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIlN0b3JhZ2VUaHJlYWQuaCIKICNpbXBvcnQgIldl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgogI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNoZUlu
dGVybmFsLmgiCkBAIC0xMjMsNiArMTIyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNl
TWFuYWdlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CkBAIC0yOTUsNyArMjk1LDYgQEAK
IAogI2lmIFBMQVRGT1JNKE1BQykKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChMb29rdXAs
IExVTm90aWZpY2F0aW9uUG9wb3ZlcldpbGxDbG9zZSwgTlNTdHJpbmcgKikKLVNPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChMb29rdXAsIExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5k
aWNhdG9yLCBOU1N0cmluZyAqKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtODU0
NiwzNCArODU0NSwzMCBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygp
CiAgICAgcmV0dXJuIF9wcml2YXRlLT5pbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyOwogfQogCist
ICh2b2lkKV9wcmVwYXJlRm9yRGljdGlvbmFyeUxvb2t1cAoreworICAgIGlmIChfcHJpdmF0ZS0+
aGFzSW5pdGlhbGl6ZWRMb29rdXBPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgX3By
aXZhdGUtPmhhc0luaXRpYWxpemVkTG9va3VwT2JzZXJ2ZXIgPSBZRVM7CisKKyAgICBpZiAoY2Fu
TG9hZExVTm90aWZpY2F0aW9uUG9wb3ZlcldpbGxDbG9zZSgpKQorICAgICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKF9kaWN0aW9uYXJ5TG9va3VwUG9wb3ZlcldpbGxDbG9zZTopIG5hbWU6Z2V0TFVOb3Rp
ZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlKCkgb2JqZWN0Om5pbF07Cit9CisKIC0gKGlkKV9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgRGljdGlv
bmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbwogewogICAgIGlmICghZGljdGlvbmFy
eVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
aWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYmIGNh
bkxvYWRMVU5vdGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2UoKSAmJiBkaWN0aW9uYXJ5UG9wdXBJ
bmZvLnRleHRJbmRpY2F0b3IpIHsKLSAgICAgICAgaWYgKCFfcHJpdmF0ZS0+aGFzSW5pdGlhbGl6
ZWRMb29rdXBPYnNlcnZlcikgewotICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfZGljdGlv
bmFyeUxvb2t1cFBvcG92ZXJXaWxsQ2xvc2U6KSBuYW1lOmdldExVTm90aWZpY2F0aW9uUG9wb3Zl
cldpbGxDbG9zZSgpIG9iamVjdDpuaWxdOwotICAgICAgICAgICAgX3ByaXZhdGUtPmhhc0luaXRp
YWxpemVkTG9va3VwT2JzZXJ2ZXIgPSBZRVM7Ci0gICAgICAgIH0KLQotICAgICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbXV0YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFtkaWN0aW9u
YXJ5UG9wdXBJbmZvLm9wdGlvbnMgbXV0YWJsZUNvcHldKTsKLSAgICAgICAgaWYgKCFtdXRhYmxl
T3B0aW9ucykKLSAgICAgICAgICAgIG11dGFibGVPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9i
amVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRv
cigpXTsKLSAgICAgICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6KmRpY3Rpb25hcnlQb3B1cElu
Zm8udGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1l
OjpQZXJtYW5lbnRdOworICAgIFtzZWxmIF9wcmVwYXJlRm9yRGljdGlvbmFyeUxvb2t1cF07CiAK
LSAgICAgICAgaWYgKFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IobG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRlcm06cmVs
YXRpdmVUb1JlY3Q6b2ZWaWV3Om9wdGlvbnM6KV0pIHsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBm
aXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJ
bmRpY2F0b3ItPnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXMoKVswXTsKLSAgICAg
ICAgICAgIGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcy5tb3ZlQnkoZGljdGlvbmFyeVBv
cHVwSW5mby50ZXh0SW5kaWNhdG9yLT50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCkubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gW2dldExVTG9va3VwRGVmaW5p
dGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRlcm06ZGljdGlv
bmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIHJlbGF0aXZlVG9SZWN0OltzZWxm
IF9jb252ZXJ0UmVjdEZyb21Sb290VmlldzpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXNd
IG9mVmlldzpzZWxmIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwotICAgICAgICB9Ci0g
ICAgfQorICAgIERpY3Rpb25hcnlQb3B1cEluZm8gYWRqdXN0ZWRQb3B1cEluZm8gPSBkaWN0aW9u
YXJ5UG9wdXBJbmZvOworICAgIGFkanVzdGVkUG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dEJv
dW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdEZyb21S
b290VmlldzphZGp1c3RlZFBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXNdOwogCi0gICAgLy8gQ29udmVydCB0byBzY3JlZW4gY29vcmRp
bmF0ZXMuCi0gICAgTlNQb2ludCB0ZXh0QmFzZWxpbmVPcmlnaW4gPSBbc2VsZi53aW5kb3cgY29u
dmVydFJlY3RUb1NjcmVlbjpOU01ha2VSZWN0KGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luLngs
IGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luLnksIDAsIDApXS5vcmlnaW47Ci0KLSAgICByZXR1
cm4gW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29u
dHJvbGxlckZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgp
IGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6ZGljdGlvbmFyeVBvcHVwSW5m
by5vcHRpb25zLmdldCgpXTsKKyAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0
aW9uQ29udHJvbGxlcj4pRGljdGlvbmFyeUxvb2t1cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBv
cHVwKGFkanVzdGVkUG9wdXBJbmZvLCBzZWxmLCBbc2VsZl0oVGV4dEluZGljYXRvciYgdGV4dElu
ZGljYXRvcikgeworICAgICAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRvcjp0ZXh0SW5kaWNhdG9y
IHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07Cisg
ICAgfSk7CiB9CiAjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEwMDAKIApAQCAtODU5Nyw3ICs4NTkyLDcgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6
Zmx1c2hMYXllcnMoKQogICAgIGlmICghX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cpCiAg
ICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsKIAotICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0
SW5XaW5kb3dDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVj
dEZyb21Sb290Vmlldzp0ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoKV0gdG9WaWV3Om5pbF07CisgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91
bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF07CiAgICAgTlNSZWN0
IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW3NlbGYud2luZG93IGNvbnZl
cnRSZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXNdOwogICAg
IF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93LT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRp
Y2F0b3IsIE5TUmVjdFRvQ0dSZWN0KHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVz
KSwgbGlmZXRpbWUpOwogfQpAQCAtODYyMCwzMCArODYxNSwxNCBAQCBib29sIExheWVyRmx1c2hD
b250cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgaWYgKCFkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0
dHJpYnV0ZWRTdHJpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjYW5Mb2FkTFVUZXJt
T3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IoKSAmJiBjYW5Mb2FkTFVOb3RpZmljYXRp
b25Qb3BvdmVyV2lsbENsb3NlKCkgJiYgZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9y
KSB7Ci0gICAgICAgIGlmICghX3ByaXZhdGUtPmhhc0luaXRpYWxpemVkTG9va3VwT2JzZXJ2ZXIp
IHsKLSAgICAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2RpY3Rpb25hcnlMb29rdXBQb3BvdmVy
V2lsbENsb3NlOikgbmFtZTpnZXRMVU5vdGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2UoKSBvYmpl
Y3Q6bmlsXTsKLSAgICAgICAgICAgIF9wcml2YXRlLT5oYXNJbml0aWFsaXplZExvb2t1cE9ic2Vy
dmVyID0gWUVTOwotICAgICAgICB9CisgICAgW3NlbGYgX3ByZXBhcmVGb3JEaWN0aW9uYXJ5TG9v
a3VwXTsKIAotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbXV0YWJsZU9w
dGlvbnMgPSBhZG9wdE5TKFtkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMgbXV0YWJsZUNvcHld
KTsKLSAgICAgICAgaWYgKCFtdXRhYmxlT3B0aW9ucykKLSAgICAgICAgICAgIG11dGFibGVPcHRp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAg
ICAgW211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25E
aXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKLSAgICAgICAgW3NlbGYgX3NldFRleHRJbmRp
Y2F0b3I6KmRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4
dEluZGljYXRvcldpbmRvd0xpZmV0aW1lOjpQZXJtYW5lbnRdOworICAgIERpY3Rpb25hcnlQb3B1
cEluZm8gYWRqdXN0ZWRQb3B1cEluZm8gPSBkaWN0aW9uYXJ5UG9wdXBJbmZvOworICAgIGFkanVz
dGVkUG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290VmlldzphZGp1c3RlZFBvcHVwSW5m
by50ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwog
Ci0gICAgICAgIGlmIChbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dEZWZpbml0aW9uRm9yVGVybTpyZWxhdGl2ZVRvUmVj
dDpvZlZpZXc6b3B0aW9uczopXSkgewotICAgICAgICAgICAgRmxvYXRSZWN0IGZpcnN0VGV4dFJl
Y3RJblZpZXdDb29yZGluYXRlcyA9IGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci0+
dGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcygpWzBdOwotICAgICAgICAgICAgZmly
c3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzLm1vdmVCeShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRl
eHRJbmRpY2F0b3ItPnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKS5sb2Nh
dGlvbigpKTsKLSAgICAgICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygp
IHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJp
bmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmZp
cnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlc10gb2ZWaWV3OnNlbGYgb3B0aW9uczptdXRhYmxl
T3B0aW9ucy5nZXQoKV07Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvLyBDb252ZXJ0IHRvIHNjcmVlbiBjb29yZGluYXRlcy4KLSAgICBOU1BvaW50IHRleHRC
YXNlbGluZU9yaWdpbiA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOk5TTWFrZVJl
Y3QoZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4ueCwgZGljdGlvbmFyeVBvcHVwSW5mby5vcmln
aW4ueSwgMCwgMCldLm9yaWdpbjsKLQotICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVD
bGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0
ZWRTdHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFzZWxpbmVPcmlnaW4gb3B0aW9uczpkaWN0
aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMuZ2V0KCldOworICAgIERpY3Rpb25hcnlMb29rdXA6OnNo
b3dQb3B1cChhZGp1c3RlZFBvcHVwSW5mbywgc2VsZiwgW3NlbGZdKFRleHRJbmRpY2F0b3ImIHRl
eHRJbmRpY2F0b3IpIHsKKyAgICAgICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6dGV4dEluZGlj
YXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lOjpQZXJtYW5lbnRd
OworICAgIH0pOwogfQogCiAtICh2b2lkKV9kaWN0aW9uYXJ5TG9va3VwUG9wb3ZlcldpbGxDbG9z
ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDIyMGVjZTdkYjVkMzZhMTExMjBhNDZiN2YwNTZk
ZjI3MWY5ZTkyZWEuLjgwNTdlYTdkODgyNGQ4M2U5ZDFhYmY0MTdmNGZhZjllNjc0MTQ0NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNTgsOSAr
NTgsOSBAQCBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVVJM
Owogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOworc3RydWN0IERpY3Rpb25hcnlQb3B1cElu
Zm87CiB9CiAKLXN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogY2xhc3MgV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlcjsKIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwog
CkBAIC0yNjksOSArMjY5LDkgQEAgT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtICh2
b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNh
dG9yIHdpdGhMaWZldGltZTooV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxp
ZmV0aW1lOwogLSAodm9pZClfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjooV2ViQ29y
ZTo6VGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbilhbmltYXRpb247CiAtICh2
b2lkKV9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6KGZsb2F0KXByb2dyZXNzOwot
LSAodm9pZClfc2hvd0RpY3Rpb25hcnlMb29rdXBQb3B1cDooY29uc3QgRGljdGlvbmFyeVBvcHVw
SW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbzsKKy0gKHZvaWQpX3Nob3dEaWN0aW9uYXJ5TG9va3Vw
UG9wdXA6KGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1
cEluZm87CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKLS0g
KGlkKV9hbmltYXRpb25Db250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29u
c3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbzsKKy0gKGlkKV9hbmlt
YXRpb25Db250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgV2ViQ29y
ZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbzsKIC0gKFdlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIgKilfaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcjsKICNlbmRp
ZgogLSAoTlNFdmVudCAqKV9wcmVzc3VyZUV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCAxMDc3NzdlZGI2NTc4ZGU3Yzg3ZjM0NjkzMzA4YjA1NDlk
OWM5MDU3Li42MzY5M2I2NzA0Y2VjODNjZWY0OWZjYzk5NGRmMGUwOTlkNTU2MGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzUyLDYgKzM1Miw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgIHNwZWNpYWxfY2FzZXMgPSB7CiAgICAg
ICAgICdTdHJpbmcnOiBbJzx3dGYvdGV4dC9XVEZTdHJpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lJzogWyc8V2ViQ29yZS9FZGl0b3IuaD4nXSwKKyAgICAg
ICAgJ1dlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8nOiBbJzxXZWJDb3JlL0RpY3Rpb25hcnlM
b29rdXAuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkdyYW1tYXJEZXRhaWwnOiBbJzxXZWJDb3Jl
L1RleHRDaGVja2VyQ2xpZW50Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
QW5pbWF0aW9ucyc6IFsnPFdlYkNvcmUvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9w
dXBJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY1YTM2ZDZmNzgwYjIzYzk5YTkxMmM2
NDUyOWMyOTA4M2Q0ZDA0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKLQotI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnNDRi5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIERp
Y3Rpb25hcnlQb3B1cEluZm86OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG9yaWdpbjsKLSAgICBlbmNvZGVyIDw8IHRleHRJbmRp
Y2F0b3I7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGhhZE9wdGlvbnMgPSBvcHRp
b25zOwotICAgIGVuY29kZXIgPDwgaGFkT3B0aW9uczsKLSAgICBpZiAoaGFkT3B0aW9ucykKLSAg
ICAgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwgb3B0aW9ucy5nZXQoKSk7Ci0KLSAgICBlbmNvZGVy
IDw8IGF0dHJpYnV0ZWRTdHJpbmc7Ci0jZW5kaWYKLX0KLQotYm9vbCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIERpY3Rpb25hcnlQb3B1
cEluZm8mIHJlc3VsdCkKLXsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW4p
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC50ZXh0SW5kaWNhdG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgYm9vbCBoYWRPcHRpb25zOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFk
T3B0aW9ucykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoaGFkT3B0aW9ucykgewot
ICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdC5vcHRpb25zKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5hdHRyaWJ1dGVkU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVkM2MwMDZjYzY2MDg1Y2VmZDcyN2Y1ODBmOGE5ZTBlOGJhNzVmZjYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIERpY3Rpb25hcnlQb3B1cEluZm9faAotI2RlZmluZSBEaWN0
aW9uYXJ5UG9wdXBJbmZvX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0j
aW5jbHVkZSAiQXR0cmlidXRlZFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNlbmRpZgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLWNsYXNz
IEFyZ3VtZW50RW5jb2RlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvIHsKLSAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIERp
Y3Rpb25hcnlQb3B1cEluZm8mKTsKLQotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luOwot
ICAgIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhIHRleHRJbmRpY2F0b3I7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gb3B0aW9uczsKLSAgICBB
dHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmc7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRGljdGlvbmFyeVBvcHVwSW5mb19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDdhNTg0
OTRhODdmMWUwMzM4ZGI1ZGNmMzliNzQ4YTE4NDIwNWM3YzcuLmU4ZDRjYzNjYmYzY2NmNjBiYzMy
NzVmNGYzMWI5YjNlNjllZmViMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rp
Y3Rpb25hcnlMb29rdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlv
bi5oPgpAQCAtNzMsNiArNzQsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnNDRi5oIgorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzTWFjLmgiCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIyMDMsNCArMjIwNSw1MiBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLAogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxEaWN0aW9uYXJ5
UG9wdXBJbmZvPjo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBE
aWN0aW9uYXJ5UG9wdXBJbmZvJiBpbmZvKQoreworICAgIGVuY29kZXIgPDwgaW5mby5vcmlnaW47
CisgICAgZW5jb2RlciA8PCBpbmZvLnRleHRJbmRpY2F0b3I7CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBib29sIGhhZE9wdGlvbnMgPSBpbmZvLm9wdGlvbnM7CisgICAgZW5jb2RlciA8PCBo
YWRPcHRpb25zOworICAgIGlmIChoYWRPcHRpb25zKQorICAgICAgICBJUEM6OmVuY29kZShlbmNv
ZGVyLCBpbmZvLm9wdGlvbnMuZ2V0KCkpOworCisgICAgYm9vbCBoYWRBdHRyaWJ1dGVkU3RyaW5n
ID0gaW5mby5hdHRyaWJ1dGVkU3RyaW5nOworICAgIGVuY29kZXIgPDwgaGFkQXR0cmlidXRlZFN0
cmluZzsKKyAgICBpZiAoaGFkQXR0cmlidXRlZFN0cmluZykKKyAgICAgICAgSVBDOjplbmNvZGUo
ZW5jb2RlciwgaW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpKTsKKyNlbmRpZgorfQorCitib29s
IEFyZ3VtZW50Q29kZXI8RGljdGlvbmFyeVBvcHVwSW5mbz46OmRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgRGljdGlvbmFyeVBvcHVwSW5mbyYgcmVzdWx0KQoreworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRleHRJbmRpY2F0b3IpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBib29sIGhhZE9wdGlv
bnM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYWRPcHRpb25zKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChoYWRPcHRpb25zKSB7CisgICAgICAgIGlmICghSVBDOjpkZWNvZGUo
ZGVjb2RlciwgcmVzdWx0Lm9wdGlvbnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0gZWxzZQorICAgICAgICByZXN1bHQub3B0aW9ucyA9IG51bGxwdHI7CisKKyAgICBib29sIGhh
ZEF0dHJpYnV0ZWRTdHJpbmc7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYWRBdHRyaWJ1dGVk
U3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChoYWRBdHRyaWJ1dGVkU3Ry
aW5nKSB7CisgICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LmF0dHJpYnV0
ZWRTdHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZQorICAgICAg
ICByZXN1bHQuYXR0cmlidXRlZFN0cmluZyA9IG51bGxwdHI7CisjZW5kaWYKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZjVmMTU1MTJmNDcxZmEzNTFkMjVkYTEyOTI0
NmYyZTQ0YWQ1Y2U3MC4uY2Y1NDkzYjYwNzJmNjVmNDI4ZGVlNTg2Y2E4OWRiN2ZlNzdmNTMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
NzEsNiArNzEsNyBAQCBjbGFzcyBVUkw7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBz
dHJ1Y3QgQ29va2llOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOworc3RydWN0IERpY3Rp
b25hcnlQb3B1cEluZm87CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKIHN0cnVjdCBJREJE
YXRhYmFzZU1ldGFkYXRhOwogc3RydWN0IElEQkdldFJlc3VsdDsKQEAgLTQ3Myw2ICs0NzQsMTEg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
RGF0YT4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YSYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8m
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6RGlj
dGlvbmFyeVBvcHVwSW5mbyYpOworfTsKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxh
eWJhY2tUYXJnZXRDb250ZXh0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaAppbmRleCBiODI2MTFmMjU1MTJjMTVl
ZWI1MzEyNjkzNjU0ZjYxMTdmMTM4OTZiLi44MDJhMTNmMDJiZTczNTIwM2YyMjE5Yzk3ZDcwY2Fk
ZGQ5MzBmOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJl
c3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmgKQEAg
LTIxLDggKzIxLDggQEAKICNkZWZpbmUgV2ViSGl0VGVzdFJlc3VsdF9oCiAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKLSNpbmNsdWRlICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgpAQCAtNzUsNyArNzUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiBkZXRlY3RlZERh
dGFUZXh0SW5kaWNhdG9yOwogICAgICAgICBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6UGFnZU92ZXJs
YXlJRCBkZXRlY3RlZERhdGFPcmlnaW5hdGluZ1BhZ2VPdmVybGF5OwogCi0gICAgICAgIERpY3Rp
b25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbzsKKyAgICAgICAgV2ViQ29yZTo6RGlj
dGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogCiAgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiBsaW5rVGV4dEluZGljYXRvcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oCmluZGV4IDE3NDgwNTFmM2U1Y2Nm
ZGZlYjJjNGRlNTY5M2ZhMWQyYzBjNTJmNGUuLjRlMmRhNzYxOTMxNTNlZDhkODA5ZDE4N2UwNTIz
MTVjOWI3MWY3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1l
bnRDb2RlcnNNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29k
ZXJzTWFjLmgKQEAgLTI4LDYgKzI4LDE2IEBACiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKK09CSkNfQ0xBU1MgTlNBcnJheTsKK09CSkNfQ0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOwor
T0JKQ19DTEFTUyBOU0NvbG9yOworT0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5TRGF0
ZTsKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworT0JKQ19DTEFTUyBOU0ZvbnQ7CitPQkpDX0NM
QVNTIE5TTnVtYmVyOworT0JKQ19DTEFTUyBOU1N0cmluZzsKKwogbmFtZXNwYWNlIElQQyB7CiAK
IGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQppbmRleCBmZjI4MzNiM2IyOTdlOTNkODA0ZGZiZDEyYjNiMmI2MzliNjA4ZGM1
Li5jOWQ2OTk3NGU2OTViZTgwZDFjNzhiMGZkYzYwYmM1YjQ0MDgzYzMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04Myw2ICs4Myw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdG9yc1NQSS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgpAQCAtNDA4Myw5ICs0MDg0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1
ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKIAogKyAodm9pZCloaWRlV29yZERlZmlu
aXRpb25XaW5kb3cKIHsKLSAgICBpZiAoIWdldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNz
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xh
c3MoKSBoaWRlRGVmaW5pdGlvbl07CisgICAgRGljdGlvbmFyeUxvb2t1cDo6aGlkZVBvcHVwKCk7
CiB9CiAKIC0gKE5TU2l6ZSltaW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQKQEAgLTQ2NzYsOCArNDY3
NSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNT
dHJpbmcgKnBhdGgpCiAgICAgICAgIHx8IFtfZGF0YS0+X2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIgaGFzQWN0aXZlSW1tZWRpYXRlQWN0aW9uXQogI2VuZGlmCiAgICAgICAgICkgewotICAgICAg
ICBpZiAoQ2xhc3MgbG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzID0gZ2V0TFVMb29rdXBEZWZp
bml0aW9uTW9kdWxlQ2xhc3MoKSkKLSAgICAgICAgICAgIFtsb29rdXBEZWZpbml0aW9uTW9kdWxl
Q2xhc3MgaGlkZURlZmluaXRpb25dOworICAgICAgICBEaWN0aW9uYXJ5TG9va3VwOjpoaWRlUG9w
dXAoKTsKIAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAg
ICAgICAgIEREQWN0aW9uc01hbmFnZXIgKmFjdGlvbnNNYW5hZ2VyID0gW2dldEREQWN0aW9uc01h
bmFnZXJDbGFzcygpIHNoYXJlZE1hbmFnZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggZTY4N2ZkYTViNmE4MWU4MTdjZGQ3YWY1MGJhOWEyZDg2NDNkZDVhMS4uMjUx
MjkwMDE4NjliZThiMTQ3YWZjMTg0NWYxMzIyYjg3OGY2ZjEyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdl
ZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5I
YXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdp
bkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8m
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0
IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MoYm9vbCB3aXRoQW5pbWF0aW9uID0gdHJ1
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2IxYzczYTY1NzY5
YTUyYmE5ZjBjNjRkNzZiNGZkMjkyMjk1OTU4Yi4uMTg5MmQ3OWU5MzMxMTE2ZTdmMDNhNDQ3NWUw
ZDIyM2ZlZTBmMjg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTU1LDYgKzE1NSw3IEBAIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BP
YnNlcnZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CitzdHJ1
Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwogc3Ry
dWN0IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZTsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7
CkBAIC0yMDEsNyArMjAyLDYgQEAgY2xhc3MgV2ViV2hlZWxFdmVudDsKIGNsYXNzIFdlYnNpdGVE
YXRhU3RvcmU7CiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBDb2xvclNwYWNlRGF0
YTsKLXN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IEVkaXRpbmdSYW5nZTsKIHN0
cnVjdCBFZGl0b3JTdGF0ZTsKIHN0cnVjdCBQbGF0Zm9ybVBvcHVwTWVudURhdGE7CkBAIC0xMjk1
LDcgKzEyOTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VhcmNoVGhlV2ViKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gRGljdGlvbmFyeS4KLSAgICB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKTsKKyAgICB2b2lkIGRpZFBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwKGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTJjMWI5ZGUzNzM0OGQwMDM4MDM2MWY3
NDQwZWFlYWFjNTU4ZDQyMC4uZDhkOTFiMWI4NWNhYjVjZGU5OTcwYTRiMzBmZDRmNzRjODc0YTM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0zMDgsNyArMzA4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgRGljdGlvbmFyeSBzdXBwb3J0LgotICAgIERpZFBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwKHN0cnVjdCBXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm8g
ZGljdGlvbmFyeVBvcHVwSW5mbykKKyAgICBEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChzdHJ1
Y3QgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogCiAg
ICAgIyBLZXlib2FyZCBpbnB1dCBzdXBwb3J0IG1lc3NhZ2VzCiAgICAgRXhlY3V0ZVNhdmVkQ29t
bWFuZEJ5U2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9yKSAtPiAoYm9vbCBoYW5kbGVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDNkMTgyNTI0
YjcxNDBhYzc0YmVmNzgwZmRiZWE0MDg3ZjA5OGI4MTQuLjFjZDk5NzA0NmIwYzVmZjU2ODhhYzg3
ZmQ3OTk2MDEzYWIxZjc3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZv
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
KGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cyhib29sIHdpdGhBbmlt
YXRpb24gPSB0cnVlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggYjFkNTY4OWRh
NDRkYWE0ZmQ0OTdhOWJmZTMyYTU5MzdlYzhjOTg1Yi4uNzliMDBmNzJkZGE0ZmVkZWNiYjgwZGZm
MTAzMmViOTM2NDIwYjhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCkBAIC0yOCwxMCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQog
Ci0jaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5o
IgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5m
by5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oIgogI2ltcG9ydCAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgpAQCAtNTMsMTEgKzUx
LDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3Iu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvTG9va3VwU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9UZXh0SW5kaWNhdG9yLmg+CkBAIC04NSw4ICs4Myw2IEBACiBAZW5kCiAjZW5kaWYKIAot
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwgTFVUZXJtT3B0aW9uRGlzYWJsZVNl
YXJjaFRlcm1JbmRpY2F0b3IsIE5TU3RyaW5nICopCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNTg1LDMyICs1ODEsMTEgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBs
dWdpbkNvbXBsZXhUZXh0SW4KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9ybURpY3Rp
b25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5m
bykKIHsKLSAgICBpZiAoIWdldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtdXRhYmxl
T3B0aW9ucyA9IGFkb3B0TlMoWyhOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UG9wdXBJbmZvLm9w
dGlvbnMuZ2V0KCkgbXV0YWJsZUNvcHldKTsKLQogICAgIFttX3drVmlldyBfcHJlcGFyZUZvckRp
Y3Rpb25hcnlMb29rdXBdOwogCi0gICAgaWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2Vh
cmNoVGVybUluZGljYXRvcigpICYmIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci5j
b250ZW50SW1hZ2UpIHsKLSAgICAgICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOlRleHRJ
bmRpY2F0b3I6OmNyZWF0ZShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIHdpdGhM
aWZldGltZTpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07Ci0gICAgICAg
IFttdXRhYmxlT3B0aW9ucyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlz
YWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IoKV07Ci0KLSAgICAgICAgaWYgKFtnZXRMVUxvb2t1cERl
ZmluaXRpb25Nb2R1bGVDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd0Rl
ZmluaXRpb25Gb3JUZXJtOnJlbGF0aXZlVG9SZWN0Om9mVmlldzpvcHRpb25zOildKSB7Ci0gICAg
ICAgICAgICBGbG9hdFJlY3QgZmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzID0gZGljdGlv
bmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRp
bmF0ZXNbMF07Ci0gICAgICAgICAgICBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMubW92
ZUJ5KGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzLmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgW2dldExVTG9va3Vw
RGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQ
b3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6Zmly
c3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzIG9mVmlldzptX3drVmlldyBvcHRpb25zOm11dGFi
bGVPcHRpb25zLmdldCgpXTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBvcHVwSW5mby5v
cmlnaW47Ci0KLSAgICAvLyBDb252ZXJ0IHRvIHNjcmVlbiBjb29yZGluYXRlcy4KLSAgICB0ZXh0
QmFzZWxpbmVPcmlnaW4gPSBbbV93a1ZpZXcgY29udmVydFBvaW50OnRleHRCYXNlbGluZU9yaWdp
biB0b1ZpZXc6bmlsXTsKLSAgICB0ZXh0QmFzZWxpbmVPcmlnaW4gPSBbbV93a1ZpZXcud2luZG93
IGNvbnZlcnRSZWN0VG9TY3JlZW46TlNNYWtlUmVjdCh0ZXh0QmFzZWxpbmVPcmlnaW4ueCwgdGV4
dEJhc2VsaW5lT3JpZ2luLnksIDAsIDApXS5vcmlnaW47Ci0KLSAgICBbZ2V0TFVMb29rdXBEZWZp
bml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlvbmFyeVBvcHVw
SW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGlu
ZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKKyAgICBEaWN0aW9uYXJ5TG9v
a3VwOjpzaG93UG9wdXAoZGljdGlvbmFyeVBvcHVwSW5mbywgbV93a1ZpZXcsIFt0aGlzXShUZXh0
SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yKSB7CisgICAgICAgIFttX3drVmlldyBfc2V0VGV4dElu
ZGljYXRvcjp0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9yV2luZG93TGlm
ZXRpbWU6OlBlcm1hbmVudF07CisgICAgfSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRp
c21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MoYm9vbCB3aXRoQW5pbWF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbQppbmRleCA3ZTQ4MzMyNWIwNjkxMGY4MDc3MjU1ODhhM2U4NzFiZWQy
NGZlZDI5Li5mYjhhMTkzYmVjMDI0OGI2NjEyZmEzOGEyNjgzZTY1NTczMzA0Y2NiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbQpAQCAtNDYsNyArNDYsNiBAQAogCiBTT0ZUX0xJTktfRlJBTUVXT1JL
X0lOX1VNQlJFTExBKFF1YXJ0eiwgUXVpY2tMb29rVUkpCiBTT0ZUX0xJTktfQ0xBU1MoUXVpY2tM
b29rVUksIFFMUHJldmlld01lbnVJdGVtKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExv
b2t1cCwgTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IsIE5TU3RyaW5nICop
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAg
LTQ2MSwzMyArNDYwLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAgaWYgKF9zdGF0
ZSAhPSBJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6UmVhZHkpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBpZiAoIWdldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8g
PSBfaGl0VGVzdFJlc3VsdERhdGEuZGljdGlvbmFyeVBvcHVwSW5mbzsKLSAgICBpZiAoIWRpY3Rp
b25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5zdHJpbmcpCisgICAgaWYgKCFkaWN0aW9u
YXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICBbX3drVmlldyBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBdOwogCi0gICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IG11dGFibGVPcHRpb25zID0gYWRvcHROUyhbKE5TRGljdGlv
bmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5nZXQoKSBtdXRhYmxlQ29weV0pOwot
ICAgIGlmIChjYW5Mb2FkTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IoKSAm
JiBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKSB7Ci0gICAg
ICAgIFtfd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOlRleHRJbmRpY2F0b3I6OmNyZWF0ZShkaWN0
aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9y
V2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07Ci0gICAgICAgIFttdXRhYmxlT3B0aW9ucyBzZXRP
YmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0
b3IoKV07Ci0KLSAgICAgICAgaWYgKFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZv
clRlcm06cmVsYXRpdmVUb1JlY3Q6b2ZWaWV3Om9wdGlvbnM6KV0pIHsKLSAgICAgICAgICAgIEZs
b2F0UmVjdCBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSBkaWN0aW9uYXJ5UG9wdXBJ
bmZvLnRleHRJbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlc1swXTsK
LSAgICAgICAgICAgIGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcy5tb3ZlQnkoZGljdGlv
bmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gW2dldExVTG9va3VwRGVm
aW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRlcm06ZGlj
dGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSByZWxhdGl2ZVRv
UmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgb2ZWaWV3Ol93a1ZpZXcgb3B0aW9u
czptdXRhYmxlT3B0aW9ucy5nZXQoKV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBDb252
ZXJ0IGJhc2VsaW5lIHRvIHNjcmVlbiBjb29yZGluYXRlcy4KLSAgICBOU1BvaW50IHRleHRCYXNl
bGluZU9yaWdpbiA9IGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luOwotICAgIHRleHRCYXNlbGlu
ZU9yaWdpbiA9IFtfd2tWaWV3IGNvbnZlcnRQb2ludDp0ZXh0QmFzZWxpbmVPcmlnaW4gdG9WaWV3
Om5pbF07Ci0gICAgdGV4dEJhc2VsaW5lT3JpZ2luID0gW193a1ZpZXcud2luZG93IGNvbnZlcnRS
ZWN0VG9TY3JlZW46TlNNYWtlUmVjdCh0ZXh0QmFzZWxpbmVPcmlnaW4ueCwgdGV4dEJhc2VsaW5l
T3JpZ2luLnksIDAsIDApXS5vcmlnaW47Ci0KLSAgICByZXR1cm4gW2dldExVTG9va3VwRGVmaW5p
dGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRlcm06ZGljdGlv
bmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRl
eHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKKyAgICByZXR1
cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pRGljdGlvbmFyeUxv
b2t1cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKGRpY3Rpb25hcnlQb3B1cEluZm8sIF93
a1ZpZXcsIFtzZWxmXShUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yKSB7CisgICAgICAgIFtf
d2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOnRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOlRleHRJ
bmRpY2F0b3JXaW5kb3dMaWZldGltZTo6UGVybWFuZW50XTsKKyAgICB9KTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCAzOTRlZWFmMTMwNjYwNzlkZDQzZjAxOTQ3ZTkwN2ZhNTI5MGIyMjNmLi5iNmZiY2JmZjcxOGFh
MDM3Mzg5OWEzODA5YTU4MzZiOWRkYWE1MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAi
QXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBv
cnQgIkVkaXRpbmdSYW5nZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUuaCIKICNpbXBvcnQgIk1l
bnVVdGlsaXRpZXMuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdl
cy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rh
dGlvbkFsdGVybmF0aXZlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOGQ0ZGY0NzA1NTE4ZGE4ZDZkYTU1ZmMyNjcwOWUxNDg0MTI5NDAwNC4uY2MxMTczZmY2
YzI4NzMzNGE2NGE5NDU1ZTIxNzZiNjZmNzhhNTliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5NCw4ICsxNTk0LDYgQEAK
IAkJQkNFNDY5NzkxMjE0RjJCNDAwMEI5OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U0Njk3ODEy
MTRGMkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCAqLzsgfTsKIAkJQkNF
ODFEOEMxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBG
b250SW5mby5jcHAgKi87IH07CiAJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFODFE
OEIxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggKi87IH07Ci0JCUJDRTgxRDk4MTMxQUUw
MjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDk2MTMxQUUwMjAwMDI0MTkxMCAvKiBE
aWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCAqLzsgfTsKLQkJQkNFODFEOTkxMzFBRTAyMTAwMjQxOTEw
IC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRTgxRDk3MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9w
dXBJbmZvLmggKi87IH07CiAJCUJDRUU3QUQwMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNz
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNFRTdBQ0MxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJDRUU3QUQxMTI4MTc5ODgwMDk4MjdEQSAv
KiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFRTdBQ0QxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmggKi87IH07CiAJCUJDRUU3REM1MTI4QjY0NUQwMDk4MjdEQSAvKiBJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFRTdEQzMxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50
LmggKi87IH07CkBAIC0zODIxLDggKzM4MTksNiBAQAogCQlCQ0U0Njk3ODEyMTRGMkI0MDAwQjk4
RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250SW5mby5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTgxRDhCMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250SW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0U4MUQ5NjEzMUFFMDIwMDAyNDE5MTAgLyogRGljdGlv
bmFyeVBvcHVwSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aWN0aW9uYXJ5UG9wdXBJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNF
ODFEOTcxMzFBRTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFyeVBvcHVwSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0U5QzBDRjE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDRTlDMEQwMTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUU3QUIzMTI4MTcwOTUwMDk4
MjdEQSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDcwMCw4ICs0Njk2LDYgQEAKIAkJCQkxQTZGOUY4RTExRTEzRUZDMDBEQjEzNzEgLyog
Q29tbWFuZExpbmUuaCAqLywKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8q
IENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLywKLQkJCQlCQ0U4MUQ5NjEzMUFFMDIwMDAyNDE5
MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgKi8sCi0JCQkJQkNFODFEOTcxMzFBRTAyMTAw
MjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLywKIAkJCQlDNTE3Mzg4MDEyREY4RjRG
MDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLywKIAkJCQkwRkI2NTkyMjEyMDhC
NERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8sCiAJCQkJRTEwNUZFNTMxOEQ3QjlE
RTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovLApAQCAtNzYzNyw3ICs3NjMxLDYgQEAKIAkJ
CQlDRTFBMEJENDFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0U4MUQ5OTEzMUFFMDIxMDAy
NDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RThG
MDgxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThF
OEYwQTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFERjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTk0NDAsNyArOTQzMyw2IEBACiAJCQkJNTEwMzJGMUQx
ODBGNzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM3NTM3RjE4M0JFNTBGMDA3MkNCMTUg
LyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Mzg5MUI2RDFBNjhDMzBC
MDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlCQ0U4MUQ5ODEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMDkxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2Fk
QXV0aGVudGljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjYzMTIxOEUw
QjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IDkzMjQ5NDgyNTJiNzBjODZhNTEzOGMyZDkzYzA1NTdlYTBlOTAyMWUuLjYxY2Y0ZmVhODFhMWM4
NjE1Y2ZiZmQ4MjNmMGZiMDAwODY0ODZhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yOSw5ICsyOSw3IEBACiAjaWYg
RU5BQkxFKFBERktJVF9QTFVHSU4pCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW1w
b3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1w
b3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJQREZBbm5vdGF0aW9uVGV4dFdp
ZGdldERldGFpbHMuaCIKICNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKICNpbXBvcnQgIlBERkxh
eWVyQ29udHJvbGxlckRldGFpbHMuaCIKQEAgLTE3MjAsNyArMTcxOCw3IEBAIHZvaWQgUERGUGx1
Z2luOjpzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICpzdHJpbmcsIENHCiB7CiAgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJ
bmZvOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0gY29udmVydEZyb21QREZWaWV3
VG9Sb290VmlldyhJbnRQb2ludChwb2ludCkpOwotICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYXR0
cmlidXRlZFN0cmluZy5zdHJpbmcgPSBzdHJpbmc7CisgICAgZGljdGlvbmFyeVBvcHVwSW5mby5h
dHRyaWJ1dGVkU3RyaW5nID0gc3RyaW5nOwogCiAgICAgd2ViRnJhbWUoKS0+cGFnZSgpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGRpY3Rp
b25hcnlQb3B1cEluZm8pKTsKIH0KQEAgLTE5MzcsNyArMTkzNSw3IEBAIFN0cmluZyBQREZQbHVn
aW46Omxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0
aW9uSW5WaWV3CiAgICAgICAgIHJldHVybiBzZWxlY3Rpb24uc3RyaW5nOwogICAgIH0KICAgICAK
LSAgICBOU1N0cmluZyAqbG9va3VwVGV4dCA9IGRpY3Rpb25hcnlMb29rdXBGb3JQREZTZWxlY3Rp
b24oc2VsZWN0aW9uLCBvcHRpb25zKTsKKyAgICBOU1N0cmluZyAqbG9va3VwVGV4dCA9IERpY3Rp
b25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24sIG9wdGlvbnMpOwog
ICAgIGlmICghbG9va3VwVGV4dCB8fCAhbG9va3VwVGV4dC5sZW5ndGgpCiAgICAgICAgIHJldHVy
biBAIiI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KaW5k
ZXggNDFiNTA2NmQ2NDA2ODM0ZGY4MDE4OGYyY2JlNzk1NjY0ODU2NDVlZS4uMGQ3ODljMzdlNTVk
NmVkYzBkNDFlZDRjZjEyZmYzMDI1MWFkMjg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29u
dGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAi
V2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1
cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFp
bkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA5MDc5MmMyYmRmYjc2YzczNTJhN2RiNTI4
MmJkODk4MDJhZWFiMzIuLjgzMGU5OWU2NjMxOGVjNTE4MGM3NzkwNGU4NGMyZGZjNTZlMWVkZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCIKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW5j
bHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgpAQCAtNDksNiArNDgs
NyBAQAogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpAQCAtMTA1NSw5ICsxMDU1LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3Vy
cmVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5n
ZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OlJhbmdlJiwgTlNEaWN0aW9uYXJ5ICpvcHRpb25z
LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbik7Ci0gICAgRGlj
dGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoV2ViQ29yZTo6RnJh
bWUqIGZyYW1lLCBXZWJDb3JlOjpSYW5nZSYgcmFuZ2UsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMs
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRhdGlv
blRyYW5zaXRpb24pOworICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFy
eVBvcHVwSW5mb0ZvclJhbmdlKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6UmFuZ2UmLCBOU0Rp
Y3Rpb25hcnkgKipvcHRpb25zLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJh
bnNpdGlvbik7CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCi0gICAgRGljdGlvbmFyeVBvcHVw
SW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQbHVnaW4oUERGU2VsZWN0
aW9uICosIFBERlBsdWdpbiYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAgICBXZWJDb3JlOjpEaWN0aW9uYXJ5
UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQREZT
ZWxlY3Rpb24gKiwgUERGUGx1Z2luJiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucywgV2ViQ29yZTo6
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogI2VuZGlmCiAKICAgICB2b2lk
IHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgd2lu
ZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHdp
bmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA3YzcyNDQ0
NDI0YTJmNDhkZDc2ZWU3YTY4YTY3Njk3OTJjYmFiZDY5Li4yZDk1ZjljYWEyMzAzOTYyNGYzZWNi
OTU4MDM2NDZlZDUyNzg4ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQg
IkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQg
IkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIkVkaXRpbmdSYW5nZS5oIgogI2ltcG9y
dCAiRWRpdG9yU3RhdGUuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5o
IgpAQCAtNTE4LDcgKzUxNyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29r
dXBBdExvY2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZsb2F0UG9pbnQpCiAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RS
ZXN1bHRBdFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KHBvaW50KSk7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
ID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLmZyYW1lKCkgOiAmbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHJhbmdlRm9y
RGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZvcHRpb25zKTsKKyAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1
bHQocmVzdWx0LCAmb3B0aW9ucyk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC01MjgsNyArNTI3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKIHZvaWQgV2ViUGFnZTo6
cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uIHByZXNlbnRhdGlvblRyYW5zaXRpb24pCiB7CiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRp
b25zID0gbmlsOwotICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IHJhbmdlRm9yRGlj
dGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihzZWxlY3Rpb24sICZvcHRpb25zKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVj
dGlvbihzZWxlY3Rpb24sICZvcHRpb25zKTsKICAgICBpZiAoc2VsZWN0ZWRSYW5nZSkKICAgICAg
ICAgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZShmcmFtZSwgKnNlbGVjdGVkUmFuZ2Us
IG9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogfQpAQCAtNTU2LDcgKzU1NSw3IEBA
IERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdl
KEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgSW50UmVjdCByYW5nZVJlY3QgPSBmcmFtZS0+
dmlldygpLT5jb250ZW50c1RvV2luZG93KHF1YWRzWzBdLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkp
OwogCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSBGbG9hdFBvaW50KHJhbmdlUmVj
dC54KCksIHJhbmdlUmVjdC55KCkgKyAoc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSAqIHBh
Z2VTY2FsZUZhY3RvcigpKSk7Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zID0gKENG
RGljdGlvbmFyeVJlZikqb3B0aW9uczsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMg
PSAqb3B0aW9uczsKIAogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqbnNBdHRyaWJ1dGVkU3RyaW5n
ID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UocmFuZ2UsIEluY2x1ZGVJbWFnZXNJ
bkF0dHJpYnV0ZWRTdHJpbmc6Ok5vKTsKIApAQCAtNTg1LDcgKzU4NCw3IEBAIERpY3Rpb25hcnlQ
b3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lKiBmcmFt
ZSwgUmFuZ2UmIHJhCiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogCiAgICAg
ZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgp
OwotICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5zdHJpbmcgPSBzY2Fs
ZWROU0F0dHJpYnV0ZWRTdHJpbmc7CisgICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVk
U3RyaW5nID0gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nOwogCiAgICAgcmV0dXJuIGRpY3Rpb25h
cnlQb3B1cEluZm87CiB9CkBAIC02MzgsOSArNjM3LDkgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBX
ZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQbHVnaW4oUERGU2Vs
ZWMKICAgICBkYXRhRm9yU2VsZWN0aW9uLnByZXNlbnRhdGlvblRyYW5zaXRpb24gPSBwcmVzZW50
YXRpb25UcmFuc2l0aW9uOwogICAgIAogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0g
cmFuZ2VSZWN0Lm9yaWdpbjsKLSAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKSpvcHRpb25zOworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9
ICpvcHRpb25zOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciA9IGRhdGFG
b3JTZWxlY3Rpb247Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0
cmluZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZzsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZv
LmF0dHJpYnV0ZWRTdHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmc7CiAgICAgCiAgICAg
cmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiB9CkBAIC0xMTk4LDcgKzExOTcsNyBAQCBSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0aW9uKEZsb2F0UG9p
bnQgbG9jYXRpb25JblZpZXdDbwogCiAgICAgSW50UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9p
bnQobG9jYXRpb25JblZpZXdDb29yZGluYXRlcyk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpKTsKLSAgICByZXR1cm4g
cmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVzdWx0KHJlc3VsdCwgb3B0aW9ucyk7
CisgICAgcmV0dXJuIERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KHJlc3Vs
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6aW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRl
KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260076</attachid>
            <date>2015-08-27 12:09:21 -0700</date>
            <delta_ts>2015-08-27 12:11:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148509-20150827120925.patch</filename>
            <type>text/plain</type>
            <size>75104</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjY2U5OTM2ZmYzNjIx
OTUzMTg2NGNkMDhlNWE0NTk5M2Y1ZDhlZi4uM2I3NTFlYjAxOTE4MmI5YWI3OTgyOGM2Njc1MGUz
ODUzMzQ5NDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTA4LTI2ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3Ig
b3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVyZSdzIGEgdG9uIG9mIGR1cGxpY2F0ZWQgY29kZSBpbiBsZWdhY3kg
YW5kIG1vZGVybiBXZWJLaXQgdG8gdGFsayB0bworICAgICAgICBMb29rdXAuIEFuZCwgaXQncyBw
cmV0dHkgbWVzc3kuIEFzIGEgZmlyc3Qgc3RlcCB0byBtYWtpbmcgaXQgbGVzcyBtZXNzeSwKKyAg
ICAgICAgbWFrZSBpdCBzbyB3ZSBvbmx5IGhhdmUgaXQgaW4gb25lIHBsYWNlIGluc3RlYWQgb2Yg
Zm91ciAob3IgdHdvKS4KKworICAgICAgICAqIGVkaXRpbmcvRGljdGlvbmFyeVBvcHVwSW5mby5o
OgorICAgICAgICBNb3ZlIERpY3Rpb25hcnlQb3B1cEluZm8gaW50byBXZWJDb3JlLiBUaGlzIHdh
cyBkdXBsaWNhdGVkCisgICAgICAgIGluIGJvdGggbGVnYWN5IGFuZCBtb2Rlcm4gV2ViS2l0Lgor
CisgICAgICAgICogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oOgorICAgICAgICAqIGVk
aXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0
aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQREZTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
c2hvd1BvcHVwT3JDcmVhdGVBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpY3Rpb25hcnlMb29rdXA6OnNob3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpoaWRlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1
cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OnJhbmdl
Rm9yRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIE1vdmUgRGljdGlvbmFyeUxvb2t1cCBzdHVmZiBpbnRvIGEgY2xhc3MgZm9y
IGJldHRlciBuYW1lcy4KKworICAgICAgICBNb3ZlIHNob3dQb3B1cCwgaGlkZVBvcHVwLCBhbmQg
YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwIGhlcmUuCisgICAgICAgIHNob3dQb3B1cCBhbmQg
YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwIGJvdGggYm90dGxlbmVjayB0aHJvdWdoCisgICAg
ICAgIGEgc2luZ2xlIGZ1bmN0aW9uLCB3aGVyZSBwcmV2aW91c2x5IHdlIGR1cGxpY2F0ZWQgYWxs
IG9mIHRoZSBjb2RlCisgICAgICAgIGZvciBib3RoIG9mIHRoZW0sIGFuZCBpbiBib3RoIGxlZ2Fj
eSBhbmQgbW9kZXJuIFdlYktpdC4KKworICAgICAgICBzaG93UG9wdXAgYW5kIGFuaW1hdGlvbkNv
bnRyb2xsZXJGb3JQb3B1cCB0YWtlIGEgYmxvY2sgdGhhdCB0aGV5ICptYXkqCisgICAgICAgIGNh
bGwgaWYgd2UgaGF2ZSBzdXBwb3J0IGZvciBvdmVycmlkaW5nIExvb2t1cCdzIGluZGljYXRvciB3
aXRoIFRleHRJbmRpY2F0b3IsCisgICAgICAgIGJlY2F1c2UgdGhlIGluc3RhbGxhdGlvbiBwcm9j
ZXNzIGlzIGRpZmZlcmVudCBwZXIgV2ViS2l0LgorCisgICAgICAgICogcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9z
ZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1cCk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZvckRp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKToKKyAgICAgICAgQWRqdXN0IHRvIHRoZSBuZXcgbmFt
aW5nLgorCiAyMDE1LTA4LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICB3YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDZlYjFjMTI3M2Q2NmRhY2RlMTgwNjg2ZWM4MmIyNDVhODQxZWMwZGMuLjY4MmFjNDk0
NWNhNTcyZjMwMTJhM2Y4NDJjZjJmOTlhNWVmMTEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTUtMDgtMjYgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIEZhY3RvciBvdXQgTG9va3VwIGludm9jYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTUtMDgtMjYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBidWlsZCBhZnRlciByMTg4OTgyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDI0ZWJhZjNlYzg0ZDUwNWM0MjgxZmUxYTRiZWZhMmNiM2ZmYzkzMzkuLmFmMGFk
ZWIyMWZkZTY3MzA5YjgzZTM2NzQ2YmE0NzlmNTc4NTg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxNS0wOC0yNiAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIG91dCBMb29rdXAgaW52b2NhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L0Rp
Y3Rpb25hcnlQb3B1cEluZm8uaDogUmVtb3ZlZC4KKyAgICAgICAgTW92ZSB0byBXZWJDb3JlLgor
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Ol0pOgorICAgICAgICBEaWN0aW9uYXJ5UG9w
dXBJbmZvIGtlZXBzIGEgVGV4dEluZGljYXRvckRhdGEsIG5vdCBhIFRleHRJbmRpY2F0b3IuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJG
b3JEYXRhRGV0ZWN0ZWRMaW5rXSk6CisgICAgICAgIChkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFu
Z2UpOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmltYXRpb25D
b250cm9sbGVyRm9yVGV4dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRpY3Rpb25hcnlMb29rdXBQb3B1cEluZm86
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6d2l0aExpZmV0aW1lOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IF9zaG93RGljdGlvbmFyeUxvb2t1cFBvcHVwOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIE1vdmUgYSBidW5jaCBv
ZiBjb2RlIHRvIFdlYkNvcmUuCisgICAgICAgIEZhY3RvciBzb21lIHRoYXQgaGFzIHRvIHN0YXkg
b3V0IGludG8gX3ByZXBhcmVGb3JEaWN0aW9uYXJ5TG9va3VwLgorCiAyMDE1LTA4LTI2ICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBTYWZhcmkg
bmF2aWdhdGVzIGFmdGVyIGEgY2FuY2VsbGVkIGZvcmNlIGNsaWNrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjg0
NWQ5YzgxMGRlN2Q1MGI1ZmE3ZjM0Yzk5MWNiNDg5OTIwNWU0ZS4uZTg1YjRjYTQzNTZkMjlkZDI2
Zjc0YTEzNzAwODBhM2Y0YjYwOWMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1
LTA4LTI2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBGYWN0b3Igb3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oOiBSZW1v
dmVkLgorICAgICAgICBNb3ZlZCB0byBXZWJDb3JlLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGljdGlv
bmFyeVBvcHVwSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGlj
dGlvbmFyeVBvcHVwSW5mbz46OmRlY29kZSk6CisgICAgICAgIEFkZCBlbmNvZGUvZGVjb2RlcnMg
Zm9yIERpY3Rpb25hcnlQb3B1cEluZm8gbm93IHRoYXQgaXQncyBpbiBXZWJDb3JlLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKCtb
V0tWaWV3IGhpZGVXb3JkRGVmaW5pdGlvbldpbmRvd10pOgorICAgICAgICAoLVtXS1ZpZXcgX2Rp
c21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRl
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bG9va3VwVGV4dEF0TG9jYXRp
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRN
ZW51Q2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JT
ZWxlY3Rpb25JblBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxvb2t1cFRl
eHRBdExvY2F0aW9uKToKKyAgICAgICAgQWRqdXN0IHRvIG5ldyBuYW1lcyBhbmQgbW92ZSBzdHVm
ZiB0byBXZWJDb3JlLgorCiAyMDE1LTA4LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCBkdWUgdG8gYW5pbWF0aW9uRGlkRW5kIGNh
bGxlZCBvbiBkZWFsbG9jYXRlZCBSZW1vdGVMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWFhNDI2ZDQzODA5
OWU3ODEyZGNiYmY5ODRhNjU1Y2Q3MmZjOTVlZS4uZjNhYTIxYWJiY2VmY2I3ZDZlMjRhZTE2OTFh
MTZmMDE2NjE3OTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOCw2ICsxMTM4LDcgQEAKIAkJMkQ1MDAyRjgxQjU2RDc4
MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ1MDAyRjcxQjU2RDc4MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwICov
OyB9OwogCQkyRDUwMDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGOTFCNTZE
Nzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTJENTAwMkZDMUI1NkQ3
OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxp
dGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTJENTY0NkIwMUI4Rjg0OTMwMDNDNDk5NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU2NDZBRjFCOEY4NDkz
MDAzQzQ5OTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENThEODU1MUExNUY2NUYwMEE1RjcyNiAvKiBE
YXRhRGV0ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENThEODU2MUExNUY2
NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OEQ4NTQxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRl
Y3Rpb24ubW0gKi87IH07CiAJCTJENTlGMUJGMUEwMDQ0QzYwMDFGM0QyOSAvKiBEYXRhRGV0ZWN0
b3JzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDU5RjFCRTFBMDA0NEM2MDAxRjNEMjkgLyogRGF0YURldGVjdG9yc1NQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzQ5LDYgKzgzNTAsNyBA
QAogCQkyRDUwMDJGNzFCNTZENzgxMDAyMEFBRjcgLyogRE9NUGF0aC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01QYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ1MDAyRjkxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aFV0aWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENTAwMkZBMUI1NkQ3OTkwMDIwQUFGNyAv
KiBQYXRoVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGhV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ1NjQ2QUYxQjhGODQ5
MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGljdGlvbmFyeVBvcHVwSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENThEODU0MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVj
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1OUYxQkUxQTAwNDRDNjAw
MUYzRDI5IC8qIERhdGFEZXRlY3RvcnNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YURldGVjdG9yc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc5NzUsNiArMTc5NzcsNyBAQAogCQkJCUNFQ0FERkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0
YXRpb25BbHRlcm5hdGl2ZS5oICovLAogCQkJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25Db21tYW5kLmNwcCAqLywKIAkJCQlDRUNBREZDNTE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQ29tbWFuZC5oICovLAorCQkJCTJENTY0NkFGMUI4Rjg0OTMwMDNDNDk5NCAvKiBE
aWN0aW9uYXJ5UG9wdXBJbmZvLmggKi8sCiAJCQkJOTMzMDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8q
IEVkaXRBY3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5NDA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENv
bW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDk1MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFu
ZC5oICovLApAQCAtMjQzNzEsNiArMjQzNzQsNyBAQAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2
MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkUxMzEz
MzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgwRTZEMDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMkQ1NjQ2QjAxQjhGODQ5MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQb3B1cElu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NP
TVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQjNFMEM0RUE5MUUwMDgzMjg1
RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCmluZGV4IGY2MjI4ZjVkNzhlNDQzZWIzOGM0MzQwNWRh
NTEwNjgxY2ExN2M5NWIuLmUxNjViZDNmNWM3M2FlNmYxY2RkMDNkMjdlOGYxMDAwMWY0YzEzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKQEAg
LTI4LDIwICsyOCw0MSBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW5jbHVkZSAiRGljdGlv
bmFyeVBvcHVwSW5mby5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAotT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CitPQkpDX0NMQVNTIE5TU3Ry
aW5nOworT0JKQ19DTEFTUyBOU1ZpZXc7CiBPQkpDX0NMQVNTIFBERlNlbGVjdGlvbjsKIAorLy8g
VGhpcyBmaWxlIGlzIGluY2x1ZGVkIGluIEludGVybmFscy5jcHAsIHNvIHdlIGNhbid0IHVzZSBP
YmpDIG91dHJpZ2h0LgorI2lmIGRlZmluZWQoX19PQkpDX18pCisjaW5jbHVkZSAiTlNJbW1lZGlh
dGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIgorI2RlZmluZSBQbGF0Zm9ybUFuaW1hdGlv
bkNvbnRyb2xsZXIgaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPgorI2Vs
c2UKKyNkZWZpbmUgUGxhdGZvcm1BbmltYXRpb25Db250cm9sbGVyIHZvaWQqCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgUmFuZ2U7
CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCi1XRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJh
bmdlPiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwotV0VCQ09SRV9FWFBPUlQgUGFzc1Jl
ZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVzdWx0KGNvbnN0
IEhpdFRlc3RSZXN1bHQmLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKLVdFQkNPUkVfRVhQT1JU
IE5TU3RyaW5nICpkaWN0aW9uYXJ5TG9va3VwRm9yUERGU2VsZWN0aW9uKFBERlNlbGVjdGlvbiAq
LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKK2NsYXNzIERpY3Rpb25hcnlMb29rdXAgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZv
clNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9u
cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQXRI
aXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBOU0RpY3Rpb25hcnkgKipvcHRpb25z
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNTdHJpbmcgKnN0cmluZ0ZvclBERlNlbGVj
dGlvbihQREZTZWxlY3Rpb24gKiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisKKyAgICAvLyBG
SVhNRTogU2hvdWxkIG1vdmUvdW5pZnkgZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlIGhlcmUg
dG9vLgorCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2hvd1BvcHVwKGNvbnN0IERp
Y3Rpb25hcnlQb3B1cEluZm8mLCBOU1ZpZXcgKiwgc3RkOjpmdW5jdGlvbjx2b2lkKFRleHRJbmRp
Y2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBoaWRlUG9wdXAoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQbGF0Zm9ybUFuaW1hdGlvbkNvbnRyb2xsZXIgYW5pbWF0aW9uQ29udHJvbGxlckZvclBv
cHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBOU1ZpZXcgKiwgc3RkOjpmdW5jdGlvbjx2
b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKTsK
K307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggZWQwNDc5ZTRiMmJiOWI3ZWJkZTJhMDFk
YmY3MWVlNjY2MjYzYmM5Mi4uNDdmMzNiYmQ0ODUxZTFjZjA0YzlhNzU0OTA1ZDIyOGE2YzcyZjFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1
cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1t
CkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJIVE1MQ29udmVydGVyLmgiCiAjaW1wb3J0ICJI
aXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJMb29rdXBTUEkuaCIKKyNpbXBvcnQgIk5TSW1tZWRp
YXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBv
cnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKQEAgLTQ3LDYgKzQ4LDggQEAK
ICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAorU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwgTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJj
aFRlcm1JbmRpY2F0b3IsIE5TU3RyaW5nICopCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGJvb2wgc2VsZWN0aW9uQ29udGFpbnNQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvc2l0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCkBAIC02MSw3ICs2
NCw3IEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmlzCiAgICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2Ut
PmNvbnRhaW5zKHBvc2l0aW9uKTsKIH0KIAotUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0
aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1Bhc3NSZWZQdHI8UmFuZ2U+IERpY3Rpb25hcnlM
b29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVk
UmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBpZiAoIXNlbGVjdGVk
UmFuZ2UpCkBAIC04Nyw3ICs5MCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yRGljdGlv
bmFyeUxvb2t1cEZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzCiAgICAgcmV0
dXJuIHNlbGVjdGVkUmFuZ2UucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYg
aGl0VGVzdFJlc3VsdCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1Bhc3NSZWZQdHI8UmFuZ2U+
IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIGhpdFRlc3RSZXN1bHQsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCiB7CiAgICAgTm9kZSog
bm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2Rl
KQpAQCAtMTEzLDcgKzExNiw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yRGljdGlvbmFy
eUxvb2t1cEF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoCiAgICAgLy8gSWYg
d2UgaGl0IHRoZSBzZWxlY3Rpb24sIHVzZSB0aGF0IGluc3RlYWQgb2YgbGV0dGluZyBMb29rdXAg
ZGVjaWRlIHRoZSByYW5nZS4KICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1l
LT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bvc2l0aW9uKHBvc2l0
aW9uLCBzZWxlY3Rpb24pKQotICAgICAgICByZXR1cm4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3Vw
Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybiBEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24sIG9wdGlvbnMpOwogCiAgICAg
VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzID0gVmlzaWJs
ZVNlbGVjdGlvbihwb3NpdGlvbik7CiAgICAgc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxl
cy5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CkBAIC0xNTAsNyArMTUz
LDcgQEAgc3RhdGljIHZvaWQgZXhwYW5kU2VsZWN0aW9uQnlDaGFyYWN0ZXJzKFBERlNlbGVjdGlv
biAqc2VsZWN0aW9uLCBOU0ludGVnZXIgbnVtYmUKICAgICBjaGFyYWN0ZXJzQWRkZWRBZnRlckVu
ZCA9IHNlbGVjdGlvbi5zdHJpbmcubGVuZ3RoIC0gb3JpZ2luYWxMZW5ndGggLSBjaGFyYWN0ZXJz
QWRkZWRCZWZvcmVTdGFydDsKIH0KIAotTlNTdHJpbmcgKmRpY3Rpb25hcnlMb29rdXBGb3JQREZT
ZWxlY3Rpb24oUERGU2VsZWN0aW9uICpzZWxlY3Rpb24sIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMp
CitOU1N0cmluZyAqRGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9yUERGU2VsZWN0aW9uKFBERlNl
bGVjdGlvbiAqc2VsZWN0aW9uLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQogewogICAgIC8vIERv
bid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciBhdCB0aGUgcG9pbnQuCiAg
ICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVjdGlvbi5zdHJpbmcubGVuZ3RoKQpAQCAtMTg1LDYg
KzE4OCw2OSBAQCBOU1N0cmluZyAqZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbihQREZT
ZWxlY3Rpb24gKnNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5CiAgICAgcmV0dXJuIHNlbGVjdGlvbi5z
dHJpbmc7CiB9CiAKK3N0YXRpYyBpZDxOU0ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xs
ZXI+IHNob3dQb3B1cE9yQ3JlYXRlQW5pbWF0aW9uQ29udHJvbGxlcihib29sIGNyZWF0ZUFuaW1h
dGlvbkNvbnRyb2xsZXIsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1
cEluZm8sIE5TVmlldyAqdmlldywgc3RkOjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4g
dGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKQoreworICAgIGlmICghZ2V0TFVMb29r
dXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtdXRhYmxlT3B0aW9ucyA9IGFkb3B0TlMoWyhO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMuZ2V0KCkgbXV0YWJsZUNv
cHldKTsKKworICAgIGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZShk
aWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpOworCisgICAgaWYgKGNhbkxvYWRMVVRl
cm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYmIHRleHRJbmRpY2F0b3IuZ2V0
KCkuY29udGVudEltYWdlKCkpIHsKKyAgICAgICAgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNh
bGxiYWNrKHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAgICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0
T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNh
dG9yKCldOworCisgICAgICAgIGlmIChbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3Mo
KSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dEZWZpbml0aW9uRm9yVGVybTpyZWxh
dGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9uczopXSkgeworICAgICAgICAgICAgRmxvYXRSZWN0IGZp
cnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyA9IHRleHRJbmRpY2F0b3IuZ2V0KCkudGV4dFJl
Y3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcygpWzBdOworICAgICAgICAgICAgZmlyc3RUZXh0
UmVjdEluVmlld0Nvb3JkaW5hdGVzLm1vdmVCeSh0ZXh0SW5kaWNhdG9yLmdldCgpLnRleHRCb3Vu
ZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKS5sb2NhdGlvbigpKTsKKyAgICAgICAgICAg
IGlmIChjcmVhdGVBbmltYXRpb25Db250cm9sbGVyKSB7CisjaWYgIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisgICAgICAgICAgICAgICAgcmV0dXJuIFtnZXRMVUxv
b2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JU
ZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSByZWxhdGl2ZVRv
UmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgb2ZWaWV3OnZpZXcgb3B0aW9uczpt
dXRhYmxlT3B0aW9ucy5nZXQoKV07CisjZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBuaWw7
CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRp
b25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZv
LmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6Zmlyc3RUZXh0UmVjdEluVmll
d0Nvb3JkaW5hdGVzIG9mVmlldzp2aWV3IG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIE5TUG9pbnQg
dGV4dEJhc2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW47CisKKyAgICAv
LyBDb252ZXJ0IHRvIHNjcmVlbiBjb29yZGluYXRlcy4KKyAgICB0ZXh0QmFzZWxpbmVPcmlnaW4g
PSBbdmlldyBjb252ZXJ0UG9pbnQ6dGV4dEJhc2VsaW5lT3JpZ2luIHRvVmlldzpuaWxdOworICAg
IHRleHRCYXNlbGluZU9yaWdpbiA9IFt2aWV3LndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOk5T
TWFrZVJlY3QodGV4dEJhc2VsaW5lT3JpZ2luLngsIHRleHRCYXNlbGluZU9yaWdpbi55LCAwLCAw
KV0ub3JpZ2luOworCisgICAgaWYgKGNyZWF0ZUFuaW1hdGlvbkNvbnRyb2xsZXIpIHsKKyNpZiAg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKKyAgICAgICAgcmV0dXJu
IFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1cEFuaW1hdGlvbkNvbnRy
b2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSBh
dExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgp
XTsKKyNlbHNlCisgICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYKKyAgICB9CisKKyAgICBbZ2V0
TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGlj
dGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0TG9jYXRpb246dGV4dEJh
c2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOworICAgIHJldHVybiBu
aWw7Cit9CisKK3ZvaWQgRGljdGlvbmFyeUxvb2t1cDo6c2hvd1BvcHVwKGNvbnN0IERpY3Rpb25h
cnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8sIE5TVmlldyAqdmlldywgc3RkOjpmdW5j
dGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxi
YWNrKQoreworICAgIHNob3dQb3B1cE9yQ3JlYXRlQW5pbWF0aW9uQ29udHJvbGxlcihmYWxzZSwg
ZGljdGlvbmFyeVBvcHVwSW5mbywgdmlldywgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxi
YWNrKTsKK30KKwordm9pZCBEaWN0aW9uYXJ5TG9va3VwOjpoaWRlUG9wdXAoKQoreworICAgIGlm
ICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGhpZGVEZWZpbml0aW9uXTsK
K30KKworaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPiBEaWN0aW9uYXJ5
TG9va3VwOjphbmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAoY29uc3QgRGljdGlvbmFyeVBvcHVw
SW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbywgTlNWaWV3ICp2aWV3LCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoVGV4dEluZGljYXRvciYpPiB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJhY2spCit7
CisgICAgcmV0dXJuIHNob3dQb3B1cE9yQ3JlYXRlQW5pbWF0aW9uQ29udHJvbGxlcih0cnVlLCBk
aWN0aW9uYXJ5UG9wdXBJbmZvLCB2aWV3LCB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJh
Y2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggMDA1
NTUzMTYxZTQxMzAzMDkyZTY0NTg1NWYwMmMyM2RmMDVhMDM5MS4uMTI2OWRhNjQyYWE1NTY1NDY4
MGQwNWNhNDNhOTAwMTNhYTM5YTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHRCYXNlZE9uTG9va3Vw
KGMKICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKIAogICAgIE5TRGljdGlvbmFy
eSAqb3B0aW9ucyA9IG5pbDsKLSAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IHJhbmdlRm9y
RGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZvcHRpb25zKSkKKyAgICBp
ZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0
UmVzdWx0KHJlc3VsdCwgJm9wdGlvbnMpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlv
bigqcmFuZ2UpOwogCiAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0YmFjZDU1ZmVlM2JlMTk1ZmEzMDc0ZjRiMzcwMzQy
ZTE3YjRjZjk5Li4yNWQ1ZjY5YWIxNTdkMDdjNTE3MmU4YTI2YzBjODBjNWI1NWFhN2IyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBSZWZQ
dHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihp
bnQgeCwgaW50IHksIEV4Y2VwdAogICAgIAogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZG9j
dW1lbnQtPmZyYW1lKCktPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRB
dFBvaW50KEludFBvaW50KHgsIHkpKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBudWxs
cHRyOwotICAgIHJldHVybiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQo
cmVzdWx0LCAmb3B0aW9ucyk7CisgICAgcmV0dXJuIERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRI
aXRUZXN0UmVzdWx0KHJlc3VsdCwgJm9wdGlvbnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
eCk7CiAgICAgVU5VU0VEX1BBUkFNKHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWYzOGI2NTY3Y2Q1NTM3MmEyMDFiYWNjNWZjNDRl
M2VlYzEyMGYwNC4uOWUwNDZkYjliZWQ3ODkzNTIxMTFiNzNjOTNjMTg5YzU1MTUzY2M3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MDEsNyArMTAxLDYgQEAKIAkJMkQyNTM5NjcxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEMjUzOTY1MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2Vy
dmljZVBpY2tlckNvbnRyb2xsZXIubW0gKi87IH07CiAJCTJERDYzMkMyMTlFNUQxRjAwMDJFOUM3
QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENjMyQzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggKi87IH07CiAJCTJERDYzMkMzMTlFNUQxRjAw
MDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDYzMkMxMTlFNUQxRjAwMDJFOUM3
QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbSAqLzsgfTsKLQkJMkRGMDY0QTkx
QTJERDUzQzAwREJCMzU0IC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjA2NEE4MUEyREQ1M0MwMERCQjM1NCAv
KiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggKi87IH07CiAJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMkUyRkUzMTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTJF
MkZFNjE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRTJGRTQxNEU0ODE4MjAwN0NDQTE4
IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSAqLzsgfTsKIAkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4
IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFODE0RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZp
Y2F0aW9uSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTU2Myw3ICs1NjIsNiBAQAogCQkyRDgxREFCMzAz
RUIwQjJEMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZS5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMkRE
NjMyQzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDYzMkMxMTlFNUQxRjAw
MDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyREYwNjRBODFBMkRENTNDMDBEQkIz
NTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaWN0aW9uYXJ5UG9wdXBJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxMkUyRkUzMTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMkUyRkU0MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOb3RpZmlj
YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMkUyRkU4MTRFNDgyMTUw
MDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTMyMSw3ICsxMzE5LDYgQEAKIAkJCQlGNTJDQTZCRDAyREY5RDBGMDE4
NjM1Q0EgLyogSFRNTCAqLywKIAkJCQk1MUU5NEMwNzA2QzAyQ0EzMDBBOUIwOUUgLyogUERGICov
LAogCQkJCUExMEMxRDc5MTgyMDMwMTkwMDM2ODgzQSAvKiBpb3MgKi8sCi0JCQkJMkRGMDY0QTgx
QTJERDUzQzAwREJCMzU0IC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLywKIAkJCQk4MzczNDM1
QTA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5oICovLAogCQkJCTgzNzM0MzVCMDYyNEVF
MEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLm1tICovLAogCQkJCTQ0QkI4QjEzMTI0MUEwMjIwMDFF
M0EyMiAvKiBXZWJBcmNoaXZlSW50ZXJuYWwuaCAqLywKQEAgLTE4NDAsNyArMTgzNyw2IEBACiAJ
CQkJQTEwQzFEOEMxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZpZXdJUGhvbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzOTgxMDZEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXRFcnJvcnNQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhCRkNFODE1NTMxMjI0MDA1QUZCMjUgLyogV2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkyREYwNjRBOTFBMkRE
NTNDMDBEQkIzNTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM5ODEwMUQwODI0QkYwMTAwOERGMDM4IC8qIFdlYktpdExvZ2dpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzOTgxMDFFMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJLaXROU1N0cmluZ0V4dHJhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjU4OTQwRURDQ0YxNTAwOEQ4ODNEIC8qIFdlYktpdFBs
dWdpbkFnZW50LmRlZnMgaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvRGljdGlvbmFyeVBvcHVwSW5mby5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRlNThjNjJjYjE0OTIxZWIyOWFiNmU3MDhjOWZmMWJiNjIwZGZkNjQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBv
aW50Lmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLUBjbGFzcyBOU0F0dHJpYnV0ZWRT
dHJpbmc7Ci1AY2xhc3MgTlNEaWN0aW9uYXJ5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBUZXh0SW5kaWNhdG9yOwotfTsKLQotc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm8gewotICAg
IE5TUG9pbnQgb3JpZ2luOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IG9wdGlvbnM7Ci0g
ICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZzsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4gdGV4dEluZGljYXRvcjsKLX07Ci0KLSNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCBhOGRiOGUwMTA0ZDE3Zjc5ZWRjOTgzYjQ5Mzg2NTdjYzhjNjczZjQ0Li4zMDk4MGQz
MGFhNjdlMmRlYjk4MjFlOTdkMDA3MjI1MGU1NWJkMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgIkRPTURvY3Vt
ZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
UmFuZ2VJbnRlcm5hbC5oIgotI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9y
dCAiV2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiV2ViQ2xpcFZpZXcuaCIKICNpbXBvcnQgIldlYkNv
bnRleHRNZW51Q2xpZW50LmgiCkBAIC04Miw2ICs4MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Nv
bG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5
TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmg+CkBAIC01Njg5LDcgKzU2ODksOCBAQCBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0
aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGluZm87CiAg
ICAgaW5mby5hdHRyaWJ1dGVkU3RyaW5nID0gYXR0clN0cmluZzsKICAgICBpbmZvLm9yaWdpbiA9
IGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGVuY2xvc2luZ0ludFJlY3QocmVj
dCkpLmxvY2F0aW9uKCk7Ci0gICAgaW5mby50ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6
Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoKmNvcmVGcmFtZSwgVGV4dEluZGljYXRvck9wdGlv
bkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQsIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpOworICAgIGlmIChhdXRvIHRl
eHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZSgq
Y29yZUZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90V2l0aFNlbGVjdGlv
bkhpZ2hsaWdodCwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFu
ZENyb3NzZmFkZSkpCisgICAgICAgIGluZm8udGV4dEluZGljYXRvciA9IHRleHRJbmRpY2F0b3It
PmRhdGEoKTsKICAgICBbW3NlbGYgX3dlYlZpZXddIF9zaG93RGljdGlvbmFyeUxvb2t1cFBvcHVw
OmluZm9dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYklt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggMTQ3NGIzNTkzNTA3MTliYTQyYTQ3
YmU3YWZlYzM5NGU3MDQwY2YxMy4uOGZmNWVkMTU4NWJmMDc3M2FlZmJiNWRmYmI5NGYzMWJiZmUw
YWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzAsNyArMzAsNiBAQAogI2ltcG9ydCAiRE9N
RWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTVJhbmdlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNp
bXBvcnQgIldlYkVsZW1lbnREaWN0aW9uYXJ5LmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJIVE1MVmlldy5oIgpAQCAtNDU0LDYgKzQ1Myw3IEBAIHN0YXRpYyBJ
bnRSZWN0IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93Q29vcmRpbmF0ZXNGcm9tTm9kZShOb2Rl
KiBub2RlKQogICAgIGlmICghbGlua1JhbmdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBSZWZQdHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0b3JPcHRpb25EZWZhdWx0LCBUZXh0SW5k
aWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluKTsKKyAgICBpbmRpY2F0b3ItPmRh
dGEoKS50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gW193ZWJWaWV3IF9j
b252ZXJ0UmVjdEZyb21Sb290VmlldzppbmRpY2F0b3ItPnRleHRCb3VuZGluZ1JlY3RJblJvb3RW
aWV3Q29vcmRpbmF0ZXMoKV07CiAKICAgICBfY3VycmVudEFjdGlvbkNvbnRleHQgPSBbYWN0aW9u
Q29udGV4dCBjb250ZXh0Rm9yVmlldzpfd2ViVmlldyBhbHRNb2RlOllFUyBpbnRlcmFjdGlvblN0
YXJ0ZWRIYW5kbGVyOl4oKSB7CiAgICAgfSBpbnRlcmFjdGlvbkNoYW5nZWRIYW5kbGVyOl4oKSB7
CkBAIC01MTAsNyArNTEwLDkgQEAgc3RhdGljIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFy
eVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhbmcKICAgICB9XTsKIAog
ICAgIHBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nID0gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5n
LmdldCgpOwotICAgIHBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3Jl
YXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uRGVmYXVsdCwgcHJlc2VudGF0
aW9uVHJhbnNpdGlvbik7CisKKyAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGlj
YXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uRGVmYXVsdCwg
cHJlc2VudGF0aW9uVHJhbnNpdGlvbikpCisgICAgICAgIHBvcHVwSW5mby50ZXh0SW5kaWNhdG9y
ID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwogICAgIHJldHVybiBwb3B1cEluZm87CiB9CiAKQEAg
LTUyOCw3ICs1MzAsNyBAQCBzdGF0aWMgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9w
dXBJbmZvRm9yUmFuZ2UoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFuZwogICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbmlsOwotICAgIFJlZlB0cjxSYW5n
ZT4gZGljdGlvbmFyeVJhbmdlID0gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVz
dWx0KF9oaXRUZXN0UmVzdWx0LCAmb3B0aW9ucyk7CisgICAgUmVmUHRyPFJhbmdlPiBkaWN0aW9u
YXJ5UmFuZ2UgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChfaGl0VGVz
dFJlc3VsdCwgJm9wdGlvbnMpOwogICAgIGlmICghZGljdGlvbmFyeVJhbmdlKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggOGYxNWRi
NTU4M2VlNWQ4ZmQxZmI4YTBkODRjNzNmZmFiMWVlOWVjMC4uYzA4OTg0YmI4Mzg2YzA3NTMzZmE5
MDM0ZWU0NTIzYjczMTdlNjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCAiRE9NRG9jdW1lbnRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgiCi0jaW1w
b3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJTdG9yYWdlVGhyZWFkLmgiCiAj
aW1wb3J0ICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbXBvcnQgIldlYkFwcGxpY2F0
aW9uQ2FjaGVJbnRlcm5hbC5oIgpAQCAtMTIzLDYgKzEyMiw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZU1hbmFnZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVu
dExvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgpAQCAtMjk1LDcg
KzI5NSw2IEBACiAKICNpZiBQTEFURk9STShNQUMpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUwoTG9va3VwLCBMVU5vdGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2UsIE5TU3RyaW5nICopCi1T
T0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3VwLCBMVVRlcm1PcHRpb25EaXNhYmxlU2Vh
cmNoVGVybUluZGljYXRvciwgTlNTdHJpbmcgKikKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElP
UykKQEAgLTg1NTEsMjkgKzg1NTAsMTQgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1
c2hMYXllcnMoKQogICAgIGlmICghZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5n
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNh
YmxlU2VhcmNoVGVybUluZGljYXRvcigpICYmIGNhbkxvYWRMVU5vdGlmaWNhdGlvblBvcG92ZXJX
aWxsQ2xvc2UoKSAmJiBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIHsKLSAgICAg
ICAgaWYgKCFfcHJpdmF0ZS0+aGFzSW5pdGlhbGl6ZWRMb29rdXBPYnNlcnZlcikgewotICAgICAg
ICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfZGljdGlvbmFyeUxvb2t1cFBvcG92ZXJXaWxsQ2xvc2U6
KSBuYW1lOmdldExVTm90aWZpY2F0aW9uUG9wb3ZlcldpbGxDbG9zZSgpIG9iamVjdDpuaWxdOwot
ICAgICAgICAgICAgX3ByaXZhdGUtPmhhc0luaXRpYWxpemVkTG9va3VwT2JzZXJ2ZXIgPSBZRVM7
Ci0gICAgICAgIH0KLQotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbXV0
YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFtkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMgbXV0YWJs
ZUNvcHldKTsKLSAgICAgICAgaWYgKCFtdXRhYmxlT3B0aW9ucykKLSAgICAgICAgICAgIG11dGFi
bGVPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1P
cHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKLSAgICAgICAgW3NlbGYgX3NldFRl
eHRJbmRpY2F0b3I6KmRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciB3aXRoTGlmZXRp
bWU6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lOjpQZXJtYW5lbnRdOwotCi0gICAgICAgIGlm
IChbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJtOnJlbGF0aXZlVG9SZWN0
Om9mVmlldzpvcHRpb25zOildKSB7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgZmlyc3RUZXh0UmVj
dEluVmlld0Nvb3JkaW5hdGVzID0gZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLT50
ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKClbMF07Ci0gICAgICAgICAgICBmaXJz
dFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMubW92ZUJ5KGRpY3Rpb25hcnlQb3B1cEluZm8udGV4
dEluZGljYXRvci0+dGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpLmxvY2F0
aW9uKCkpOwotICAgICAgICAgICAgcmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVD
bGFzcygpIGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cElu
Zm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSByZWxhdGl2ZVRvUmVjdDpbc2VsZiBfY29udmVydFJl
Y3RGcm9tUm9vdFZpZXc6Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzXSBvZlZpZXc6c2Vs
ZiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKLSAgICAgICAgfQotICAgIH0KKyAgICBb
c2VsZiBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBdOwogCi0gICAgLy8gQ29udmVydCB0byBz
Y3JlZW4gY29vcmRpbmF0ZXMuCi0gICAgTlNQb2ludCB0ZXh0QmFzZWxpbmVPcmlnaW4gPSBbc2Vs
Zi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpOU01ha2VSZWN0KGRpY3Rpb25hcnlQb3B1cElu
Zm8ub3JpZ2luLngsIGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luLnksIDAsIDApXS5vcmlnaW47
CisgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBhZGp1c3RlZFBvcHVwSW5mbyA9IGRpY3Rpb25hcnlQ
b3B1cEluZm87CisgICAgYWRqdXN0ZWRQb3B1cEluZm8udGV4dEluZGljYXRvci50ZXh0Qm91bmRp
bmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gW3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RW
aWV3OmFkanVzdGVkUG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlc107CiAKLSAgICByZXR1cm4gW2dldExVTG9va3VwRGVmaW5pdGlvbk1v
ZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRlcm06ZGljdGlvbmFyeVBv
cHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3Jp
Z2luIG9wdGlvbnM6ZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zLmdldCgpXTsKKyAgICByZXR1
cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pRGljdGlvbmFyeUxv
b2t1cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKGFkanVzdGVkUG9wdXBJbmZvLCBzZWxm
LCBbc2VsZl0oVGV4dEluZGljYXRvciYgdGV4dEluZGljYXRvcikgeworICAgICAgICBbc2VsZiBf
c2V0VGV4dEluZGljYXRvcjp0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9y
V2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07CisgICAgfSk7CiB9CiAjZW5kaWYgLy8gX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKIApAQCAtODU5Nyw3ICs4NTgxLDcg
QEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogICAgIGlmICghX3By
aXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cpCiAgICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNh
dG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsK
IAotICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyA9IFtzZWxm
IGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzp0ZXh0SW5kaWNhdG9y
LnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKV0gdG9WaWV3Om5pbF07Cisg
ICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29u
dmVydFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCkgdG9WaWV3Om5pbF07CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNv
b3JkaW5hdGVzID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5n
UmVjdEluV2luZG93Q29vcmRpbmF0ZXNdOwogICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2lu
ZG93LT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0b3IsIE5TUmVjdFRvQ0dSZWN0KHRleHRC
b3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzKSwgbGlmZXRpbWUpOwogfQpAQCAtODYxNSwz
NSArODU5OSwzMCBAQCBib29sIExheWVyRmx1c2hDb250cm9sbGVyOjpmbHVzaExheWVycygpCiAg
ICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93LT5zZXRBbmltYXRpb25Qcm9ncmVz
cyhwcm9ncmVzcyk7CiB9CiAKLS0gKHZvaWQpX3Nob3dEaWN0aW9uYXJ5TG9va3VwUG9wdXA6KGNv
bnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cEluZm8KKy0gKHZvaWQpX3By
ZXBhcmVGb3JEaWN0aW9uYXJ5TG9va3VwCiB7Ci0gICAgaWYgKCFkaWN0aW9uYXJ5UG9wdXBJbmZv
LmF0dHJpYnV0ZWRTdHJpbmcpCisgICAgaWYgKF9wcml2YXRlLT5oYXNJbml0aWFsaXplZExvb2t1
cE9ic2VydmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY2FuTG9hZExVVGVybU9wdGlv
bkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCkgJiYgY2FuTG9hZExVTm90aWZpY2F0aW9uUG9w
b3ZlcldpbGxDbG9zZSgpICYmIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvcikgewot
ICAgICAgICBpZiAoIV9wcml2YXRlLT5oYXNJbml0aWFsaXplZExvb2t1cE9ic2VydmVyKSB7Ci0g
ICAgICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9kaWN0aW9uYXJ5TG9va3VwUG9wb3ZlcldpbGxD
bG9zZTopIG5hbWU6Z2V0TFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlKCkgb2JqZWN0Om5p
bF07Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+aGFzSW5pdGlhbGl6ZWRMb29rdXBPYnNlcnZlciA9
IFlFUzsKLSAgICAgICAgfQorICAgIF9wcml2YXRlLT5oYXNJbml0aWFsaXplZExvb2t1cE9ic2Vy
dmVyID0gWUVTOwogCi0gICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtdXRh
YmxlT3B0aW9ucyA9IGFkb3B0TlMoW2RpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyBtdXRhYmxl
Q29weV0pOwotICAgICAgICBpZiAoIW11dGFibGVPcHRpb25zKQotICAgICAgICAgICAgbXV0YWJs
ZU9wdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwot
ICAgICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9w
dGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOwotICAgICAgICBbc2VsZiBfc2V0VGV4
dEluZGljYXRvcjoqZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGlt
ZTpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07CisgICAgaWYgKGNhbkxv
YWRMVU5vdGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2UoKSkKKyAgICAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihfZGljdGlvbmFyeUxvb2t1cFBvcG92ZXJXaWxsQ2xvc2U6KSBuYW1lOmdldExVTm90aWZp
Y2F0aW9uUG9wb3ZlcldpbGxDbG9zZSgpIG9iamVjdDpuaWxdOworfQogCi0gICAgICAgIGlmIChb
Z2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNob3dEZWZpbml0aW9uRm9yVGVybTpyZWxhdGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9u
czopXSkgewotICAgICAgICAgICAgRmxvYXRSZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGlu
YXRlcyA9IGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci0+dGV4dFJlY3RzSW5Cb3Vu
ZGluZ1JlY3RDb29yZGluYXRlcygpWzBdOwotICAgICAgICAgICAgZmlyc3RUZXh0UmVjdEluVmll
d0Nvb3JkaW5hdGVzLm1vdmVCeShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3ItPnRl
eHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKS5sb2NhdGlvbigpKTsKLSAgICAg
ICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9u
Rm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmVsYXRp
dmVUb1JlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmZpcnN0VGV4dFJlY3RJblZp
ZXdDb29yZGluYXRlc10gb2ZWaWV3OnNlbGYgb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CistICh2b2lkKV9zaG93RGlj
dGlvbmFyeUxvb2t1cFBvcHVwOihjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJilkaWN0aW9uYXJ5
UG9wdXBJbmZvCit7CisgICAgaWYgKCFkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJp
bmcpCisgICAgICAgIHJldHVybjsKIAotICAgIC8vIENvbnZlcnQgdG8gc2NyZWVuIGNvb3JkaW5h
dGVzLgotICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gW3NlbGYud2luZG93IGNvbnZl
cnRSZWN0VG9TY3JlZW46TlNNYWtlUmVjdChkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbi54LCBk
aWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbi55LCAwLCAwKV0ub3JpZ2luOworICAgIFtzZWxmIF9w
cmVwYXJlRm9yRGljdGlvbmFyeUxvb2t1cF07CiAKLSAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9u
TW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5h
dHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlv
bnM6ZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zLmdldCgpXTsKKyAgICBEaWN0aW9uYXJ5UG9w
dXBJbmZvIGFkanVzdGVkUG9wdXBJbmZvID0gZGljdGlvbmFyeVBvcHVwSW5mbzsKKyAgICBhZGp1
c3RlZFBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6YWRqdXN0ZWRQb3B1cElu
Zm8udGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsK
KworICAgIERpY3Rpb25hcnlMb29rdXA6OnNob3dQb3B1cChhZGp1c3RlZFBvcHVwSW5mbywgc2Vs
ZiwgW3NlbGZdKFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpIHsKKyAgICAgICAgW3NlbGYg
X3NldFRleHRJbmRpY2F0b3I6dGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRv
cldpbmRvd0xpZmV0aW1lOjpQZXJtYW5lbnRdOworICAgIH0pOwogfQogCiAtICh2b2lkKV9kaWN0
aW9uYXJ5TG9va3VwUG9wb3ZlcldpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDIy
MGVjZTdkYjVkMzZhMTExMjBhNDZiN2YwNTZkZjI3MWY5ZTkyZWEuLjgwNTdlYTdkODgyNGQ4M2U5
ZDFhYmY0MTdmNGZhZjllNjc0MTQ0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaApAQCAtNTgsOSArNTgsOSBAQCBjbGFzcyBSZW5kZXJCb3g7CiBjbGFz
cyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVVJMOwogc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZl
Oworc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiB9CiAKLXN0cnVjdCBEaWN0aW9uYXJ5UG9w
dXBJbmZvOwogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjsKIGNsYXNzIFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogCkBAIC0yNjksOSArMjY5LDkgQEAgT0JKQ19DTEFT
UyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTooV2ViQ29yZTo6VGV4
dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1lOwogLSAodm9pZClfY2xlYXJUZXh0SW5k
aWNhdG9yV2l0aEFuaW1hdGlvbjooV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3Nh
bEFuaW1hdGlvbilhbmltYXRpb247CiAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9u
UHJvZ3Jlc3M6KGZsb2F0KXByb2dyZXNzOwotLSAodm9pZClfc2hvd0RpY3Rpb25hcnlMb29rdXBQ
b3B1cDooY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbzsKKy0g
KHZvaWQpX3Nob3dEaWN0aW9uYXJ5TG9va3VwUG9wdXA6KGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25h
cnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cEluZm87CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKLS0gKGlkKV9hbmltYXRpb25Db250cm9sbGVyRm9yRGlj
dGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpZGljdGlv
bmFyeVBvcHVwSW5mbzsKKy0gKGlkKV9hbmltYXRpb25Db250cm9sbGVyRm9yRGljdGlvbmFyeUxv
b2t1cFBvcHVwSW5mbzooY29uc3QgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpZGljdGlv
bmFyeVBvcHVwSW5mbzsKIC0gKFdlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgKilfaW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlcjsKICNlbmRpZgogLSAoTlNFdmVudCAqKV9wcmVzc3VyZUV2ZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8u
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjVhMzZkNmY3ODBiMjNjOTlhOTEyYzY0NTI5YzI5
MDgzZDRkMDQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgotCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCi0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJBcmd1bWVudENv
ZGVyc0NGLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgRGljdGlvbmFy
eVBvcHVwSW5mbzo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAot
ewotICAgIGVuY29kZXIgPDwgb3JpZ2luOwotICAgIGVuY29kZXIgPDwgdGV4dEluZGljYXRvcjsK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgaGFkT3B0aW9ucyA9IG9wdGlvbnM7Ci0g
ICAgZW5jb2RlciA8PCBoYWRPcHRpb25zOwotICAgIGlmIChoYWRPcHRpb25zKQotICAgICAgICBJ
UEM6OmVuY29kZShlbmNvZGVyLCBvcHRpb25zLmdldCgpKTsKLQotICAgIGVuY29kZXIgPDwgYXR0
cmlidXRlZFN0cmluZzsKLSNlbmRpZgotfQotCi1ib29sIERpY3Rpb25hcnlQb3B1cEluZm86OmRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgRGljdGlvbmFyeVBvcHVwSW5mbyYg
cmVzdWx0KQotewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdpbikpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRleHRJ
bmRpY2F0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBib29sIGhhZE9wdGlvbnM7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYWRPcHRpb25z
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChoYWRPcHRpb25zKSB7Ci0gICAgICAg
IGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0Lm9wdGlvbnMpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmF0
dHJpYnV0ZWRTdHJpbmcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZWQzYzAwNmNjNjYwODVjZWZkNzI3ZjU4MGY4YTllMGU4YmE3NWZmNi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGlj
dGlvbmFyeVBvcHVwSW5mby5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgRGljdGlvbmFyeVBvcHVwSW5mb19oCi0jZGVmaW5lIERpY3Rpb25hcnlQ
b3B1cEluZm9faAotCi0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRl
ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgQXJndW1lbnREZWNvZGVyOwotY2xhc3MgQXJndW1l
bnRFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IERpY3Rpb25hcnlQ
b3B1cEluZm8gewotICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7
Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgRGljdGlvbmFy
eVBvcHVwSW5mbyYpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW47Ci0gICAgV2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGEgdGV4dEluZGljYXRvcjsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBvcHRpb25zOwotICAgIEF0dHJpYnV0
ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZzsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBEaWN0aW9uYXJ5UG9wdXBJbmZvX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggN2E1ODQ5NGE4N2Yx
ZTAzMzhkYjVkY2YzOWI3NDhhMTg0MjA1YzdjNy4uZmUyNTNhODU2MTAwZjE2NGM0MTNkMzQ4YTZm
ZjM1NzY3NmRjY2NjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFy
eVBvcHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlQ2hvb3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9uLmg+
CkBAIC03Myw2ICs3NCw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBcmd1
bWVudENvZGVyc0NGLmgiCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNNYWMuaCIKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjIwMyw0ICsyMjA1LDUyIEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsCiB9CiAjZW5kaWYKIAordm9pZCBBcmd1bWVudENvZGVyPERpY3Rpb25hcnlQb3B1
cEluZm8+OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERpY3Rp
b25hcnlQb3B1cEluZm8mIGluZm8pCit7CisgICAgZW5jb2RlciA8PCBpbmZvLm9yaWdpbjsKKyAg
ICBlbmNvZGVyIDw8IGluZm8udGV4dEluZGljYXRvcjsKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGJvb2wgaGFkT3B0aW9ucyA9IGluZm8ub3B0aW9uczsKKyAgICBlbmNvZGVyIDw8IGhhZE9w
dGlvbnM7CisgICAgaWYgKGhhZE9wdGlvbnMpCisgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IGluZm8ub3B0aW9ucy5nZXQoKSk7CisKKyAgICBib29sIGhhZEF0dHJpYnV0ZWRTdHJpbmcgPSBp
bmZvLmF0dHJpYnV0ZWRTdHJpbmc7CisgICAgZW5jb2RlciA8PCBoYWRBdHRyaWJ1dGVkU3RyaW5n
OworICAgIGlmIChoYWRBdHRyaWJ1dGVkU3RyaW5nKQorICAgICAgICBJUEM6OmVuY29kZShlbmNv
ZGVyLCBpbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpOworI2VuZGlmCit9CisKK2Jvb2wgQXJn
dW1lbnRDb2RlcjxEaWN0aW9uYXJ5UG9wdXBJbmZvPjo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiByZXN1bHQpCit7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudGV4dEluZGljYXRvcikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGJvb2wgaGFkT3B0aW9uczsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhZE9wdGlvbnMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGhhZE9wdGlvbnMpIHsKKyAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNv
ZGVyLCByZXN1bHQub3B0aW9ucykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBl
bHNlCisgICAgICAgIHJlc3VsdC5vcHRpb25zID0gbnVsbHB0cjsKKworICAgIGJvb2wgaGFkQXR0
cmlidXRlZFN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhZEF0dHJpYnV0ZWRTdHJp
bmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGhhZEF0dHJpYnV0ZWRTdHJpbmcp
IHsKKyAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCByZXN1bHQuYXR0cmlidXRlZFN0
cmluZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlCisgICAgICAgIHJl
c3VsdC5hdHRyaWJ1dGVkU3RyaW5nID0gbnVsbHB0cjsKKyNlbmRpZgorICAgIHJldHVybiB0cnVl
OworfQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBmNWYxNTUxMmY0NzFmYTM1MWQyNWRhMTI5MjQ2ZjJl
NDRhZDVjZTcwLi5jZjU0OTNiNjA3MmY2NWY0MjhkZWU1ODZjYTg5ZGI3ZmU3N2Y1MzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC03MSw2
ICs3MSw3IEBAIGNsYXNzIFVSTDsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVj
dCBDb29raWU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CitzdHJ1Y3QgRGljdGlvbmFy
eVBvcHVwSW5mbzsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwogc3RydWN0IElEQkRhdGFi
YXNlTWV0YWRhdGE7CiBzdHJ1Y3QgSURCR2V0UmVzdWx0OwpAQCAtNDczLDYgKzQ3NCwxMSBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRh
PiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3JEYXRhJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpOwor
ICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpEaWN0aW9u
YXJ5UG9wdXBJbmZvJik7Cit9OworCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oCmluZGV4IGI4MjYxMWYyNTUxMmMxNWVlYjUz
MTI2OTM2NTRmNjExN2YxMzg5NmIuLjRkODcxYTM4YTQyMzM5OWVmOGI0M2QyNWIzODZlYzFmMzE2
NDE3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaApAQCAtMjEs
OCArMjEsOCBAQAogI2RlZmluZSBXZWJIaXRUZXN0UmVzdWx0X2gKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgotI2luY2x1ZGUgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+CkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+IGRldGVjdGVkRGF0
YVRleHRJbmRpY2F0b3I7CiAgICAgICAgIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpQYWdlT3Zlcmxh
eUlEIGRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92ZXJsYXk7CiAKLSAgICAgICAgRGljdGlv
bmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvOworICAgICAgICBXZWJDb3JlOjpEaWN0
aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm87CiAKICAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5kaWNhdG9yOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmgKaW5kZXggMTc0ODA1MWYzZTVjY2Zk
ZmViMmM0ZGU1NjkzZmExZDJjMGM1MmY0ZS4uNGUyZGE3NjE5MzE1M2VkOGQ4MDlkMTg3ZTA1MjMx
NWM5YjcxZjdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVu
dENvZGVyc01hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2Rl
cnNNYWMuaApAQCAtMjgsNiArMjgsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
IAorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0F0dHJpYnV0ZWRTdHJpbmc7CitP
QkpDX0NMQVNTIE5TQ29sb3I7CitPQkpDX0NMQVNTIE5TRGF0YTsKK09CSkNfQ0xBU1MgTlNEYXRl
OworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CitPQkpDX0NMQVNTIE5TRm9udDsKK09CSkNfQ0xB
U1MgTlNOdW1iZXI7CitPQkpDX0NMQVNTIE5TU3RyaW5nOworCiBuYW1lc3BhY2UgSVBDIHsKIAog
Y2xhc3MgQXJndW1lbnRFbmNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCmluZGV4IGZmMjgzM2IzYjI5N2U5M2Q4MDRkZmJkMTJiM2IyYjYzOWI2MDhkYzUu
LmM5ZDY5OTc0ZTY5NWJlODBkMWM3OGIwZmRjNjBiYzViNDQwODNjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTgzLDYgKzgzLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzU1BJLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0
Lmg+CkBAIC00MDgzLDkgKzQwODQsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVl
RmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogCiArICh2b2lkKWhpZGVXb3JkRGVmaW5p
dGlvbldpbmRvdwogewotICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3Mo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFz
cygpIGhpZGVEZWZpbml0aW9uXTsKKyAgICBEaWN0aW9uYXJ5TG9va3VwOjpoaWRlUG9wdXAoKTsK
IH0KIAogLSAoTlNTaXplKW1pbmltdW1TaXplRm9yQXV0b0xheW91dApAQCAtNDY3Niw4ICs0Njc1
LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0
cmluZyAqcGF0aCkKICAgICAgICAgfHwgW19kYXRhLT5faW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ciBoYXNBY3RpdmVJbW1lZGlhdGVBY3Rpb25dCiAjZW5kaWYKICAgICAgICAgKSB7Ci0gICAgICAg
IGlmIChDbGFzcyBsb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MgPSBnZXRMVUxvb2t1cERlZmlu
aXRpb25Nb2R1bGVDbGFzcygpKQotICAgICAgICAgICAgW2xvb2t1cERlZmluaXRpb25Nb2R1bGVD
bGFzcyBoaWRlRGVmaW5pdGlvbl07CisgICAgICAgIERpY3Rpb25hcnlMb29rdXA6OmhpZGVQb3B1
cCgpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKICAg
ICAgICAgRERBY3Rpb25zTWFuYWdlciAqYWN0aW9uc01hbmFnZXIgPSBbZ2V0RERBY3Rpb25zTWFu
YWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBlNjg3ZmRhNWI2YTgxZTgxN2NkZDdhZjUwYmE5YTJkODY0M2RkNWExLi4yNTEy
OTAwMTg2OWJlOGIxNDdhZmMxODQ1ZjEzMjJiODc4ZjZmMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2Vk
KHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29sIHBsdWdpbkhh
c0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2lu
Q29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVu
dGlmaWVyLCBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3Qg
V2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
bWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cyhib29sIHdpdGhBbmltYXRpb24gPSB0cnVl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzYjFjNzNhNjU3Njlh
NTJiYTlmMGM2NGQ3NmI0ZmQyOTIyOTU5NThiLi4xODkyZDc5ZTkzMzExMTZlN2YwM2E0NDc1ZTBk
MjIzZmVlMGYyODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC0xNTUsNiArMTU1LDcgQEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9i
c2VydmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEluZGljYXRvcjsKK3N0cnVj
dCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1
Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsK
QEAgLTIwMSw3ICsyMDIsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50OwogY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0IENvbG9yU3BhY2VEYXRh
Owotc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiBzdHJ1Y3QgRWRpdGluZ1JhbmdlOwogc3Ry
dWN0IEVkaXRvclN0YXRlOwogc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKQEAgLTEyOTUs
NyArMTI5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWFyY2hUaGVXZWIoY29uc3QgU3RyaW5n
Jik7CiAKICAgICAvLyBEaWN0aW9uYXJ5LgotICAgIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlM
b29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpOworICAgIHZvaWQgZGlkUGVyZm9ybURp
Y3Rpb25hcnlMb29rdXAoY29uc3QgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMmMxYjlkZTM3MzQ4ZDAwMzgwMzYxZjc0
NDBlYWVhYWM1NThkNDIwLi5kOGQ5MWIxYjg1Y2FiNWNkZTk5NzBhNGIzMGZkNGY3NGM4NzRhMzZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTMwOCw3ICszMDgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCi0gICAgRGlkUGVy
Zm9ybURpY3Rpb25hcnlMb29rdXAoc3RydWN0IFdlYktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbyBk
aWN0aW9uYXJ5UG9wdXBJbmZvKQorICAgIERpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHN0cnVj
dCBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8pCiAKICAg
ICAjIEtleWJvYXJkIGlucHV0IHN1cHBvcnQgbWVzc2FnZXMKICAgICBFeGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpIC0+IChib29sIGhhbmRsZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggM2QxODI1MjRi
NzE0MGFjNzRiZWY3ODBmZGJlYTQwODdmMDk4YjgxNC4uMWNkOTk3MDQ2YjBjNWZmNTY4OGFjODdm
ZDc5OTYwMTNhYjFmNzc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8m
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAo
Y29uc3QgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzKGJvb2wgd2l0aEFuaW1h
dGlvbiA9IHRydWUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9u
UGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCBiMWQ1Njg5ZGE0
NGRhYTRmZDQ5N2E5YmZlMzJhNTkzN2VjOGM5ODViLi43OWIwMGY3MmRkYTRmZWRlY2JiODBkZmYx
MDMyZWI5MzY0MjBiOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwubW0KQEAgLTI4LDEwICsyOCw4IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAK
LSNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgi
CiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZv
LmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCkBAIC01MywxMSArNTEs
MTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgot
I2ltcG9ydCA8V2ViQ29yZS9Mb29rdXBTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1RleHRJbmRpY2F0b3IuaD4KQEAgLTg1LDggKzgzLDYgQEAKIEBlbmQKICNlbmRpZgogCi1T
T0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3VwLCBMVVRlcm1PcHRpb25EaXNhYmxlU2Vh
cmNoVGVybUluZGljYXRvciwgTlNTdHJpbmcgKikKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC01ODUsMzIgKzU4MSwxMSBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1
Z2luQ29tcGxleFRleHRJbgogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZv
KQogewotICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG11dGFibGVP
cHRpb25zID0gYWRvcHROUyhbKE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8ub3B0
aW9ucy5nZXQoKSBtdXRhYmxlQ29weV0pOwotCiAgICAgW21fd2tWaWV3IF9wcmVwYXJlRm9yRGlj
dGlvbmFyeUxvb2t1cF07CiAKLSAgICBpZiAoY2FuTG9hZExVVGVybU9wdGlvbkRpc2FibGVTZWFy
Y2hUZXJtSW5kaWNhdG9yKCkgJiYgZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLmNv
bnRlbnRJbWFnZSkgewotICAgICAgICBbbV93a1ZpZXcgX3NldFRleHRJbmRpY2F0b3I6VGV4dElu
ZGljYXRvcjo6Y3JlYXRlKGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvcikgd2l0aExp
ZmV0aW1lOlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZTo6UGVybWFuZW50XTsKLSAgICAgICAg
W211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25EaXNh
YmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKLQotICAgICAgICBpZiAoW2dldExVTG9va3VwRGVm
aW5pdGlvbk1vZHVsZUNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93RGVm
aW5pdGlvbkZvclRlcm06cmVsYXRpdmVUb1JlY3Q6b2ZWaWV3Om9wdGlvbnM6KV0pIHsKLSAgICAg
ICAgICAgIEZsb2F0UmVjdCBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSBkaWN0aW9u
YXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGlu
YXRlc1swXTsKLSAgICAgICAgICAgIGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcy5tb3Zl
QnkoZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBbZ2V0TFVMb29rdXBE
ZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlvbmFyeVBv
cHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSByZWxhdGl2ZVRvUmVjdDpmaXJz
dFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgb2ZWaWV3Om1fd2tWaWV3IG9wdGlvbnM6bXV0YWJs
ZU9wdGlvbnMuZ2V0KCldOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgTlNQb2ludCB0ZXh0QmFzZWxpbmVPcmlnaW4gPSBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9y
aWdpbjsKLQotICAgIC8vIENvbnZlcnQgdG8gc2NyZWVuIGNvb3JkaW5hdGVzLgotICAgIHRleHRC
YXNlbGluZU9yaWdpbiA9IFttX3drVmlldyBjb252ZXJ0UG9pbnQ6dGV4dEJhc2VsaW5lT3JpZ2lu
IHRvVmlldzpuaWxdOwotICAgIHRleHRCYXNlbGluZU9yaWdpbiA9IFttX3drVmlldy53aW5kb3cg
Y29udmVydFJlY3RUb1NjcmVlbjpOU01ha2VSZWN0KHRleHRCYXNlbGluZU9yaWdpbi54LCB0ZXh0
QmFzZWxpbmVPcmlnaW4ueSwgMCwgMCldLm9yaWdpbjsKLQotICAgIFtnZXRMVUxvb2t1cERlZmlu
aXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJ
bmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgpIGF0TG9jYXRpb246dGV4dEJhc2VsaW5l
T3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOworICAgIERpY3Rpb25hcnlMb29r
dXA6OnNob3dQb3B1cChkaWN0aW9uYXJ5UG9wdXBJbmZvLCBtX3drVmlldywgW3RoaXNdKFRleHRJ
bmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpIHsKKyAgICAgICAgW21fd2tWaWV3IF9zZXRUZXh0SW5k
aWNhdG9yOnRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOlRleHRJbmRpY2F0b3JXaW5kb3dMaWZl
dGltZTo6UGVybWFuZW50XTsKKyAgICB9KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlz
bWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cyhib29sIHdpdGhBbmltYXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCmluZGV4IDdlNDgzMzI1YjA2OTEwZjgwNzcyNTU4OGEzZTg3MWJlZDI0
ZmVkMjkuLmVkNDBmZWEwNDkwNWJiZTk5NmYwMWY1ZmM3MDljNDIyMGQ5NzZlMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0RhdGFEZXRlY3RvcnNTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Mb29rdXBTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTlNNZW51U1BJLmg+CkBAIC00Niw3ICs0
Nyw2IEBACiAKIFNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBRdWlja0xv
b2tVSSkKIFNPRlRfTElOS19DTEFTUyhRdWlja0xvb2tVSSwgUUxQcmV2aWV3TWVudUl0ZW0pCi1T
T0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3VwLCBMVVRlcm1PcHRpb25EaXNhYmxlU2Vh
cmNoVGVybUluZGljYXRvciwgTlNTdHJpbmcgKikKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNDYxLDMzICs0NjEsMTUgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKICAgICBpZiAoX3N0YXRlICE9IEltbWVkaWF0ZUFjdGlvblN0YXRlOjpS
ZWFkeSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0
aW9uTW9kdWxlQ2xhc3MoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIERpY3Rpb25hcnlQ
b3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbyA9IF9oaXRUZXN0UmVzdWx0RGF0YS5kaWN0aW9u
YXJ5UG9wdXBJbmZvOwotICAgIGlmICghZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3Ry
aW5nLnN0cmluZykKKyAgICBpZiAoIWRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmlu
ZykKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFtfd2tWaWV3IF9wcmVwYXJlRm9yRGljdGlv
bmFyeUxvb2t1cF07CiAKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbXV0YWJs
ZU9wdGlvbnMgPSBhZG9wdE5TKFsoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVBvcHVwSW5mby5v
cHRpb25zLmdldCgpIG11dGFibGVDb3B5XSk7Ci0gICAgaWYgKGNhbkxvYWRMVVRlcm1PcHRpb25E
aXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYmIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dElu
ZGljYXRvci5jb250ZW50SW1hZ2UpIHsKLSAgICAgICAgW193a1ZpZXcgX3NldFRleHRJbmRpY2F0
b3I6VGV4dEluZGljYXRvcjo6Y3JlYXRlKGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRv
cikgd2l0aExpZmV0aW1lOlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZTo6UGVybWFuZW50XTsK
LSAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1P
cHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKLQotICAgICAgICBpZiAoW2dldExV
TG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihsb29rdXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVybTpyZWxhdGl2ZVRvUmVjdDpvZlZpZXc6
b3B0aW9uczopXSkgewotICAgICAgICAgICAgRmxvYXRSZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdD
b29yZGluYXRlcyA9IGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci50ZXh0UmVjdHNJ
bkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzWzBdOwotICAgICAgICAgICAgZmlyc3RUZXh0UmVjdElu
Vmlld0Nvb3JkaW5hdGVzLm1vdmVCeShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3Iu
dGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcy5sb2NhdGlvbigpKTsKLSAgICAg
ICAgICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBsb29rdXBB
bmltYXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRT
dHJpbmcuc3RyaW5nLmdldCgpIHJlbGF0aXZlVG9SZWN0OmZpcnN0VGV4dFJlY3RJblZpZXdDb29y
ZGluYXRlcyBvZlZpZXc6X3drVmlldyBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIENvbnZlcnQgYmFzZWxpbmUgdG8gc2NyZWVuIGNvb3Jk
aW5hdGVzLgotICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBvcHVw
SW5mby5vcmlnaW47Ci0gICAgdGV4dEJhc2VsaW5lT3JpZ2luID0gW193a1ZpZXcgY29udmVydFBv
aW50OnRleHRCYXNlbGluZU9yaWdpbiB0b1ZpZXc6bmlsXTsKLSAgICB0ZXh0QmFzZWxpbmVPcmln
aW4gPSBbX3drVmlldy53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpOU01ha2VSZWN0KHRleHRC
YXNlbGluZU9yaWdpbi54LCB0ZXh0QmFzZWxpbmVPcmlnaW4ueSwgMCwgMCldLm9yaWdpbjsKLQot
ICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBsb29rdXBBbmlt
YXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJp
bmcuc3RyaW5nLmdldCgpIGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0
YWJsZU9wdGlvbnMuZ2V0KCldOworICAgIHJldHVybiAoaWQ8TlNJbW1lZGlhdGVBY3Rpb25Bbmlt
YXRpb25Db250cm9sbGVyPilEaWN0aW9uYXJ5TG9va3VwOjphbmltYXRpb25Db250cm9sbGVyRm9y
UG9wdXAoZGljdGlvbmFyeVBvcHVwSW5mbywgX3drVmlldywgW3NlbGZdKFRleHRJbmRpY2F0b3Im
IHRleHRJbmRpY2F0b3IpIHsKKyAgICAgICAgW193a1ZpZXcgX3NldFRleHRJbmRpY2F0b3I6dGV4
dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lOjpQZXJt
YW5lbnRdOworICAgIH0pOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDM5NGVlYWYxMzA2NjA3OWRkNDNmMDE5NDdl
OTA3ZmE1MjkwYjIyM2YuLmI2ZmJjYmZmNzE4YWEwMzczODk5YTM4MDlhNTgzNmI5ZGRhYTUyMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0
ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCAi
RGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiRWRpdGluZ1JhbmdlLmgiCiAjaW1wb3J0
ICJFZGl0b3JTdGF0ZS5oIgogI2ltcG9ydCAiTWVudVV0aWxpdGllcy5oIgpAQCAtNDgsNiArNDcs
NyBAQAogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4ZDRkZjQ3MDU1MThkYThkNmRhNTVm
YzI2NzA5ZTE0ODQxMjk0MDA0Li5jYzExNzNmZjZjMjg3MzM0YTY0YTk0NTVlMjE3NmI2NmY3OGE1
OWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNTk0LDggKzE1OTQsNiBAQAogCQlCQ0U0Njk3OTEyMTRGMkI0MDAwQjk4RUIg
LyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ2OTc4MTIxNEYyQjQwMDBCOThFQiAvKiBXZWJGcmFtZUxp
c3RlbmVyUHJveHkuY3BwICovOyB9OwogCQlCQ0U4MUQ4QzEzMTlGN0VGMDAyNDE5MTAgLyogRm9u
dEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFODFEOEExMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCAqLzsgfTsKIAkJQkNFODFE
OEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U4MUQ4QjEzMTlGN0VGMDAyNDE5MTAgLyogRm9udElu
Zm8uaCAqLzsgfTsKLQkJQkNFODFEOTgxMzFBRTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1
cEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFODFEOTYxMzFBRTAyMDAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uY3BwICovOyB9
OwotCQlCQ0U4MUQ5OTEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFODFEOTcxMzFB
RTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLzsgfTsKIAkJQkNFRTdBRDAx
MjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFN0FDQzEyODE3
OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFN0FDRDEy
ODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJQkNF
RTdEQzUxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFN0RDMzEyOEI2NDVEMDA5
ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLzsgfTsKQEAgLTM4MjEsOCArMzgxOSw2
IEBACiAJCUJDRTQ2OTc4MTIxNEYyQjQwMDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRnJhbWVMaXN0ZW5l
clByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFODFEOEExMzE5RjdF
RjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFODFE
OEIxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZvbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRTgx
RDk2MTMxQUUwMjAwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3Rpb25hcnlQb3B1cEluZm8uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0U4MUQ5NzEzMUFFMDIxMDAyNDE5MTAgLyogRGlj
dGlvbmFyeVBvcHVwSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0
aW9uYXJ5UG9wdXBJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTlDMENG
MTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFOUMwRDAxNDg1OTY1RDAwRTMzRDYx
IC8qIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNFRTdBQjMxMjgxNzA5NTAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzAwLDggKzQ2OTYsNiBAQAogCQkJ
CTFBNkY5RjhFMTFFMTNFRkMwMERCMTM3MSAvKiBDb21tYW5kTGluZS5oICovLAogCQkJCTUxMDZE
N0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLywKIAkJ
CQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oICov
LAotCQkJCUJDRTgxRDk2MTMxQUUwMjAwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNw
cCAqLywKLQkJCQlCQ0U4MUQ5NzEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5m
by5oICovLAogCQkJCUM1MTczODgwMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFj
dGlvbi5oICovLAogCQkJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUlu
Zm8uaCAqLywKIAkJCQlFMTA1RkU1MzE4RDdCOURFMDA4RjU3QTggLyogRWRpdGluZ1JhbmdlLmgg
Ki8sCkBAIC03NjM3LDcgKzc2MzEsNiBAQAogCQkJCUNFMUEwQkQ0MUE0OEU2QzYwMDU0RUY3NCAv
KiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1MzgwMTgzQkU1
MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2
QzFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDRTgxRDk5MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEYwODE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxv
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEU4RjBBMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3du
bG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNjMxMzE4
RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtOTQ0
MCw3ICs5NDMzLDYgQEAKIAkJCQk1MTAzMkYxRDE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBQzc1MzdGMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTgzODkxQjZEMUE2OEMzMEIwMDMwRjM4NiAvKiBEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUJDRTgxRDk4MTMxQUUwMjEwMDI0MTkxMCAv
KiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RjA3MTZC
MjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThFOEYw
OTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGll
bnQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggOTMyNDk0ODI1MmI3MGM4NmE1MTM4YzJkOTNj
MDU1N2VhMGU5MDIxZS4uNjFjZjRmZWE4MWExYzg2MTVjZmJmZDgyM2YwZmIwMDA4NjQ4NmE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KQEAgLTI5LDkgKzI5LDcgQEAKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKIAogI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNp
bXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIK
ICNpbXBvcnQgIlBERkFubm90YXRpb25UZXh0V2lkZ2V0RGV0YWlscy5oIgogI2ltcG9ydCAiUERG
S2l0SW1wb3J0cy5oIgogI2ltcG9ydCAiUERGTGF5ZXJDb250cm9sbGVyRGV0YWlscy5oIgpAQCAt
MTcyMCw3ICsxNzE4LDcgQEAgdm9pZCBQREZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgQ0cKIHsKICAgICBEaWN0aW9u
YXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm87CiAgICAgZGljdGlvbmFyeVBvcHVwSW5m
by5vcmlnaW4gPSBjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KEludFBvaW50KHBvaW50KSk7
Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyA9IHN0cmlu
ZzsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcgPSBzdHJpbmc7CiAK
ICAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBvcHVwSW5mbykpOwogfQpAQCAtMTkz
Nyw3ICsxOTM1LDcgQEAgU3RyaW5nIFBERlBsdWdpbjo6bG9va3VwVGV4dEF0TG9jYXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb25JblZpZXcKICAgICAgICAgcmV0dXJuIHNl
bGVjdGlvbi5zdHJpbmc7CiAgICAgfQogICAgIAotICAgIE5TU3RyaW5nICpsb29rdXBUZXh0ID0g
ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24sIG9wdGlvbnMpOworICAg
IE5TU3RyaW5nICpsb29rdXBUZXh0ID0gRGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9yUERGU2Vs
ZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7CiAgICAgaWYgKCFsb29rdXBUZXh0IHx8ICFsb29r
dXBUZXh0Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIEAiIjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGll
bnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQppbmRleCA0MWI1MDY2ZDY0MDY4MzRkZjgwMTg4ZjJj
YmU3OTU2NjQ4NTY0NWVlLi4wZDc4OWMzN2U1NWQ2ZWRjMGQ0MWVkNGNmMTJmZjMwMjUxYWQyODRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQpAQCAtMjgs
MTAgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAotI2ltcG9ydCAiRGlj
dGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW1wb3J0ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2lt
cG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGFnZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggMDkwNzkyYzJiZGZiNzZjNzM1MmE3ZGI1MjgyYmQ4OTgwMmFlYWIzMi4uMWUyZjYxYWY3ZDJk
ZDE2MDE5ZTQ5MTBjYzE1M2NjNWEzMmEzMzQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJBUElJbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUg
IkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
SW1hZ2VPcHRpb25zLmgiCkBAIC00OSw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVXNlckRhdGEuaCIK
ICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0
aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVz
Lmg+CkBAIC0xMDU1LDkgKzEwNTUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybURpY3Rp
b25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICB2
b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CiAgICAgdm9p
ZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclJhbmdlKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6UmFuZ2UmLCBOU0RpY3Rpb25hcnkgKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQ
cmVzZW50YXRpb25UcmFuc2l0aW9uKTsKLSAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25h
cnlQb3B1cEluZm9Gb3JSYW5nZShXZWJDb3JlOjpGcmFtZSogZnJhbWUsIFdlYkNvcmU6OlJhbmdl
JiByYW5nZSwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucywgV2ViQ29yZTo6VGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisgICAgV2ViQ29y
ZTo6RGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoV2ViQ29y
ZTo6RnJhbWUqLCBXZWJDb3JlOjpSYW5nZSYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMsIFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKICNpZiBFTkFCTEUoUERG
S0lUX1BMVUdJTikKLSAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9G
b3JTZWxlY3Rpb25JblBERlBsdWdpbihQREZTZWxlY3Rpb24gKiwgUERGUGx1Z2luJiwgTlNEaWN0
aW9uYXJ5ICoqb3B0aW9ucywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb24pOworICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclNlbGVjdGlvbkluUERGUGx1Z2luKFBERlNlbGVjdGlvbiAqLCBQREZQbHVnaW4mLCBO
U0RpY3Rpb25hcnkgKipvcHRpb25zLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9u
VHJhbnNpdGlvbik7CiAjZW5kaWYKIAogICAgIHZvaWQgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0
ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVl
bkNvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93
Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3
Q29vcmRpbmF0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDdjNzI0NDQ0MjRhMmY0OGRkNzZlZTdhNjhhNjc2OTc5
MmNiYWJkNjkuLjJkOTVmOWNhYTIzMDM5NjI0ZjNlY2I5NTgwMzY0NmVkNTI3ODg4ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgogI2lt
cG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgog
I2ltcG9ydCAiRWRpdGluZ1JhbmdlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgogI2ltcG9y
dCAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCkBAIC01MTgsNyArNTE3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgZmxvYXRQb2ludCkKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpKTsKICAgICBGcmFtZSogZnJh
bWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA6ICZtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKLSAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0
UmVzdWx0KHJlc3VsdCwgJm9wdGlvbnMpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBEaWN0
aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZvcHRpb25zKTsKICAg
ICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTUyOCw3ICs1MjcsNyBAQCB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBGbG9hdFBv
aW50JiBmbG9hdFBvaW50KQogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZv
clNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNp
dGlvbikKIHsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3RlZFJhbmdlID0gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9u
KHNlbGVjdGlvbiwgJm9wdGlvbnMpOworICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9
IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbiwgJm9wdGlvbnMp
OwogICAgIGlmIChzZWxlY3RlZFJhbmdlKQogICAgICAgICBwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEZvclJhbmdlKGZyYW1lLCAqc2VsZWN0ZWRSYW5nZSwgb3B0aW9ucywgcHJlc2VudGF0aW9uVHJh
bnNpdGlvbik7CiB9CkBAIC01NTYsNyArNTU1LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQ
YWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmEK
ICAgICBJbnRSZWN0IHJhbmdlUmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
cXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7CiAKICAgICBkaWN0aW9uYXJ5UG9wdXBJ
bmZvLm9yaWdpbiA9IEZsb2F0UG9pbnQocmFuZ2VSZWN0LngoKSwgcmFuZ2VSZWN0LnkoKSArIChz
dHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkpKTsKLSAgICBk
aWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKSpvcHRpb25zOwor
ICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9ICpvcHRpb25zOwogCiAgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nICpuc0F0dHJpYnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmlu
Z0Zyb21SYW5nZShyYW5nZSwgSW5jbHVkZUltYWdlc0luQXR0cmlidXRlZFN0cmluZzo6Tm8pOwog
CkBAIC01ODUsNyArNTg0LDcgQEAgRGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9u
YXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmEKICAgICAgICAgcmV0
dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiAKICAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJ
bmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5m
by5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZzsKKyAg
ICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0
ZWRTdHJpbmc7CiAKICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKIH0KQEAgLTYzOCw5
ICs2MzcsOSBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cElu
Zm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQREZTZWxlYwogICAgIGRhdGFGb3JTZWxlY3Rpb24u
cHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9IHByZXNlbnRhdGlvblRyYW5zaXRpb247CiAgICAgCiAg
ICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSByYW5nZVJlY3Qub3JpZ2luOwotICAgIGRp
Y3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9IChDRkRpY3Rpb25hcnlSZWYpKm9wdGlvbnM7Cisg
ICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zID0gKm9wdGlvbnM7CiAgICAgZGljdGlvbmFy
eVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0gZGF0YUZvclNlbGVjdGlvbjsKLSAgICBkaWN0aW9u
YXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nID0gc2NhbGVkTlNBdHRyaWJ1dGVk
U3RyaW5nOworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZyA9IHNjYWxl
ZE5TQXR0cmlidXRlZFN0cmluZzsKICAgICAKICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5m
bzsKIH0KQEAgLTExOTgsNyArMTE5Nyw3IEBAIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFn
ZTo6bG9va3VwVGV4dEF0TG9jYXRpb24oRmxvYXRQb2ludCBsb2NhdGlvbkluVmlld0NvCiAKICAg
ICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbkluVmlld0Nvb3JkaW5h
dGVzKTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZS5ldmVudEhhbmRsZXIo
KS5oaXRUZXN0UmVzdWx0QXRQb2ludChtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhwb2ludCkpOwotICAgIHJldHVybiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBB
dEhpdFRlc3RSZXN1bHQocmVzdWx0LCBvcHRpb25zKTsKKyAgICByZXR1cm4gRGljdGlvbmFyeUxv
b2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjppbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260077</attachid>
            <date>2015-08-27 12:11:57 -0700</date>
            <delta_ts>2015-08-27 12:20:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148509-20150827121200.patch</filename>
            <type>text/plain</type>
            <size>77294</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjY2U5OTM2ZmYzNjIx
OTUzMTg2NGNkMDhlNWE0NTk5M2Y1ZDhlZi4uM2I3NTFlYjAxOTE4MmI5YWI3OTgyOGM2Njc1MGUz
ODUzMzQ5NDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTA4LTI2ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3Ig
b3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVyZSdzIGEgdG9uIG9mIGR1cGxpY2F0ZWQgY29kZSBpbiBsZWdhY3kg
YW5kIG1vZGVybiBXZWJLaXQgdG8gdGFsayB0bworICAgICAgICBMb29rdXAuIEFuZCwgaXQncyBw
cmV0dHkgbWVzc3kuIEFzIGEgZmlyc3Qgc3RlcCB0byBtYWtpbmcgaXQgbGVzcyBtZXNzeSwKKyAg
ICAgICAgbWFrZSBpdCBzbyB3ZSBvbmx5IGhhdmUgaXQgaW4gb25lIHBsYWNlIGluc3RlYWQgb2Yg
Zm91ciAob3IgdHdvKS4KKworICAgICAgICAqIGVkaXRpbmcvRGljdGlvbmFyeVBvcHVwSW5mby5o
OgorICAgICAgICBNb3ZlIERpY3Rpb25hcnlQb3B1cEluZm8gaW50byBXZWJDb3JlLiBUaGlzIHdh
cyBkdXBsaWNhdGVkCisgICAgICAgIGluIGJvdGggbGVnYWN5IGFuZCBtb2Rlcm4gV2ViS2l0Lgor
CisgICAgICAgICogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oOgorICAgICAgICAqIGVk
aXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0
aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQREZTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
c2hvd1BvcHVwT3JDcmVhdGVBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpY3Rpb25hcnlMb29rdXA6OnNob3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpoaWRlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1
cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OnJhbmdl
Rm9yRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIE1vdmUgRGljdGlvbmFyeUxvb2t1cCBzdHVmZiBpbnRvIGEgY2xhc3MgZm9y
IGJldHRlciBuYW1lcy4KKworICAgICAgICBNb3ZlIHNob3dQb3B1cCwgaGlkZVBvcHVwLCBhbmQg
YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwIGhlcmUuCisgICAgICAgIHNob3dQb3B1cCBhbmQg
YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwIGJvdGggYm90dGxlbmVjayB0aHJvdWdoCisgICAg
ICAgIGEgc2luZ2xlIGZ1bmN0aW9uLCB3aGVyZSBwcmV2aW91c2x5IHdlIGR1cGxpY2F0ZWQgYWxs
IG9mIHRoZSBjb2RlCisgICAgICAgIGZvciBib3RoIG9mIHRoZW0sIGFuZCBpbiBib3RoIGxlZ2Fj
eSBhbmQgbW9kZXJuIFdlYktpdC4KKworICAgICAgICBzaG93UG9wdXAgYW5kIGFuaW1hdGlvbkNv
bnRyb2xsZXJGb3JQb3B1cCB0YWtlIGEgYmxvY2sgdGhhdCB0aGV5ICptYXkqCisgICAgICAgIGNh
bGwgaWYgd2UgaGF2ZSBzdXBwb3J0IGZvciBvdmVycmlkaW5nIExvb2t1cCdzIGluZGljYXRvciB3
aXRoIFRleHRJbmRpY2F0b3IsCisgICAgICAgIGJlY2F1c2UgdGhlIGluc3RhbGxhdGlvbiBwcm9j
ZXNzIGlzIGRpZmZlcmVudCBwZXIgV2ViS2l0LgorCisgICAgICAgICogcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9z
ZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1cCk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZvckRp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKToKKyAgICAgICAgQWRqdXN0IHRvIHRoZSBuZXcgbmFt
aW5nLgorCiAyMDE1LTA4LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICB3YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDZlYjFjMTI3M2Q2NmRhY2RlMTgwNjg2ZWM4MmIyNDVhODQxZWMwZGMuLjY4MmFjNDk0
NWNhNTcyZjMwMTJhM2Y4NDJjZjJmOTlhNWVmMTEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTUtMDgtMjYgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIEZhY3RvciBvdXQgTG9va3VwIGludm9jYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTUtMDgtMjYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBidWlsZCBhZnRlciByMTg4OTgyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDI0ZWJhZjNlYzg0ZDUwNWM0MjgxZmUxYTRiZWZhMmNiM2ZmYzkzMzkuLmFmMGFk
ZWIyMWZkZTY3MzA5YjgzZTM2NzQ2YmE0NzlmNTc4NTg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxNS0wOC0yNiAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIG91dCBMb29rdXAgaW52b2NhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L0Rp
Y3Rpb25hcnlQb3B1cEluZm8uaDogUmVtb3ZlZC4KKyAgICAgICAgTW92ZSB0byBXZWJDb3JlLgor
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Ol0pOgorICAgICAgICBEaWN0aW9uYXJ5UG9w
dXBJbmZvIGtlZXBzIGEgVGV4dEluZGljYXRvckRhdGEsIG5vdCBhIFRleHRJbmRpY2F0b3IuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJG
b3JEYXRhRGV0ZWN0ZWRMaW5rXSk6CisgICAgICAgIChkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFu
Z2UpOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmltYXRpb25D
b250cm9sbGVyRm9yVGV4dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRpY3Rpb25hcnlMb29rdXBQb3B1cEluZm86
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6d2l0aExpZmV0aW1lOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IF9zaG93RGljdGlvbmFyeUxvb2t1cFBvcHVwOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIE1vdmUgYSBidW5jaCBv
ZiBjb2RlIHRvIFdlYkNvcmUuCisgICAgICAgIEZhY3RvciBzb21lIHRoYXQgaGFzIHRvIHN0YXkg
b3V0IGludG8gX3ByZXBhcmVGb3JEaWN0aW9uYXJ5TG9va3VwLgorCiAyMDE1LTA4LTI2ICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBTYWZhcmkg
bmF2aWdhdGVzIGFmdGVyIGEgY2FuY2VsbGVkIGZvcmNlIGNsaWNrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjg0
NWQ5YzgxMGRlN2Q1MGI1ZmE3ZjM0Yzk5MWNiNDg5OTIwNWU0ZS4uZTg1YjRjYTQzNTZkMjlkZDI2
Zjc0YTEzNzAwODBhM2Y0YjYwOWMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1
LTA4LTI2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBGYWN0b3Igb3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oOiBSZW1v
dmVkLgorICAgICAgICBNb3ZlZCB0byBXZWJDb3JlLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGljdGlv
bmFyeVBvcHVwSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGlj
dGlvbmFyeVBvcHVwSW5mbz46OmRlY29kZSk6CisgICAgICAgIEFkZCBlbmNvZGUvZGVjb2RlcnMg
Zm9yIERpY3Rpb25hcnlQb3B1cEluZm8gbm93IHRoYXQgaXQncyBpbiBXZWJDb3JlLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKCtb
V0tWaWV3IGhpZGVXb3JkRGVmaW5pdGlvbldpbmRvd10pOgorICAgICAgICAoLVtXS1ZpZXcgX2Rp
c21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRl
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bG9va3VwVGV4dEF0TG9jYXRp
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRN
ZW51Q2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JT
ZWxlY3Rpb25JblBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxvb2t1cFRl
eHRBdExvY2F0aW9uKToKKyAgICAgICAgQWRqdXN0IHRvIG5ldyBuYW1lcyBhbmQgbW92ZSBzdHVm
ZiB0byBXZWJDb3JlLgorCiAyMDE1LTA4LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCBkdWUgdG8gYW5pbWF0aW9uRGlkRW5kIGNh
bGxlZCBvbiBkZWFsbG9jYXRlZCBSZW1vdGVMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWFhNDI2ZDQzODA5
OWU3ODEyZGNiYmY5ODRhNjU1Y2Q3MmZjOTVlZS4uZjNhYTIxYWJiY2VmY2I3ZDZlMjRhZTE2OTFh
MTZmMDE2NjE3OTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOCw2ICsxMTM4LDcgQEAKIAkJMkQ1MDAyRjgxQjU2RDc4
MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ1MDAyRjcxQjU2RDc4MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwICov
OyB9OwogCQkyRDUwMDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGOTFCNTZE
Nzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTJENTAwMkZDMUI1NkQ3
OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxp
dGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTJENTY0NkIwMUI4Rjg0OTMwMDNDNDk5NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU2NDZBRjFCOEY4NDkz
MDAzQzQ5OTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENThEODU1MUExNUY2NUYwMEE1RjcyNiAvKiBE
YXRhRGV0ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENThEODU2MUExNUY2
NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OEQ4NTQxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRl
Y3Rpb24ubW0gKi87IH07CiAJCTJENTlGMUJGMUEwMDQ0QzYwMDFGM0QyOSAvKiBEYXRhRGV0ZWN0
b3JzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDU5RjFCRTFBMDA0NEM2MDAxRjNEMjkgLyogRGF0YURldGVjdG9yc1NQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzQ5LDYgKzgzNTAsNyBA
QAogCQkyRDUwMDJGNzFCNTZENzgxMDAyMEFBRjcgLyogRE9NUGF0aC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01QYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ1MDAyRjkxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aFV0aWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENTAwMkZBMUI1NkQ3OTkwMDIwQUFGNyAv
KiBQYXRoVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGhV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ1NjQ2QUYxQjhGODQ5
MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGljdGlvbmFyeVBvcHVwSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENThEODU0MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVj
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1OUYxQkUxQTAwNDRDNjAw
MUYzRDI5IC8qIERhdGFEZXRlY3RvcnNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YURldGVjdG9yc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc5NzUsNiArMTc5NzcsNyBAQAogCQkJCUNFQ0FERkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0
YXRpb25BbHRlcm5hdGl2ZS5oICovLAogCQkJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25Db21tYW5kLmNwcCAqLywKIAkJCQlDRUNBREZDNTE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQ29tbWFuZC5oICovLAorCQkJCTJENTY0NkFGMUI4Rjg0OTMwMDNDNDk5NCAvKiBE
aWN0aW9uYXJ5UG9wdXBJbmZvLmggKi8sCiAJCQkJOTMzMDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8q
IEVkaXRBY3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5NDA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENv
bW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDk1MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFu
ZC5oICovLApAQCAtMjQzNzEsNiArMjQzNzQsNyBAQAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2
MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkUxMzEz
MzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgwRTZEMDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMkQ1NjQ2QjAxQjhGODQ5MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQb3B1cElu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NP
TVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQjNFMEM0RUE5MUUwMDgzMjg1
RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0RpY3Rpb25hcnlQb3B1cEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzQ0MWZlZjU4YmUyYjBiMTg4Zjdk
NTJmYmE3YmM1NGNiNzg4M2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBEaWN0aW9uYXJ5UG9wdXBJbmZvX2gKKyNkZWZpbmUgRGljdGlvbmFyeVBv
cHVwSW5mb19oCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiVGV4dEluZGlj
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBOU0F0dHJp
YnV0ZWRTdHJpbmc7CitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbyB7CisgICAgRmxvYXRQb2ludCBvcmln
aW47CisgICAgVGV4dEluZGljYXRvckRhdGEgdGV4dEluZGljYXRvcjsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBvcHRpb25zOworICAgIFJldGFpblB0
cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmc7CisjZW5kaWYKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERpY3Rpb25hcnlQb3B1cEluZm9faApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCmluZGV4IGY2
MjI4ZjVkNzhlNDQzZWIzOGM0MzQwNWRhNTEwNjgxY2ExN2M5NWIuLmUxNjViZDNmNWM3M2FlNmYx
Y2RkMDNkMjdlOGYxMDAwMWY0YzEzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9EaWN0aW9uYXJ5TG9va3VwLmgKQEAgLTI4LDIwICsyOCw0MSBAQAogCiAjaWYgUExBVEZPUk0o
TUFDKQogCisjaW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgorI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAotT0JKQ19DTEFTUyBOU0RpY3Rp
b25hcnk7CitPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU1ZpZXc7CiBPQkpDX0NM
QVNTIFBERlNlbGVjdGlvbjsKIAorLy8gVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGluIEludGVybmFs
cy5jcHAsIHNvIHdlIGNhbid0IHVzZSBPYmpDIG91dHJpZ2h0LgorI2lmIGRlZmluZWQoX19PQkpD
X18pCisjaW5jbHVkZSAiTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIgor
I2RlZmluZSBQbGF0Zm9ybUFuaW1hdGlvbkNvbnRyb2xsZXIgaWQ8TlNJbW1lZGlhdGVBY3Rpb25B
bmltYXRpb25Db250cm9sbGVyPgorI2Vsc2UKKyNkZWZpbmUgUGxhdGZvcm1BbmltYXRpb25Db250
cm9sbGVyIHZvaWQqCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIaXRU
ZXN0UmVzdWx0OwogY2xhc3MgUmFuZ2U7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCi1XRUJD
T1JFX0VYUE9SVCBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBGb3JT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMp
OwotV0VCQ09SRV9FWFBPUlQgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9v
a3VwQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBOU0RpY3Rpb25hcnkgKipv
cHRpb25zKTsKLVdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkaWN0aW9uYXJ5TG9va3VwRm9yUERG
U2VsZWN0aW9uKFBERlNlbGVjdGlvbiAqLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKK2NsYXNz
IERpY3Rpb25hcnlMb29rdXAgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQ
YXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQm
LCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNT
dHJpbmcgKnN0cmluZ0ZvclBERlNlbGVjdGlvbihQREZTZWxlY3Rpb24gKiwgTlNEaWN0aW9uYXJ5
ICoqb3B0aW9ucyk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIG1vdmUvdW5pZnkgZGljdGlvbmFy
eVBvcHVwSW5mb0ZvclJhbmdlIGhlcmUgdG9vLgorCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHZvaWQgc2hvd1BvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBOU1ZpZXcgKiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlv
bkNhbGxiYWNrKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBoaWRlUG9wdXAoKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybUFuaW1hdGlvbkNvbnRyb2xsZXIg
YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBO
U1ZpZXcgKiwgc3RkOjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRv
ckluc3RhbGxhdGlvbkNhbGxiYWNrKTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXgg
ZWQwNDc5ZTRiMmJiOWI3ZWJkZTJhMDFkYmY3MWVlNjY2MjYzYmM5Mi4uNDdmMzNiYmQ0ODUxZTFj
ZjA0YzlhNzU0OTA1ZDIyOGE2YzcyZjFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJIVE1M
Q29udmVydGVyLmgiCiAjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJMb29rdXBT
UEkuaCIKKyNpbXBvcnQgIk5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCIK
ICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJPYmpl
Y3QuaCIKQEAgLTQ3LDYgKzQ4LDggQEAKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KICNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KIAorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwg
TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IsIE5TU3RyaW5nICopCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgc2VsZWN0aW9uQ29udGFpbnNQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24pCkBAIC02MSw3ICs2NCw3IEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRh
aW5zUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmlzCiAg
ICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2UtPmNvbnRhaW5zKHBvc2l0aW9uKTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1Bhc3NS
ZWZQdHI8UmFuZ2U+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAg
ICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKTsKICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpCkBAIC04Nyw3ICs5MCw3IEBAIFBhc3NSZWZQ
dHI8UmFuZ2U+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzCiAgICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2UucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1
bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgTlNEaWN0aW9uYXJ5ICoqb3B0
aW9ucykKK1Bhc3NSZWZQdHI8UmFuZ2U+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQsIE5TRGljdGlvbmFyeSAq
Km9wdGlvbnMpCiB7CiAgICAgTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCk7CiAgICAgaWYgKCFub2RlKQpAQCAtMTEzLDcgKzExNiw3IEBAIFBhc3NSZWZQdHI8
UmFuZ2U+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRU
ZXN0UmVzdWx0JiBoCiAgICAgLy8gSWYgd2UgaGl0IHRoZSBzZWxlY3Rpb24sIHVzZSB0aGF0IGlu
c3RlYWQgb2YgbGV0dGluZyBMb29rdXAgZGVjaWRlIHRoZSByYW5nZS4KICAgICBWaXNpYmxlU2Vs
ZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rp
b25Db250YWluc1Bvc2l0aW9uKHBvc2l0aW9uLCBzZWxlY3Rpb24pKQotICAgICAgICByZXR1cm4g
cmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7
CisgICAgICAgIHJldHVybiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihzZWxl
Y3Rpb24sIG9wdGlvbnMpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BY2NvdW50
aW5nRm9yTGluZVJ1bGVzID0gVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbik7CiAgICAgc2VsZWN0
aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFu
dWxhcml0eSk7CkBAIC0xNTAsNyArMTUzLDcgQEAgc3RhdGljIHZvaWQgZXhwYW5kU2VsZWN0aW9u
QnlDaGFyYWN0ZXJzKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBOU0ludGVnZXIgbnVtYmUKICAg
ICBjaGFyYWN0ZXJzQWRkZWRBZnRlckVuZCA9IHNlbGVjdGlvbi5zdHJpbmcubGVuZ3RoIC0gb3Jp
Z2luYWxMZW5ndGggLSBjaGFyYWN0ZXJzQWRkZWRCZWZvcmVTdGFydDsKIH0KIAotTlNTdHJpbmcg
KmRpY3Rpb25hcnlMb29rdXBGb3JQREZTZWxlY3Rpb24oUERGU2VsZWN0aW9uICpzZWxlY3Rpb24s
IE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCitOU1N0cmluZyAqRGljdGlvbmFyeUxvb2t1cDo6c3Ry
aW5nRm9yUERGU2VsZWN0aW9uKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBOU0RpY3Rpb25hcnkg
KipvcHRpb25zKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGlzIG5vIGNo
YXJhY3RlciBhdCB0aGUgcG9pbnQuCiAgICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVjdGlvbi5z
dHJpbmcubGVuZ3RoKQpAQCAtMTg1LDYgKzE4OCw2OSBAQCBOU1N0cmluZyAqZGljdGlvbmFyeUxv
b2t1cEZvclBERlNlbGVjdGlvbihQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5
CiAgICAgcmV0dXJuIHNlbGVjdGlvbi5zdHJpbmc7CiB9CiAKK3N0YXRpYyBpZDxOU0ltbWVkaWF0
ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+IHNob3dQb3B1cE9yQ3JlYXRlQW5pbWF0aW9uQ29u
dHJvbGxlcihib29sIGNyZWF0ZUFuaW1hdGlvbkNvbnRyb2xsZXIsIGNvbnN0IERpY3Rpb25hcnlQ
b3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8sIE5TVmlldyAqdmlldywgc3RkOjpmdW5jdGlv
bjx2b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNr
KQoreworICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtdXRh
YmxlT3B0aW9ucyA9IGFkb3B0TlMoWyhOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UG9wdXBJbmZv
Lm9wdGlvbnMuZ2V0KCkgbXV0YWJsZUNvcHldKTsKKworICAgIGF1dG8gdGV4dEluZGljYXRvciA9
IFRleHRJbmRpY2F0b3I6OmNyZWF0ZShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3Ip
OworCisgICAgaWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRv
cigpICYmIHRleHRJbmRpY2F0b3IuZ2V0KCkuY29udGVudEltYWdlKCkpIHsKKyAgICAgICAgdGV4
dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAg
ICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlv
bkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCldOworCisgICAgICAgIGlmIChbZ2V0TFVMb29r
dXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNo
b3dEZWZpbml0aW9uRm9yVGVybTpyZWxhdGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9uczopXSkgewor
ICAgICAgICAgICAgRmxvYXRSZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyA9IHRl
eHRJbmRpY2F0b3IuZ2V0KCkudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcygpWzBd
OworICAgICAgICAgICAgZmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzLm1vdmVCeSh0ZXh0
SW5kaWNhdG9yLmdldCgpLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKS5s
b2NhdGlvbigpKTsKKyAgICAgICAgICAgIGlmIChjcmVhdGVBbmltYXRpb25Db250cm9sbGVyKSB7
CisjaWYgIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1
cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRl
ZFN0cmluZy5nZXQoKSByZWxhdGl2ZVRvUmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0
ZXMgb2ZWaWV3OnZpZXcgb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07CisjZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9y
VGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmVsYXRpdmVU
b1JlY3Q6Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzIG9mVmlldzp2aWV3IG9wdGlvbnM6
bXV0YWJsZU9wdGlvbnMuZ2V0KCldOworICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBv
cHVwSW5mby5vcmlnaW47CisKKyAgICAvLyBDb252ZXJ0IHRvIHNjcmVlbiBjb29yZGluYXRlcy4K
KyAgICB0ZXh0QmFzZWxpbmVPcmlnaW4gPSBbdmlldyBjb252ZXJ0UG9pbnQ6dGV4dEJhc2VsaW5l
T3JpZ2luIHRvVmlldzpuaWxdOworICAgIHRleHRCYXNlbGluZU9yaWdpbiA9IFt2aWV3LndpbmRv
dyBjb252ZXJ0UmVjdFRvU2NyZWVuOk5TTWFrZVJlY3QodGV4dEJhc2VsaW5lT3JpZ2luLngsIHRl
eHRCYXNlbGluZU9yaWdpbi55LCAwLCAwKV0ub3JpZ2luOworCisgICAgaWYgKGNyZWF0ZUFuaW1h
dGlvbkNvbnRyb2xsZXIpIHsKKyNpZiAgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEwMDAKKyAgICAgICAgcmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFz
cygpIGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8u
YXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRp
b25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKKyNlbHNlCisgICAgICAgIHJldHVybiBuaWw7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBz
aG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5n
LmdldCgpIGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlv
bnMuZ2V0KCldOworICAgIHJldHVybiBuaWw7Cit9CisKK3ZvaWQgRGljdGlvbmFyeUxvb2t1cDo6
c2hvd1BvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8s
IE5TVmlldyAqdmlldywgc3RkOjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dElu
ZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKQoreworICAgIHNob3dQb3B1cE9yQ3JlYXRlQW5p
bWF0aW9uQ29udHJvbGxlcihmYWxzZSwgZGljdGlvbmFyeVBvcHVwSW5mbywgdmlldywgdGV4dElu
ZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKTsKK30KKwordm9pZCBEaWN0aW9uYXJ5TG9va3Vw
OjpoaWRlUG9wdXAoKQoreworICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xh
c3MoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVD
bGFzcygpIGhpZGVEZWZpbml0aW9uXTsKK30KKworaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyPiBEaWN0aW9uYXJ5TG9va3VwOjphbmltYXRpb25Db250cm9sbGVyRm9yUG9w
dXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbywgTlNWaWV3
ICp2aWV3LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoVGV4dEluZGljYXRvciYpPiB0ZXh0SW5kaWNhdG9y
SW5zdGFsbGF0aW9uQ2FsbGJhY2spCit7CisgICAgcmV0dXJuIHNob3dQb3B1cE9yQ3JlYXRlQW5p
bWF0aW9uQ29udHJvbGxlcih0cnVlLCBkaWN0aW9uYXJ5UG9wdXBJbmZvLCB2aWV3LCB0ZXh0SW5k
aWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJhY2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVu
dEhhbmRsZXJNYWMubW0KaW5kZXggMDA1NTUzMTYxZTQxMzAzMDkyZTY0NTg1NWYwMmMyM2RmMDVh
MDM5MS4uMTI2OWRhNjQyYWE1NTY1NDY4MGQwNWNhNDNhOTAwMTNhYTM5YTlhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtMTA3OSw3ICsxMDc5LDcg
QEAgVmlzaWJsZVNlbGVjdGlvbiBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhp
dFRlc3RSZXN1bHRCYXNlZE9uTG9va3VwKGMKICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rp
b24oKTsKIAogICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKLSAgICBpZiAoUmVmUHRy
PFJhbmdlPiByYW5nZSA9IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChy
ZXN1bHQsICZvcHRpb25zKSkKKyAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IERpY3Rpb25h
cnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KHJlc3VsdCwgJm9wdGlvbnMpKQogICAgICAg
ICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpOwogCiAgICAgcmV0dXJuIFZpc2libGVT
ZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0YmFjZDU1
ZmVlM2JlMTk1ZmEzMDc0ZjRiMzcwMzQyZTE3YjRjZjk5Li4yNWQ1ZjY5YWIxNTdkMDdjNTE3MmU4
YTI2YzBjODBjNWI1NWFhN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC0xMjY4LDcgKzEyNjgsNyBAQCBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6cmFuZ2VGb3JEaWN0
aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihpbnQgeCwgaW50IHksIEV4Y2VwdAogICAgIAogICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gZG9jdW1lbnQtPmZyYW1lKCktPm1haW5GcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpKTsKICAgICBOU0Rp
Y3Rpb25hcnkgKm9wdGlvbnMgPSBudWxscHRyOwotICAgIHJldHVybiByYW5nZUZvckRpY3Rpb25h
cnlMb29rdXBBdEhpdFRlc3RSZXN1bHQocmVzdWx0LCAmb3B0aW9ucyk7CisgICAgcmV0dXJuIERp
Y3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KHJlc3VsdCwgJm9wdGlvbnMpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oeCk7CiAgICAgVU5VU0VEX1BBUkFNKHkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWYzOGI2
NTY3Y2Q1NTM3MmEyMDFiYWNjNWZjNDRlM2VlYzEyMGYwNC4uOWUwNDZkYjliZWQ3ODkzNTIxMTFi
NzNjOTNjMTg5YzU1MTUzY2M3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDEsNyArMTAxLDYgQEAKIAkJMkQyNTM5NjcxOENFODVD
MjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUzOTY1MThDRTg1QzIw
MDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0gKi87IH07CiAJ
CTJERDYzMkMyMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENjMy
QzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggKi87
IH07CiAJCTJERDYzMkMzMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
ci5tbSAqLzsgfTsKLQkJMkRGMDY0QTkxQTJERDUzQzAwREJCMzU0IC8qIERpY3Rpb25hcnlQb3B1
cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
RjA2NEE4MUEyREQ1M0MwMERCQjM1NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggKi87IH07CiAJ
CTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkUyRkUzMTRFNDgxODIwMDdD
Q0ExOCAvKiBXZWJOb3RpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzMTJFMkZFNjE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZp
Y2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEyRTJGRTQxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSAqLzsgfTsKIAkJ
MzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFODE0RTQ4
MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTU2Myw3
ICs1NjIsNiBAQAogCQkyRDgxREFCMzAzRUIwQjJEMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRl
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9
IFdlYkZvcm1EZWxlZ2F0ZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJMkRENjMyQzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkyREYwNjRBODFBMkRENTNDMDBEQkIzNTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0aW9uYXJ5UG9wdXBJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMkUyRkUzMTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJO
b3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZp
Y2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMkUyRkU0MTRFNDgxODIw
MDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMkUyRkU4MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25JbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMyMSw3ICsxMzE5LDYgQEAK
IAkJCQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRNTCAqLywKIAkJCQk1MUU5NEMwNzA2
QzAyQ0EzMDBBOUIwOUUgLyogUERGICovLAogCQkJCUExMEMxRDc5MTgyMDMwMTkwMDM2ODgzQSAv
KiBpb3MgKi8sCi0JCQkJMkRGMDY0QTgxQTJERDUzQzAwREJCMzU0IC8qIERpY3Rpb25hcnlQb3B1
cEluZm8uaCAqLywKIAkJCQk4MzczNDM1QTA2MjRFRTBEMDBGM0IyODkgLyogV2ViQXJjaGl2ZS5o
ICovLAogCQkJCTgzNzM0MzVCMDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLm1tICovLAog
CQkJCTQ0QkI4QjEzMTI0MUEwMjIwMDFFM0EyMiAvKiBXZWJBcmNoaXZlSW50ZXJuYWwuaCAqLywK
QEAgLTE4NDAsNyArMTgzNyw2IEBACiAJCQkJQTEwQzFEOEMxODIwMzA1RTAwMzY4ODNBIC8qIFdl
YlBERlZpZXdJUGhvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDZEMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJLaXRFcnJvcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhCRkNF
ODE1NTMxMjI0MDA1QUZCMjUgLyogV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkyREYwNjRBOTFBMkRENTNDMDBEQkIzNTQgLyogRGljdGlvbmFyeVBvcHVwSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMUQwODI0QkYwMTAwOERGMDM4IC8qIFdlYktp
dExvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDFFMDgyNEJGMDEwMDhERjAzOCAv
KiBXZWJLaXROU1N0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjU4OTQwRURD
Q0YxNTAwOEQ4ODNEIC8qIFdlYktpdFBsdWdpbkFnZW50LmRlZnMgaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvRGljdGlvbmFyeVBvcHVwSW5mby5o
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNThjNjJjYjE0OTIxZWIyOWFiNmU3MDhjOWZmMWJi
NjIwZGZkNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFBMQVRGT1JNKE1BQykKLQot
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
Ci0KLUBjbGFzcyBOU0F0dHJpYnV0ZWRTdHJpbmc7Ci1AY2xhc3MgTlNEaWN0aW9uYXJ5OwotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBUZXh0SW5kaWNhdG9yOwotfTsKLQotc3RydWN0IERp
Y3Rpb25hcnlQb3B1cEluZm8gewotICAgIE5TUG9pbnQgb3JpZ2luOwotICAgIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk+IG9wdGlvbnM7Ci0gICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4g
YXR0cmlidXRlZFN0cmluZzsKLSAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4gdGV4
dEluZGljYXRvcjsKLX07Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBhOGRiOGUwMTA0ZDE3Zjc5ZWRjOTgzYjQ5
Mzg2NTdjYzhjNjczZjQ0Li4zMDk4MGQzMGFhNjdlMmRlYjk4MjFlOTdkMDA3MjI1MGU1NWJkMmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM0LDcgKzM0
LDYgQEAKICNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgotI2ltcG9ydCAiRGljdGlv
bmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiV2ViQ2xp
cFZpZXcuaCIKICNpbXBvcnQgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCkBAIC04Miw2ICs4MSw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRl
eHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3Vt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CkBAIC01Njg5LDcgKzU2ODksOCBAQCBz
dGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICBEaWN0
aW9uYXJ5UG9wdXBJbmZvIGluZm87CiAgICAgaW5mby5hdHRyaWJ1dGVkU3RyaW5nID0gYXR0clN0
cmluZzsKICAgICBpbmZvLm9yaWdpbiA9IGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2lu
ZG93KGVuY2xvc2luZ0ludFJlY3QocmVjdCkpLmxvY2F0aW9uKCk7Ci0gICAgaW5mby50ZXh0SW5k
aWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoKmNvcmVG
cmFtZSwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdo
bGlnaHQsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9z
c2ZhZGUpOworICAgIGlmIChhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoU2VsZWN0aW9uSW5GcmFtZSgqY29yZUZyYW1lLCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5j
bHVkZVNuYXBzaG90V2l0aFNlbGVjdGlvbkhpZ2hsaWdodCwgVGV4dEluZGljYXRvclByZXNlbnRh
dGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFkZSkpCisgICAgICAgIGluZm8udGV4dElu
ZGljYXRvciA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICAgICBbW3NlbGYgX3dlYlZpZXddIF9z
aG93RGljdGlvbmFyeUxvb2t1cFBvcHVwOmluZm9dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5k
ZXggMTQ3NGIzNTkzNTA3MTliYTQyYTQ3YmU3YWZlYzM5NGU3MDQwY2YxMy4uOGZmNWVkMTU4NWJm
MDc3M2FlZmJiNWRmYmI5NGYzMWJiZmUwYWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMzAs
NyArMzAsNiBAQAogI2ltcG9ydCAiRE9NRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01O
b2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkRp
Y3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIldlYkVsZW1lbnREaWN0aW9uYXJ5LmgiCiAj
aW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJIVE1MVmlldy5oIgpAQCAt
NDU0LDYgKzQ1Myw3IEBAIHN0YXRpYyBJbnRSZWN0IGVsZW1lbnRCb3VuZGluZ0JveEluV2luZG93
Q29vcmRpbmF0ZXNGcm9tTm9kZShOb2RlKiBub2RlKQogICAgIGlmICghbGlua1JhbmdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9y
ID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpsaW5rUmFuZ2UsIFRleHRJbmRpY2F0
b3JPcHRpb25EZWZhdWx0LCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6RmFk
ZUluKTsKKyAgICBpbmRpY2F0b3ItPmRhdGEoKS50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzID0gW193ZWJWaWV3IF9jb252ZXJ0UmVjdEZyb21Sb290VmlldzppbmRpY2F0b3It
PnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKV07CiAKICAgICBfY3VycmVu
dEFjdGlvbkNvbnRleHQgPSBbYWN0aW9uQ29udGV4dCBjb250ZXh0Rm9yVmlldzpfd2ViVmlldyBh
bHRNb2RlOllFUyBpbnRlcmFjdGlvblN0YXJ0ZWRIYW5kbGVyOl4oKSB7CiAgICAgfSBpbnRlcmFj
dGlvbkNoYW5nZWRIYW5kbGVyOl4oKSB7CkBAIC01MTAsNyArNTEwLDkgQEAgc3RhdGljIERpY3Rp
b25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lKiBmcmFtZSwg
UmFuZ2UmIHJhbmcKICAgICB9XTsKIAogICAgIHBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nID0g
c2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nLmdldCgpOwotICAgIHBvcHVwSW5mby50ZXh0SW5kaWNh
dG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0SW5kaWNhdG9y
T3B0aW9uRGVmYXVsdCwgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CisKKyAgICBpZiAoYXV0byB0
ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKHJhbmdlLCBUZXh0
SW5kaWNhdG9yT3B0aW9uRGVmYXVsdCwgcHJlc2VudGF0aW9uVHJhbnNpdGlvbikpCisgICAgICAg
IHBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwogICAgIHJl
dHVybiBwb3B1cEluZm87CiB9CiAKQEAgLTUyOCw3ICs1MzAsNyBAQCBzdGF0aWMgRGljdGlvbmFy
eVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUqIGZyYW1lLCBSYW5n
ZSYgcmFuZwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25z
ID0gbmlsOwotICAgIFJlZlB0cjxSYW5nZT4gZGljdGlvbmFyeVJhbmdlID0gcmFuZ2VGb3JEaWN0
aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVzdWx0KF9oaXRUZXN0UmVzdWx0LCAmb3B0aW9ucyk7Cisg
ICAgUmVmUHRyPFJhbmdlPiBkaWN0aW9uYXJ5UmFuZ2UgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUF0SGl0VGVzdFJlc3VsdChfaGl0VGVzdFJlc3VsdCwgJm9wdGlvbnMpOwogICAgIGlmICghZGlj
dGlvbmFyeVJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggOGYxNWRiNTU4M2VlNWQ4ZmQxZmI4YTBkODRjNzNmZmFiMWVlOWVj
MC4uYzA4OTg0YmI4Mzg2YzA3NTMzZmE5MDM0ZWU0NTIzYjczMTdlNjAyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzUsNyArMzUsNiBAQAogI2ltcG9ydCAiRE9NRG9j
dW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCi0jaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1w
b3J0ICJTdG9yYWdlVGhyZWFkLmgiCiAjaW1wb3J0ICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCIKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oIgpAQCAtMTIzLDYgKzEy
Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFn
Q29udHJvbGxlci5oPgpAQCAtMjk1LDcgKzI5NSw2IEBACiAKICNpZiBQTEFURk9STShNQUMpCiBT
T0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3VwLCBMVU5vdGlmaWNhdGlvblBvcG92ZXJX
aWxsQ2xvc2UsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3Vw
LCBMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvciwgTlNTdHJpbmcgKikKICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTg1NTEsMjkgKzg1NTAsMTQgQEAgYm9vbCBM
YXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogICAgIGlmICghZGljdGlvbmFyeVBv
cHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYg
KGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYmIGNhbkxv
YWRMVU5vdGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2UoKSAmJiBkaWN0aW9uYXJ5UG9wdXBJbmZv
LnRleHRJbmRpY2F0b3IpIHsKLSAgICAgICAgaWYgKCFfcHJpdmF0ZS0+aGFzSW5pdGlhbGl6ZWRM
b29rdXBPYnNlcnZlcikgewotICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfZGljdGlvbmFy
eUxvb2t1cFBvcG92ZXJXaWxsQ2xvc2U6KSBuYW1lOmdldExVTm90aWZpY2F0aW9uUG9wb3Zlcldp
bGxDbG9zZSgpIG9iamVjdDpuaWxdOwotICAgICAgICAgICAgX3ByaXZhdGUtPmhhc0luaXRpYWxp
emVkTG9va3VwT2JzZXJ2ZXIgPSBZRVM7Ci0gICAgICAgIH0KLQotICAgICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlRGljdGlvbmFyeT4gbXV0YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFtkaWN0aW9uYXJ5
UG9wdXBJbmZvLm9wdGlvbnMgbXV0YWJsZUNvcHldKTsKLSAgICAgICAgaWYgKCFtdXRhYmxlT3B0
aW9ucykKLSAgICAgICAgICAgIG11dGFibGVPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9iamVj
dDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigp
XTsKLSAgICAgICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6KmRpY3Rpb25hcnlQb3B1cEluZm8u
dGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lOjpQ
ZXJtYW5lbnRdOwotCi0gICAgICAgIGlmIChbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xh
c3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xs
ZXJGb3JUZXJtOnJlbGF0aXZlVG9SZWN0Om9mVmlldzpvcHRpb25zOildKSB7Ci0gICAgICAgICAg
ICBGbG9hdFJlY3QgZmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzID0gZGljdGlvbmFyeVBv
cHVwSW5mby50ZXh0SW5kaWNhdG9yLT50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVz
KClbMF07Ci0gICAgICAgICAgICBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMubW92ZUJ5
KGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci0+dGV4dEJvdW5kaW5nUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcygpLmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgcmV0dXJuIFtnZXRM
VUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxvb2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJG
b3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5nZXQoKSByZWxhdGl2
ZVRvUmVjdDpbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6Zmlyc3RUZXh0UmVjdEluVmll
d0Nvb3JkaW5hdGVzXSBvZlZpZXc6c2VsZiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsK
LSAgICAgICAgfQotICAgIH0KKyAgICBbc2VsZiBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBd
OwogCi0gICAgLy8gQ29udmVydCB0byBzY3JlZW4gY29vcmRpbmF0ZXMuCi0gICAgTlNQb2ludCB0
ZXh0QmFzZWxpbmVPcmlnaW4gPSBbc2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpOU01h
a2VSZWN0KGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luLngsIGRpY3Rpb25hcnlQb3B1cEluZm8u
b3JpZ2luLnksIDAsIDApXS5vcmlnaW47CisgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBhZGp1c3Rl
ZFBvcHVwSW5mbyA9IGRpY3Rpb25hcnlQb3B1cEluZm87CisgICAgYWRqdXN0ZWRQb3B1cEluZm8u
dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gW3Nl
bGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmFkanVzdGVkUG9wdXBJbmZvLnRleHRJbmRpY2F0
b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CiAKLSAgICByZXR1cm4g
W2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJv
bGxlckZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0
TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6ZGljdGlvbmFyeVBvcHVwSW5mby5v
cHRpb25zLmdldCgpXTsKKyAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Q29udHJvbGxlcj4pRGljdGlvbmFyeUxvb2t1cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVw
KGFkanVzdGVkUG9wdXBJbmZvLCBzZWxmLCBbc2VsZl0oVGV4dEluZGljYXRvciYgdGV4dEluZGlj
YXRvcikgeworICAgICAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRvcjp0ZXh0SW5kaWNhdG9yIHdp
dGhMaWZldGltZTpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07CisgICAg
fSk7CiB9CiAjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEw
MDAKIApAQCAtODU5Nyw3ICs4NTgxLDcgQEAgYm9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1
c2hMYXllcnMoKQogICAgIGlmICghX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cpCiAgICAg
ICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
SW5kaWNhdG9yV2luZG93PihzZWxmKTsKIAotICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5X
aW5kb3dDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZy
b21Sb290Vmlldzp0ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoKV0gdG9WaWV3Om5pbF07CisgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91bmRp
bmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF07CiAgICAgTlNSZWN0IHRl
eHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW3NlbGYud2luZG93IGNvbnZlcnRS
ZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXNdOwogICAgIF9w
cml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93LT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0
b3IsIE5TUmVjdFRvQ0dSZWN0KHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzKSwg
bGlmZXRpbWUpOwogfQpAQCAtODYxNSwzNSArODU5OSwzMCBAQCBib29sIExheWVyRmx1c2hDb250
cm9sbGVyOjpmbHVzaExheWVycygpCiAgICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2lu
ZG93LT5zZXRBbmltYXRpb25Qcm9ncmVzcyhwcm9ncmVzcyk7CiB9CiAKLS0gKHZvaWQpX3Nob3dE
aWN0aW9uYXJ5TG9va3VwUG9wdXA6KGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25h
cnlQb3B1cEluZm8KKy0gKHZvaWQpX3ByZXBhcmVGb3JEaWN0aW9uYXJ5TG9va3VwCiB7Ci0gICAg
aWYgKCFkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcpCisgICAgaWYgKF9wcml2
YXRlLT5oYXNJbml0aWFsaXplZExvb2t1cE9ic2VydmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoY2FuTG9hZExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCkgJiYg
Y2FuTG9hZExVTm90aWZpY2F0aW9uUG9wb3ZlcldpbGxDbG9zZSgpICYmIGRpY3Rpb25hcnlQb3B1
cEluZm8udGV4dEluZGljYXRvcikgewotICAgICAgICBpZiAoIV9wcml2YXRlLT5oYXNJbml0aWFs
aXplZExvb2t1cE9ic2VydmVyKSB7Ci0gICAgICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9kaWN0
aW9uYXJ5TG9va3VwUG9wb3ZlcldpbGxDbG9zZTopIG5hbWU6Z2V0TFVOb3RpZmljYXRpb25Qb3Bv
dmVyV2lsbENsb3NlKCkgb2JqZWN0Om5pbF07Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+aGFzSW5p
dGlhbGl6ZWRMb29rdXBPYnNlcnZlciA9IFlFUzsKLSAgICAgICAgfQorICAgIF9wcml2YXRlLT5o
YXNJbml0aWFsaXplZExvb2t1cE9ic2VydmVyID0gWUVTOwogCi0gICAgICAgIFJldGFpblB0cjxO
U011dGFibGVEaWN0aW9uYXJ5PiBtdXRhYmxlT3B0aW9ucyA9IGFkb3B0TlMoW2RpY3Rpb25hcnlQ
b3B1cEluZm8ub3B0aW9ucyBtdXRhYmxlQ29weV0pOwotICAgICAgICBpZiAoIW11dGFibGVPcHRp
b25zKQotICAgICAgICAgICAgbXV0YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwotICAgICAgICBbbXV0YWJsZU9wdGlvbnMgc2V0T2JqZWN0
OkBZRVMgZm9yS2V5OmdldExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCld
OwotICAgICAgICBbc2VsZiBfc2V0VGV4dEluZGljYXRvcjoqZGljdGlvbmFyeVBvcHVwSW5mby50
ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWU6OlBl
cm1hbmVudF07CisgICAgaWYgKGNhbkxvYWRMVU5vdGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2Uo
KSkKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfZGljdGlvbmFyeUxvb2t1cFBvcG92ZXJXaWxs
Q2xvc2U6KSBuYW1lOmdldExVTm90aWZpY2F0aW9uUG9wb3ZlcldpbGxDbG9zZSgpIG9iamVjdDpu
aWxdOworfQogCi0gICAgICAgIGlmIChbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3Mo
KSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNob3dEZWZpbml0aW9uRm9yVGVybTpyZWxh
dGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9uczopXSkgewotICAgICAgICAgICAgRmxvYXRSZWN0IGZp
cnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyA9IGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dElu
ZGljYXRvci0+dGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcygpWzBdOwotICAgICAg
ICAgICAgZmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzLm1vdmVCeShkaWN0aW9uYXJ5UG9w
dXBJbmZvLnRleHRJbmRpY2F0b3ItPnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMoKS5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1
bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJp
YnV0ZWRTdHJpbmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJv
b3RWaWV3OmZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlc10gb2ZWaWV3OnNlbGYgb3B0aW9u
czptdXRhYmxlT3B0aW9ucy5nZXQoKV07Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICB9CistICh2b2lkKV9zaG93RGljdGlvbmFyeUxvb2t1cFBvcHVwOihjb25zdCBEaWN0aW9u
YXJ5UG9wdXBJbmZvJilkaWN0aW9uYXJ5UG9wdXBJbmZvCit7CisgICAgaWYgKCFkaWN0aW9uYXJ5
UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcpCisgICAgICAgIHJldHVybjsKIAotICAgIC8vIENv
bnZlcnQgdG8gc2NyZWVuIGNvb3JkaW5hdGVzLgotICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3Jp
Z2luID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46TlNNYWtlUmVjdChkaWN0aW9u
YXJ5UG9wdXBJbmZvLm9yaWdpbi54LCBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbi55LCAwLCAw
KV0ub3JpZ2luOworICAgIFtzZWxmIF9wcmVwYXJlRm9yRGljdGlvbmFyeUxvb2t1cF07CiAKLSAg
ICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRl
cm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0TG9jYXRpb246
dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6ZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zLmdl
dCgpXTsKKyAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGFkanVzdGVkUG9wdXBJbmZvID0gZGljdGlv
bmFyeVBvcHVwSW5mbzsKKyAgICBhZGp1c3RlZFBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRC
b3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBbc2VsZiBfY29udmVydFJlY3RGcm9t
Um9vdFZpZXc6YWRqdXN0ZWRQb3B1cEluZm8udGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzXTsKKworICAgIERpY3Rpb25hcnlMb29rdXA6OnNob3dQb3B1
cChhZGp1c3RlZFBvcHVwSW5mbywgc2VsZiwgW3NlbGZdKFRleHRJbmRpY2F0b3ImIHRleHRJbmRp
Y2F0b3IpIHsKKyAgICAgICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6dGV4dEluZGljYXRvciB3
aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lOjpQZXJtYW5lbnRdOworICAg
IH0pOwogfQogCiAtICh2b2lkKV9kaWN0aW9uYXJ5TG9va3VwUG9wb3ZlcldpbGxDbG9zZTooTlNO
b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCmluZGV4IDIyMGVjZTdkYjVkMzZhMTExMjBhNDZiN2YwNTZkZjI3MWY5
ZTkyZWEuLjgwNTdlYTdkODgyNGQ4M2U5ZDFhYmY0MTdmNGZhZjllNjc0MTQ0NmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNTgsOSArNTgsOSBA
QCBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVVJMOwogc3Ry
dWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOworc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiB9
CiAKLXN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlcjsKIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogCkBAIC0y
NjksOSArMjY5LDkgQEAgT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtICh2b2lkKV9z
ZXRUZXh0SW5kaWNhdG9yOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdp
dGhMaWZldGltZTooV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1l
OwogLSAodm9pZClfY2xlYXJUZXh0SW5kaWNhdG9yV2l0aEFuaW1hdGlvbjooV2ViQ29yZTo6VGV4
dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbilhbmltYXRpb247CiAtICh2b2lkKV9z
ZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3M6KGZsb2F0KXByb2dyZXNzOwotLSAodm9p
ZClfc2hvd0RpY3Rpb25hcnlMb29rdXBQb3B1cDooY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYp
ZGljdGlvbmFyeVBvcHVwSW5mbzsKKy0gKHZvaWQpX3Nob3dEaWN0aW9uYXJ5TG9va3VwUG9wdXA6
KGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cEluZm87
CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKLS0gKGlkKV9h
bmltYXRpb25Db250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbzsKKy0gKGlkKV9hbmltYXRpb25D
b250cm9sbGVyRm9yRGljdGlvbmFyeUxvb2t1cFBvcHVwSW5mbzooY29uc3QgV2ViQ29yZTo6RGlj
dGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbzsKIC0gKFdlYkltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIgKilfaW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlcjsKICNlbmRpZgogLSAo
TlNFdmVudCAqKV9wcmVzc3VyZUV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rp
b25hcnlQb3B1cEluZm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjVhMzZk
NmY3ODBiMjNjOTlhOTEyYzY0NTI5YzI5MDgzZDRkMDQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5
UG9wdXBJbmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgot
Ci0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0KLSNpZiBQTEFURk9STShDT0NP
QSkKLSNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXZvaWQgRGljdGlvbmFyeVBvcHVwSW5mbzo6ZW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgb3JpZ2luOwotICAgIGVu
Y29kZXIgPDwgdGV4dEluZGljYXRvcjsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wg
aGFkT3B0aW9ucyA9IG9wdGlvbnM7Ci0gICAgZW5jb2RlciA8PCBoYWRPcHRpb25zOwotICAgIGlm
IChoYWRPcHRpb25zKQotICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBvcHRpb25zLmdldCgp
KTsKLQotICAgIGVuY29kZXIgPDwgYXR0cmlidXRlZFN0cmluZzsKLSNlbmRpZgotfQotCi1ib29s
IERpY3Rpb25hcnlQb3B1cEluZm86OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgRGljdGlvbmFyeVBvcHVwSW5mbyYgcmVzdWx0KQotewotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0Lm9yaWdpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnRleHRJbmRpY2F0b3IpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGhhZE9wdGlvbnM7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoYWRPcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChoYWRPcHRpb25zKSB7Ci0gICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0
Lm9wdGlvbnMpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmF0dHJpYnV0ZWRTdHJpbmcpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5m
by5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQzYzAwNmNjNjYwODVjZWZkNzI3ZjU4MGY4YTllMGU4
YmE3NWZmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGljdGlvbmFyeVBvcHVwSW5m
b19oCi0jZGVmaW5lIERpY3Rpb25hcnlQb3B1cEluZm9faAotCi0jaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFBvaW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+Ci0KLSNpZiBQ
TEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJBdHRyaWJ1dGVkU3RyaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgQXJndW1l
bnREZWNvZGVyOwotY2xhc3MgQXJndW1lbnRFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm8gewotICAgIHZvaWQgZW5jb2RlKElQQzo6
QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJn
dW1lbnREZWNvZGVyJiwgRGljdGlvbmFyeVBvcHVwSW5mbyYpOwotCi0gICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW47Ci0gICAgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEgdGV4dEluZGlj
YXRvcjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBvcHRpb25zOwotICAgIEF0dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZzsKLSNlbmRp
ZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBEaWN0aW9uYXJ5UG9w
dXBJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKaW5kZXggN2E1ODQ5NGE4N2YxZTAzMzhkYjVkY2YzOWI3NDhhMTg0MjA1YzdjNy4uZmUy
NTNhODU2MTAwZjE2NGM0MTNkMzQ4YTZmZjM1NzY3NmRjY2NjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VE
ZXRhaWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsdGVyT3BlcmF0aW9uLmg+CkBAIC03Myw2ICs3NCw3IEBACiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnNNYWMuaCIKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjIwMyw0ICsy
MjA1LDUyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46
OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsCiB9CiAjZW5kaWYKIAordm9pZCBBcmd1
bWVudENvZGVyPERpY3Rpb25hcnlQb3B1cEluZm8+OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGluZm8pCit7CisgICAgZW5j
b2RlciA8PCBpbmZvLm9yaWdpbjsKKyAgICBlbmNvZGVyIDw8IGluZm8udGV4dEluZGljYXRvcjsK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGJvb2wgaGFkT3B0aW9ucyA9IGluZm8ub3B0aW9u
czsKKyAgICBlbmNvZGVyIDw8IGhhZE9wdGlvbnM7CisgICAgaWYgKGhhZE9wdGlvbnMpCisgICAg
ICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIGluZm8ub3B0aW9ucy5nZXQoKSk7CisKKyAgICBib29s
IGhhZEF0dHJpYnV0ZWRTdHJpbmcgPSBpbmZvLmF0dHJpYnV0ZWRTdHJpbmc7CisgICAgZW5jb2Rl
ciA8PCBoYWRBdHRyaWJ1dGVkU3RyaW5nOworICAgIGlmIChoYWRBdHRyaWJ1dGVkU3RyaW5nKQor
ICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBpbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkp
OworI2VuZGlmCit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxEaWN0aW9uYXJ5UG9wdXBJbmZvPjo6
ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBEaWN0aW9uYXJ5UG9wdXBJbmZv
JiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudGV4
dEluZGljYXRvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGJvb2wgaGFkT3B0aW9uczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhZE9wdGlv
bnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGhhZE9wdGlvbnMpIHsKKyAgICAg
ICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCByZXN1bHQub3B0aW9ucykpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5vcHRpb25zID0gbnVs
bHB0cjsKKworICAgIGJvb2wgaGFkQXR0cmlidXRlZFN0cmluZzsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhZEF0dHJpYnV0ZWRTdHJpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGhhZEF0dHJpYnV0ZWRTdHJpbmcpIHsKKyAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNv
ZGVyLCByZXN1bHQuYXR0cmlidXRlZFN0cmluZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5hdHRyaWJ1dGVkU3RyaW5nID0gbnVsbHB0cjsK
KyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBmNWYxNTUx
MmY0NzFmYTM1MWQyNWRhMTI5MjQ2ZjJlNDRhZDVjZTcwLi5jZjU0OTNiNjA3MmY2NWY0MjhkZWU1
ODZjYTg5ZGI3ZmU3N2Y1MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIFVSTDsKIHN0cnVjdCBDb21w
b3NpdGlvblVuZGVybGluZTsKIHN0cnVjdCBDb29raWU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJu
YXRpdmU7CitzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIHN0cnVjdCBGaWxlQ2hvb3NlclNl
dHRpbmdzOwogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiBzdHJ1Y3QgSURCR2V0UmVzdWx0
OwpAQCAtNDczLDYgKzQ3NCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJik7CiB9OwogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
RGljdGlvbmFyeVBvcHVwSW5mbyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXImLCBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvJik7Cit9OworCiAjaWYgRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oCmlu
ZGV4IGI4MjYxMWYyNTUxMmMxNWVlYjUzMTI2OTM2NTRmNjExN2YxMzg5NmIuLjRkODcxYTM4YTQy
MzM5OWVmOGI0M2QyNWIzODZlYzFmMzE2NDE3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHQuaApAQCAtMjEsOCArMjEsOCBAQAogI2RlZmluZSBXZWJIaXRUZXN0UmVz
dWx0X2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkRpY3Rpb25hcnlQb3B1
cEluZm8uaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rp
Y3Rpb25hcnlQb3B1cEluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5
Lmg+CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3I+IGRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3I7CiAgICAgICAgIFdlYkNvcmU6
OlBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEIGRldGVjdGVkRGF0YU9yaWdpbmF0aW5nUGFnZU92
ZXJsYXk7CiAKLSAgICAgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZv
OworICAgICAgICBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cElu
Zm87CiAKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+IGxpbmtUZXh0SW5k
aWNhdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50
Q29kZXJzTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFj
LmgKaW5kZXggMTc0ODA1MWYzZTVjY2ZkZmViMmM0ZGU1NjkzZmExZDJjMGM1MmY0ZS4uNGUyZGE3
NjE5MzE1M2VkOGQ4MDlkMTg3ZTA1MjMxNWM5YjcxZjdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaApAQCAtMjgsNiArMjgsMTYgQEAKIAogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFT
UyBOU0F0dHJpYnV0ZWRTdHJpbmc7CitPQkpDX0NMQVNTIE5TQ29sb3I7CitPQkpDX0NMQVNTIE5T
RGF0YTsKK09CSkNfQ0xBU1MgTlNEYXRlOworT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CitPQkpD
X0NMQVNTIE5TRm9udDsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CitPQkpDX0NMQVNTIE5TU3RyaW5n
OworCiBuYW1lc3BhY2UgSVBDIHsKIAogY2xhc3MgQXJndW1lbnRFbmNvZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGZmMjgzM2IzYjI5N2U5M2Q4
MDRkZmJkMTJiM2IyYjYzOWI2MDhkYzUuLmM5ZDY5OTc0ZTY5NWJlODBkMWM3OGIwZmRjNjBiYzVi
NDQwODNjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
QEAgLTgzLDYgKzgzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3Jz
U1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC00MDgzLDkgKzQwODQsNyBAQCBzdGF0aWMg
TlNTdHJpbmcgKnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQog
CiArICh2b2lkKWhpZGVXb3JkRGVmaW5pdGlvbldpbmRvdwogewotICAgIGlmICghZ2V0TFVMb29r
dXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFtnZXRMVUxv
b2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGhpZGVEZWZpbml0aW9uXTsKKyAgICBEaWN0aW9u
YXJ5TG9va3VwOjpoaWRlUG9wdXAoKTsKIH0KIAogLSAoTlNTaXplKW1pbmltdW1TaXplRm9yQXV0
b0xheW91dApAQCAtNDY3Niw4ICs0Njc1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVu
aXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICAgICAgfHwgW19kYXRhLT5f
aW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBoYXNBY3RpdmVJbW1lZGlhdGVBY3Rpb25dCiAjZW5k
aWYKICAgICAgICAgKSB7Ci0gICAgICAgIGlmIChDbGFzcyBsb29rdXBEZWZpbml0aW9uTW9kdWxl
Q2xhc3MgPSBnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpKQotICAgICAgICAgICAg
W2xvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcyBoaWRlRGVmaW5pdGlvbl07CisgICAgICAgIERp
Y3Rpb25hcnlMb29rdXA6OmhpZGVQb3B1cCgpOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEwMDAKICAgICAgICAgRERBY3Rpb25zTWFuYWdlciAqYWN0aW9uc01h
bmFnZXIgPSBbZ2V0RERBY3Rpb25zTWFuYWdlckNsYXNzKCkgc2hhcmVkTWFuYWdlcl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlNjg3ZmRhNWI2YTgxZTgxN2NkZDdh
ZjUwYmE5YTJkODY0M2RkNWExLi4yNTEyOTAwMTg2OWJlOGIxNDdhZmMxODQ1ZjEzMjJiODc4ZjZm
MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTIzOSw3ICsyMzks
NyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5G
b2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJ
ZGVudGlmaWVyLCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBQbHVnaW5Db21wbGV4VGV4dElucHV0U3Rh
dGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29u
c3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXAoY29uc3QgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cyhi
b29sIHdpdGhBbmltYXRpb24gPSB0cnVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3Jy
ZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCAzYjFjNzNhNjU3NjlhNTJiYTlmMGM2NGQ3NmI0ZmQyOTIyOTU5NThiLi4xODky
ZDc5ZTkzMzExMTZlN2YwM2E0NDc1ZTBkMjIzZmVlMGYyODgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNTUsNiArMTU1LDcgQEAgY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVGV4dEluZGljYXRvcjsKK3N0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IEZp
bGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlOwogc3Ry
dWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKQEAgLTIwMSw3ICsyMDIsNiBAQCBjbGFzcyBXZWJXaGVl
bEV2ZW50OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5n
Owogc3RydWN0IENvbG9yU3BhY2VEYXRhOwotc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiBz
dHJ1Y3QgRWRpdGluZ1JhbmdlOwogc3RydWN0IEVkaXRvclN0YXRlOwogc3RydWN0IFBsYXRmb3Jt
UG9wdXBNZW51RGF0YTsKQEAgLTEyOTUsNyArMTI5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZWFyY2hUaGVXZWIoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBEaWN0aW9uYXJ5LgotICAgIHZv
aWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYp
OworICAgIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgV2ViQ29yZTo6RGlj
dGlvbmFyeVBvcHVwSW5mbyYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBl
MmMxYjlkZTM3MzQ4ZDAwMzgwMzYxZjc0NDBlYWVhYWM1NThkNDIwLi5kOGQ5MWIxYjg1Y2FiNWNk
ZTk5NzBhNGIzMGZkNGY3NGM4NzRhMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwOCw3ICszMDgsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBEaWN0aW9u
YXJ5IHN1cHBvcnQuCi0gICAgRGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoc3RydWN0IFdlYktp
dDo6RGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvKQorICAgIERpZFBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwKHN0cnVjdCBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvIGRp
Y3Rpb25hcnlQb3B1cEluZm8pCiAKICAgICAjIEtleWJvYXJkIGlucHV0IHN1cHBvcnQgbWVzc2Fn
ZXMKICAgICBFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpIC0+
IChib29sIGhhbmRsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsLmgKaW5kZXggM2QxODI1MjRiNzE0MGFjNzRiZWY3ODBmZGJlYTQwODdmMDk4YjgxNC4u
MWNkOTk3MDQ2YjBjNWZmNTY4OGFjODdmZDc5OTYwMTNhYjFmNzc5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAtMTQ1LDcgKzE0NSw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJp
ZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNv
bnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5m
byYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hp
bGRXaW5kb3dzKGJvb2wgd2l0aEFuaW1hdGlvbiA9IHRydWUpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlw
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5n
cykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5tbQppbmRleCBiMWQ1Njg5ZGE0NGRhYTRmZDQ5N2E5YmZlMzJhNTkzN2VjOGM5ODViLi43
OWIwMGY3MmRkYTRmZWRlY2JiODBkZmYxMDMyZWI5MzY0MjBiOGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTI4LDEwICsyOCw4IEBA
CiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNp
bXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCi0jaW1w
b3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAj
aW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJXaGVl
bEV2ZW50LmgiCkBAIC01MywxMSArNTEsMTEgQEAKICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9v
a3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9Mb29rdXBTUEkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KQEAgLTg1LDggKzgz
LDYgQEAKIEBlbmQKICNlbmRpZgogCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3Vw
LCBMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvciwgTlNTdHJpbmcgKikKLQog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC01
ODUsMzIgKzU4MSwxMSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQbHVnaW5Db21wbGV4VGV4
dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbgogCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogewotICAgIGlmICghZ2V0TFVMb29rdXBEZWZpbml0
aW9uTW9kdWxlQ2xhc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IG11dGFibGVPcHRpb25zID0gYWRvcHROUyhbKE5TRGljdGlvbmFyeSAq
KWRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5nZXQoKSBtdXRhYmxlQ29weV0pOwotCiAgICAg
W21fd2tWaWV3IF9wcmVwYXJlRm9yRGljdGlvbmFyeUxvb2t1cF07CiAKLSAgICBpZiAoY2FuTG9h
ZExVVGVybU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCkgJiYgZGljdGlvbmFyeVBv
cHVwSW5mby50ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSkgewotICAgICAgICBbbV93a1ZpZXcg
X3NldFRleHRJbmRpY2F0b3I6VGV4dEluZGljYXRvcjo6Y3JlYXRlKGRpY3Rpb25hcnlQb3B1cElu
Zm8udGV4dEluZGljYXRvcikgd2l0aExpZmV0aW1lOlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGlt
ZTo6UGVybWFuZW50XTsKLSAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZv
cktleTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpXTsKLQotICAg
ICAgICBpZiAoW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzaG93RGVmaW5pdGlvbkZvclRlcm06cmVsYXRpdmVUb1JlY3Q6b2ZW
aWV3Om9wdGlvbnM6KV0pIHsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBmaXJzdFRleHRSZWN0SW5W
aWV3Q29vcmRpbmF0ZXMgPSBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dFJl
Y3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlc1swXTsKLSAgICAgICAgICAgIGZpcnN0VGV4dFJl
Y3RJblZpZXdDb29yZGluYXRlcy5tb3ZlQnkoZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNh
dG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMubG9jYXRpb24oKSk7Ci0g
ICAgICAgICAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5p
dGlvbkZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5n
ZXQoKSByZWxhdGl2ZVRvUmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgb2ZWaWV3
Om1fd2tWaWV3IG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTlNQb2ludCB0ZXh0QmFzZWxpbmVPcmlnaW4g
PSBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbjsKLQotICAgIC8vIENvbnZlcnQgdG8gc2NyZWVu
IGNvb3JkaW5hdGVzLgotICAgIHRleHRCYXNlbGluZU9yaWdpbiA9IFttX3drVmlldyBjb252ZXJ0
UG9pbnQ6dGV4dEJhc2VsaW5lT3JpZ2luIHRvVmlldzpuaWxdOwotICAgIHRleHRCYXNlbGluZU9y
aWdpbiA9IFttX3drVmlldy53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjpOU01ha2VSZWN0KHRl
eHRCYXNlbGluZU9yaWdpbi54LCB0ZXh0QmFzZWxpbmVPcmlnaW4ueSwgMCwgMCldLm9yaWdpbjsK
LQotICAgIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9u
Rm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgp
IGF0TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0
KCldOworICAgIERpY3Rpb25hcnlMb29rdXA6OnNob3dQb3B1cChkaWN0aW9uYXJ5UG9wdXBJbmZv
LCBtX3drVmlldywgW3RoaXNdKFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpIHsKKyAgICAg
ICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOnRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1l
OlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZTo6UGVybWFuZW50XTsKKyAgICB9KTsKIH0KIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxkV2luZG93cyhi
b29sIHdpdGhBbmltYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDdlNDgzMzI1YjA2
OTEwZjgwNzcyNTU4OGEzZTg3MWJlZDI0ZmVkMjkuLmVkNDBmZWEwNDkwNWJiZTk5NmYwMWY1ZmM3
MDljNDIyMGQ5NzZlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW1wb3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRlY3RvcnNTUEkuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HZW9tZXRyeVV0aWxp
dGllcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb29rdXBTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TlNNZW51U1BJLmg+CkBAIC00Niw3ICs0Nyw2IEBACiAKIFNPRlRfTElOS19GUkFNRVdPUktfSU5f
VU1CUkVMTEEoUXVhcnR6LCBRdWlja0xvb2tVSSkKIFNPRlRfTElOS19DTEFTUyhRdWlja0xvb2tV
SSwgUUxQcmV2aWV3TWVudUl0ZW0pCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoTG9va3Vw
LCBMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvciwgTlNTdHJpbmcgKikKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNDYx
LDMzICs0NjEsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICAgICBpZiAoX3N0YXRlICE9
IEltbWVkaWF0ZUFjdGlvblN0YXRlOjpSZWFkeSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IGlmICghZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQogICAgIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbyA9IF9o
aXRUZXN0UmVzdWx0RGF0YS5kaWN0aW9uYXJ5UG9wdXBJbmZvOwotICAgIGlmICghZGljdGlvbmFy
eVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZykKKyAgICBpZiAoIWRpY3Rpb25hcnlQ
b3B1cEluZm8uYXR0cmlidXRlZFN0cmluZykKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFtf
d2tWaWV3IF9wcmVwYXJlRm9yRGljdGlvbmFyeUxvb2t1cF07CiAKLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlRGljdGlvbmFyeT4gbXV0YWJsZU9wdGlvbnMgPSBhZG9wdE5TKFsoTlNEaWN0aW9uYXJ5
ICopZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zLmdldCgpIG11dGFibGVDb3B5XSk7Ci0gICAg
aWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYmIGRp
Y3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UpIHsKLSAgICAgICAg
W193a1ZpZXcgX3NldFRleHRJbmRpY2F0b3I6VGV4dEluZGljYXRvcjo6Y3JlYXRlKGRpY3Rpb25h
cnlQb3B1cEluZm8udGV4dEluZGljYXRvcikgd2l0aExpZmV0aW1lOlRleHRJbmRpY2F0b3JXaW5k
b3dMaWZldGltZTo6UGVybWFuZW50XTsKLSAgICAgICAgW211dGFibGVPcHRpb25zIHNldE9iamVj
dDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigp
XTsKLQotICAgICAgICBpZiAoW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihsb29rdXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVy
bTpyZWxhdGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9uczopXSkgewotICAgICAgICAgICAgRmxvYXRS
ZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyA9IGRpY3Rpb25hcnlQb3B1cEluZm8u
dGV4dEluZGljYXRvci50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzWzBdOwotICAg
ICAgICAgICAgZmlyc3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzLm1vdmVCeShkaWN0aW9uYXJ5
UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcy5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0
aW9uTW9kdWxlQ2xhc3MoKSBsb29rdXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9u
YXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgpIHJlbGF0aXZlVG9SZWN0
OmZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyBvZlZpZXc6X3drVmlldyBvcHRpb25zOm11
dGFibGVPcHRpb25zLmdldCgpXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIENvbnZlcnQg
YmFzZWxpbmUgdG8gc2NyZWVuIGNvb3JkaW5hdGVzLgotICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5l
T3JpZ2luID0gZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW47Ci0gICAgdGV4dEJhc2VsaW5lT3Jp
Z2luID0gW193a1ZpZXcgY29udmVydFBvaW50OnRleHRCYXNlbGluZU9yaWdpbiB0b1ZpZXc6bmls
XTsKLSAgICB0ZXh0QmFzZWxpbmVPcmlnaW4gPSBbX3drVmlldy53aW5kb3cgY29udmVydFJlY3RU
b1NjcmVlbjpOU01ha2VSZWN0KHRleHRCYXNlbGluZU9yaWdpbi54LCB0ZXh0QmFzZWxpbmVPcmln
aW4ueSwgMCwgMCldLm9yaWdpbjsKLQotICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9u
TW9kdWxlQ2xhc3MoKSBsb29rdXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5
UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgpIGF0TG9jYXRpb246dGV4dEJh
c2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOworICAgIHJldHVybiAo
aWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyPilEaWN0aW9uYXJ5TG9va3Vw
OjphbmltYXRpb25Db250cm9sbGVyRm9yUG9wdXAoZGljdGlvbmFyeVBvcHVwSW5mbywgX3drVmll
dywgW3NlbGZdKFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpIHsKKyAgICAgICAgW193a1Zp
ZXcgX3NldFRleHRJbmRpY2F0b3I6dGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGlj
YXRvcldpbmRvd0xpZmV0aW1lOjpQZXJtYW5lbnRdOworICAgIH0pOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDM5
NGVlYWYxMzA2NjA3OWRkNDNmMDE5NDdlOTA3ZmE1MjkwYjIyM2YuLmI2ZmJjYmZmNzE4YWEwMzcz
ODk5YTM4MDlhNTgzNmI5ZGRhYTUyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJBdHRy
aWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0
YVJlZmVyZW5jZS5oIgotI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAi
RWRpdGluZ1JhbmdlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgogI2ltcG9ydCAiTWVudVV0
aWxpdGllcy5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9u
QWx0ZXJuYXRpdmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4ZDRkZjQ3MDU1MThkYThkNmRhNTVmYzI2NzA5ZTE0ODQxMjk0MDA0Li5jYzExNzNmZjZjMjg3
MzM0YTY0YTk0NTVlMjE3NmI2NmY3OGE1OWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTk0LDggKzE1OTQsNiBAQAogCQlC
Q0U0Njk3OTEyMTRGMkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ2OTc4MTIxNEYy
QjQwMDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuY3BwICovOyB9OwogCQlCQ0U4MUQ4
QzEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFODFEOEExMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJ
bmZvLmNwcCAqLzsgfTsKIAkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U4MUQ4QjEz
MTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uaCAqLzsgfTsKLQkJQkNFODFEOTgxMzFBRTAyMTAw
MjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFODFEOTYxMzFBRTAyMDAwMjQxOTEwIC8qIERpY3Rp
b25hcnlQb3B1cEluZm8uY3BwICovOyB9OwotCQlCQ0U4MUQ5OTEzMUFFMDIxMDAyNDE5MTAgLyog
RGljdGlvbmFyeVBvcHVwSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNFODFEOTcxMzFBRTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cElu
Zm8uaCAqLzsgfTsKIAkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VFN0FDQzEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdl
YlByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0VFN0FDRDEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCAqLzsgfTsKIAkJQkNFRTdEQzUxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVk
QnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VFN0RDMzEyOEI2NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAq
LzsgfTsKQEAgLTM4MjEsOCArMzgxOSw2IEBACiAJCUJDRTQ2OTc4MTIxNEYyQjQwMDBCOThFQiAv
KiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNFODFEOEExMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNFODFEOEIxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUJDRTgxRDk2MTMxQUUwMjAwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5
UG9wdXBJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3Rp
b25hcnlQb3B1cEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0U4MUQ5
NzEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0aW9uYXJ5UG9wdXBJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRTlDMENGMTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNFOUMwRDAxNDg1OTY1RDAwRTMzRDYxIC8qIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFRTdBQjMxMjgxNzA5NTAwOTgyN0RB
IC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NzAwLDggKzQ2OTYsNiBAQAogCQkJCTFBNkY5RjhFMTFFMTNFRkMwMERCMTM3MSAvKiBDb21t
YW5kTGluZS5oICovLAogCQkJCTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcCAqLywKIAkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oICovLAotCQkJCUJDRTgxRDk2MTMxQUUwMjAwMDI0MTkxMCAv
KiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCAqLywKLQkJCQlCQ0U4MUQ5NzEzMUFFMDIxMDAyNDE5
MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovLAogCQkJCUM1MTczODgwMTJERjhGNEYwMEVF
M0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oICovLAogCQkJCTBGQjY1OTIyMTIwOEI0REIw
MDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAqLywKIAkJCQlFMTA1RkU1MzE4RDdCOURFMDA4
RjU3QTggLyogRWRpdGluZ1JhbmdlLmggKi8sCkBAIC03NjM3LDcgKzc2MzEsNiBAQAogCQkJCUNF
MUEwQkQ0MUE0OEU2QzYwMDU0RUY3NCAvKiBEYXRhRGV0ZWN0b3JzVUlTUEkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQzc1MzgwMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2QzFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDRTgxRDk5MTMxQUUwMjEwMDI0MTkx
MCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEYwODE2
QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEU4RjBB
MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtOTQ0MCw3ICs5NDMzLDYgQEAKIAkJCQk1MTAzMkYxRDE4MEY3
OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzc1MzdGMTgzQkU1MEYwMDcyQ0IxNSAvKiBE
YXRhUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzODkxQjZEMUE2OEMzMEIwMDMw
RjM4NiAvKiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5tbSBpbiBTb3VyY2VzICovLAotCQkJCUJD
RTgxRDk4MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxOEU4RjA3MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MThFOEYwOTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRBdXRo
ZW50aWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNjMxMjE4RTBCN0M4
MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggOTMy
NDk0ODI1MmI3MGM4NmE1MTM4YzJkOTNjMDU1N2VhMGU5MDIxZS4uNjFjZjRmZWE4MWExYzg2MTVj
ZmJmZDgyM2YwZmIwMDA4NjQ4NmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI5LDkgKzI5LDcgQEAKICNpZiBFTkFC
TEUoUERGS0lUX1BMVUdJTikKIAogI2ltcG9ydCAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbXBvcnQg
IkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQg
IkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIlBERkFubm90YXRpb25UZXh0V2lkZ2V0
RGV0YWlscy5oIgogI2ltcG9ydCAiUERGS2l0SW1wb3J0cy5oIgogI2ltcG9ydCAiUERGTGF5ZXJD
b250cm9sbGVyRGV0YWlscy5oIgpAQCAtMTcyMCw3ICsxNzE4LDcgQEAgdm9pZCBQREZQbHVnaW46
OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZywgQ0cKIHsKICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm87
CiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSBjb252ZXJ0RnJvbVBERlZpZXdUb1Jv
b3RWaWV3KEludFBvaW50KHBvaW50KSk7Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1
dGVkU3RyaW5nLnN0cmluZyA9IHN0cmluZzsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJp
YnV0ZWRTdHJpbmcgPSBzdHJpbmc7CiAKICAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFy
eVBvcHVwSW5mbykpOwogfQpAQCAtMTkzNyw3ICsxOTM1LDcgQEAgU3RyaW5nIFBERlBsdWdpbjo6
bG9va3VwVGV4dEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb25J
blZpZXcKICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5zdHJpbmc7CiAgICAgfQogICAgIAotICAg
IE5TU3RyaW5nICpsb29rdXBUZXh0ID0gZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbihz
ZWxlY3Rpb24sIG9wdGlvbnMpOworICAgIE5TU3RyaW5nICpsb29rdXBUZXh0ID0gRGljdGlvbmFy
eUxvb2t1cDo6c3RyaW5nRm9yUERGU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7CiAgICAg
aWYgKCFsb29rdXBUZXh0IHx8ICFsb29rdXBUZXh0Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIEAi
IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQppbmRleCA0
MWI1MDY2ZDY0MDY4MzRkZjgwMTg4ZjJjYmU3OTU2NjQ4NTY0NWVlLi4wZDc4OWMzN2U1NWQ2ZWRj
MGQ0MWVkNGNmMTJmZjMwMjUxYWQyODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0
TWVudUNsaWVudE1hYy5tbQpAQCAtMjgsMTAgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKIAotI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMDkwNzkyYzJiZGZiNzZjNzM1MmE3ZGI1MjgyYmQ4
OTgwMmFlYWIzMi4uMWUyZjYxYWY3ZDJkZDE2MDE5ZTQ5MTBjYzE1M2NjNWEzMmEzMzQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zMCw3ICsz
MCw2IEBACiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
aCIKICNpbmNsdWRlICJBUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbmNsdWRl
ICJGaW5kQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCkBAIC00OSw2ICs0OCw3IEBA
CiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CkBAIC0xMDU1LDkgKzEwNTUsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKTsKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJy
ZW50U2VsZWN0aW9uKCk7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclJhbmdl
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6UmFuZ2UmLCBOU0RpY3Rpb25hcnkgKm9wdGlvbnMs
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKLSAgICBEaWN0
aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShXZWJDb3JlOjpGcmFt
ZSogZnJhbWUsIFdlYkNvcmU6OlJhbmdlJiByYW5nZSwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucywg
V2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9u
VHJhbnNpdGlvbik7CisgICAgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5
UG9wdXBJbmZvRm9yUmFuZ2UoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpSYW5nZSYsIE5TRGlj
dGlvbmFyeSAqKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uKTsKICNpZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKLSAgICBEaWN0aW9uYXJ5UG9wdXBJ
bmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQREZTZWxlY3Rp
b24gKiwgUERGUGx1Z2luJiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucywgV2ViQ29yZTo6VGV4dElu
ZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlQ
b3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclNlbGVjdGlvbkluUERGUGx1Z2luKFBERlNl
bGVjdGlvbiAqLCBQREZQbHVnaW4mLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zLCBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAjZW5kaWYKIAogICAgIHZvaWQg
d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB3aW5k
b3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgd2lu
ZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDdjNzI0NDQ0
MjRhMmY0OGRkNzZlZTdhNjhhNjc2OTc5MmNiYWJkNjkuLjJkOTVmOWNhYTIzMDM5NjI0ZjNlY2I5
NTgwMzY0NmVkNTI3ODg4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAi
QXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCAi
RGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiRWRpdGluZ1JhbmdlLmgiCiAjaW1wb3J0
ICJFZGl0b3JTdGF0ZS5oIgogI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Lmgi
CkBAIC01MTgsNyArNTE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1
cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKICAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJl
c3VsdEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
cG9pbnQpKTsKICAgICBGcmFtZSogZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkg
PyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA6ICZtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIE5TRGljdGlv
bmFyeSAqb3B0aW9ucyA9IG5pbDsKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gcmFuZ2VGb3JE
aWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVzdWx0KHJlc3VsdCwgJm9wdGlvbnMpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3Vs
dChyZXN1bHQsICZvcHRpb25zKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47CiAK
QEAgLTUyOCw3ICs1MjcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
QXRMb2NhdGlvbihjb25zdCBGbG9hdFBvaW50JiBmbG9hdFBvaW50KQogdm9pZCBXZWJQYWdlOjpw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbikKIHsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlv
bnMgPSBuaWw7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gcmFuZ2VGb3JEaWN0
aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKHNlbGVjdGlvbiwgJm9wdGlvbnMpOworICAgIFJlZlB0
cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0
aW9uKHNlbGVjdGlvbiwgJm9wdGlvbnMpOwogICAgIGlmIChzZWxlY3RlZFJhbmdlKQogICAgICAg
ICBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclJhbmdlKGZyYW1lLCAqc2VsZWN0ZWRSYW5nZSwg
b3B0aW9ucywgcHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiB9CkBAIC01NTYsNyArNTU1LDcgQEAg
RGljdGlvbmFyeVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2Uo
RnJhbWUqIGZyYW1lLCBSYW5nZSYgcmEKICAgICBJbnRSZWN0IHJhbmdlUmVjdCA9IGZyYW1lLT52
aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7
CiAKICAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbiA9IEZsb2F0UG9pbnQocmFuZ2VSZWN0
LngoKSwgcmFuZ2VSZWN0LnkoKSArIChzdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpICogcGFn
ZVNjYWxlRmFjdG9yKCkpKTsKLSAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKSpvcHRpb25zOworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9
ICpvcHRpb25zOwogCiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpuc0F0dHJpYnV0ZWRTdHJpbmcg
PSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZShyYW5nZSwgSW5jbHVkZUltYWdlc0lu
QXR0cmlidXRlZFN0cmluZzo6Tm8pOwogCkBAIC01ODUsNyArNTg0LDcgQEAgRGljdGlvbmFyeVBv
cHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2UoRnJhbWUqIGZyYW1l
LCBSYW5nZSYgcmEKICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiAKICAgICBk
aWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7
Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyA9IHNjYWxl
ZE5TQXR0cmlidXRlZFN0cmluZzsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRT
dHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmc7CiAKICAgICByZXR1cm4gZGljdGlvbmFy
eVBvcHVwSW5mbzsKIH0KQEAgLTYzOCw5ICs2MzcsOSBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdl
YlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBERlBsdWdpbihQREZTZWxl
YwogICAgIGRhdGFGb3JTZWxlY3Rpb24ucHJlc2VudGF0aW9uVHJhbnNpdGlvbiA9IHByZXNlbnRh
dGlvblRyYW5zaXRpb247CiAgICAgCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSBy
YW5nZVJlY3Qub3JpZ2luOwotICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9IChDRkRp
Y3Rpb25hcnlSZWYpKm9wdGlvbnM7CisgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zID0g
Km9wdGlvbnM7CiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0gZGF0YUZv
clNlbGVjdGlvbjsKLSAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuc3Ry
aW5nID0gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nOworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8u
YXR0cmlidXRlZFN0cmluZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZzsKICAgICAKICAgICBy
ZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKIH0KQEAgLTExOTgsNyArMTE5Nyw3IEBAIFJlZlB0
cjxXZWJDb3JlOjpSYW5nZT4gV2ViUGFnZTo6bG9va3VwVGV4dEF0TG9jYXRpb24oRmxvYXRQb2lu
dCBsb2NhdGlvbkluVmlld0NvCiAKICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2lu
dChsb2NhdGlvbkluVmlld0Nvb3JkaW5hdGVzKTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9
IG1haW5GcmFtZS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtX3BhZ2UtPm1h
aW5GcmFtZSgpLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCkpOwotICAgIHJldHVybiBy
YW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQocmVzdWx0LCBvcHRpb25zKTsK
KyAgICByZXR1cm4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQocmVzdWx0
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBXZWJQYWdlOjppbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUo
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260079</attachid>
            <date>2015-08-27 12:20:08 -0700</date>
            <delta_ts>2015-08-27 14:16:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148509-20150827122011.patch</filename>
            <type>text/plain</type>
            <size>77820</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjY2U5OTM2ZmYzNjIx
OTUzMTg2NGNkMDhlNWE0NTk5M2Y1ZDhlZi4uM2I3NTFlYjAxOTE4MmI5YWI3OTgyOGM2Njc1MGUz
ODUzMzQ5NDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTA4LTI2ICBUaW1v
dGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3Ig
b3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVyZSdzIGEgdG9uIG9mIGR1cGxpY2F0ZWQgY29kZSBpbiBsZWdhY3kg
YW5kIG1vZGVybiBXZWJLaXQgdG8gdGFsayB0bworICAgICAgICBMb29rdXAuIEFuZCwgaXQncyBw
cmV0dHkgbWVzc3kuIEFzIGEgZmlyc3Qgc3RlcCB0byBtYWtpbmcgaXQgbGVzcyBtZXNzeSwKKyAg
ICAgICAgbWFrZSBpdCBzbyB3ZSBvbmx5IGhhdmUgaXQgaW4gb25lIHBsYWNlIGluc3RlYWQgb2Yg
Zm91ciAob3IgdHdvKS4KKworICAgICAgICAqIGVkaXRpbmcvRGljdGlvbmFyeVBvcHVwSW5mby5o
OgorICAgICAgICBNb3ZlIERpY3Rpb25hcnlQb3B1cEluZm8gaW50byBXZWJDb3JlLiBUaGlzIHdh
cyBkdXBsaWNhdGVkCisgICAgICAgIGluIGJvdGggbGVnYWN5IGFuZCBtb2Rlcm4gV2ViS2l0Lgor
CisgICAgICAgICogZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oOgorICAgICAgICAqIGVk
aXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0
aW9uYXJ5TG9va3VwOjpzdHJpbmdGb3JQREZTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
c2hvd1BvcHVwT3JDcmVhdGVBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpY3Rpb25hcnlMb29rdXA6OnNob3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9u
YXJ5TG9va3VwOjpoaWRlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeUxvb2t1
cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OnJhbmdl
Rm9yRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpyYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6ZGljdGlvbmFyeUxvb2t1cEZvclBERlNlbGVjdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIE1vdmUgRGljdGlvbmFyeUxvb2t1cCBzdHVmZiBpbnRvIGEgY2xhc3MgZm9y
IGJldHRlciBuYW1lcy4KKworICAgICAgICBNb3ZlIHNob3dQb3B1cCwgaGlkZVBvcHVwLCBhbmQg
YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwIGhlcmUuCisgICAgICAgIHNob3dQb3B1cCBhbmQg
YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwIGJvdGggYm90dGxlbmVjayB0aHJvdWdoCisgICAg
ICAgIGEgc2luZ2xlIGZ1bmN0aW9uLCB3aGVyZSBwcmV2aW91c2x5IHdlIGR1cGxpY2F0ZWQgYWxs
IG9mIHRoZSBjb2RlCisgICAgICAgIGZvciBib3RoIG9mIHRoZW0sIGFuZCBpbiBib3RoIGxlZ2Fj
eSBhbmQgbW9kZXJuIFdlYktpdC4KKworICAgICAgICBzaG93UG9wdXAgYW5kIGFuaW1hdGlvbkNv
bnRyb2xsZXJGb3JQb3B1cCB0YWtlIGEgYmxvY2sgdGhhdCB0aGV5ICptYXkqCisgICAgICAgIGNh
bGwgaWYgd2UgaGF2ZSBzdXBwb3J0IGZvciBvdmVycmlkaW5nIExvb2t1cCdzIGluZGljYXRvciB3
aXRoIFRleHRJbmRpY2F0b3IsCisgICAgICAgIGJlY2F1c2UgdGhlIGluc3RhbGxhdGlvbiBwcm9j
ZXNzIGlzIGRpZmZlcmVudCBwZXIgV2ViS2l0LgorCisgICAgICAgICogcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9z
ZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1cCk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUZvckRp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKToKKyAgICAgICAgQWRqdXN0IHRvIHRoZSBuZXcgbmFt
aW5nLgorCiAyMDE1LTA4LTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICB3YXRjaGRvZyBtX2RpZEZpcmUgc3RhdGUgZXJyb25lb3VzbHkgcmV0YWluZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDZlYjFjMTI3M2Q2NmRhY2RlMTgwNjg2ZWM4MmIyNDVhODQxZWMwZGMuLjY4MmFjNDk0
NWNhNTcyZjMwMTJhM2Y4NDJjZjJmOTlhNWVmMTEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTUtMDgtMjYgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgorCisgICAgICAgIEZhY3RvciBvdXQgTG9va3VwIGludm9jYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODUwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTUtMDgtMjYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBidWlsZCBhZnRlciByMTg4OTgyLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDI0ZWJhZjNlYzg0ZDUwNWM0MjgxZmUxYTRiZWZhMmNiM2ZmYzkzMzkuLmFmMGFk
ZWIyMWZkZTY3MzA5YjgzZTM2NzQ2YmE0NzlmNTc4NTg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxNS0wOC0yNiAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIG91dCBMb29rdXAgaW52b2NhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L0Rp
Y3Rpb25hcnlQb3B1cEluZm8uaDogUmVtb3ZlZC4KKyAgICAgICAgTW92ZSB0byBXZWJDb3JlLgor
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51Ol0pOgorICAgICAgICBEaWN0aW9uYXJ5UG9w
dXBJbmZvIGtlZXBzIGEgVGV4dEluZGljYXRvckRhdGEsIG5vdCBhIFRleHRJbmRpY2F0b3IuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJG
b3JEYXRhRGV0ZWN0ZWRMaW5rXSk6CisgICAgICAgIChkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFu
Z2UpOgorICAgICAgICAoLVtXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyIF9hbmltYXRpb25D
b250cm9sbGVyRm9yVGV4dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfYW5pbWF0aW9uQ29udHJvbGxlckZvckRpY3Rpb25hcnlMb29rdXBQb3B1cEluZm86
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6d2l0aExpZmV0aW1lOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IF9zaG93RGljdGlvbmFyeUxvb2t1cFBvcHVwOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIE1vdmUgYSBidW5jaCBv
ZiBjb2RlIHRvIFdlYkNvcmUuCisgICAgICAgIEZhY3RvciBzb21lIHRoYXQgaGFzIHRvIHN0YXkg
b3V0IGludG8gX3ByZXBhcmVGb3JEaWN0aW9uYXJ5TG9va3VwLgorCiAyMDE1LTA4LTI2ICBCZXRo
IERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBTYWZhcmkg
bmF2aWdhdGVzIGFmdGVyIGEgY2FuY2VsbGVkIGZvcmNlIGNsaWNrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjg0
NWQ5YzgxMGRlN2Q1MGI1ZmE3ZjM0Yzk5MWNiNDg5OTIwNWU0ZS4uZTg1YjRjYTQzNTZkMjlkZDI2
Zjc0YTEzNzAwODBhM2Y0YjYwOWMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE1
LTA4LTI2ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBGYWN0b3Igb3V0IExvb2t1cCBpbnZvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1MDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oOiBSZW1v
dmVkLgorICAgICAgICBNb3ZlZCB0byBXZWJDb3JlLgorCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGljdGlv
bmFyeVBvcHVwSW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGlj
dGlvbmFyeVBvcHVwSW5mbz46OmRlY29kZSk6CisgICAgICAgIEFkZCBlbmNvZGUvZGVjb2RlcnMg
Zm9yIERpY3Rpb25hcnlQb3B1cEluZm8gbm93IHRoYXQgaXQncyBpbiBXZWJDb3JlLgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKCtb
V0tWaWV3IGhpZGVXb3JkRGVmaW5pdGlvbldpbmRvd10pOgorICAgICAgICAoLVtXS1ZpZXcgX2Rp
c21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xs
ZXIgX2FuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXh0XSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRl
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bG9va3VwVGV4dEF0TG9jYXRp
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRN
ZW51Q2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEZvclNlbGVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JT
ZWxlY3Rpb25JblBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxvb2t1cFRl
eHRBdExvY2F0aW9uKToKKyAgICAgICAgQWRqdXN0IHRvIG5ldyBuYW1lcyBhbmQgbW92ZSBzdHVm
ZiB0byBXZWJDb3JlLgorCiAyMDE1LTA4LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjcmFzaCBkdWUgdG8gYW5pbWF0aW9uRGlkRW5kIGNh
bGxlZCBvbiBkZWFsbG9jYXRlZCBSZW1vdGVMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWFhNDI2ZDQzODA5
OWU3ODEyZGNiYmY5ODRhNjU1Y2Q3MmZjOTVlZS4uZjNhYTIxYWJiY2VmY2I3ZDZlMjRhZTE2OTFh
MTZmMDE2NjE3OTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOCw2ICsxMTM4LDcgQEAKIAkJMkQ1MDAyRjgxQjU2RDc4
MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ1MDAyRjcxQjU2RDc4MTAwMjBBQUY3IC8qIERPTVBhdGguY3BwICov
OyB9OwogCQkyRDUwMDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGOTFCNTZE
Nzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTJENTAwMkZDMUI1NkQ3
OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxp
dGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTJENTY0NkIwMUI4Rjg0OTMwMDNDNDk5NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDU2NDZBRjFCOEY4NDkz
MDAzQzQ5OTQgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENThEODU1MUExNUY2NUYwMEE1RjcyNiAvKiBE
YXRhRGV0ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENThEODU2MUExNUY2
NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OEQ4NTQxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRl
Y3Rpb24ubW0gKi87IH07CiAJCTJENTlGMUJGMUEwMDQ0QzYwMDFGM0QyOSAvKiBEYXRhRGV0ZWN0
b3JzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDU5RjFCRTFBMDA0NEM2MDAxRjNEMjkgLyogRGF0YURldGVjdG9yc1NQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzQ5LDYgKzgzNTAsNyBA
QAogCQkyRDUwMDJGNzFCNTZENzgxMDAyMEFBRjcgLyogRE9NUGF0aC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01QYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkQ1MDAyRjkxQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aFV0aWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENTAwMkZBMUI1NkQ3OTkwMDIwQUFGNyAv
KiBQYXRoVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGhV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ1NjQ2QUYxQjhGODQ5
MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGljdGlvbmFyeVBvcHVwSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENThEODU0MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVj
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1OUYxQkUxQTAwNDRDNjAw
MUYzRDI5IC8qIERhdGFEZXRlY3RvcnNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YURldGVjdG9yc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc5NzUsNiArMTc5NzcsNyBAQAogCQkJCUNFQ0FERkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0
YXRpb25BbHRlcm5hdGl2ZS5oICovLAogCQkJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25Db21tYW5kLmNwcCAqLywKIAkJCQlDRUNBREZDNTE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQ29tbWFuZC5oICovLAorCQkJCTJENTY0NkFGMUI4Rjg0OTMwMDNDNDk5NCAvKiBE
aWN0aW9uYXJ5UG9wdXBJbmZvLmggKi8sCiAJCQkJOTMzMDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8q
IEVkaXRBY3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5NDA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENv
bW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDk1MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFu
ZC5oICovLApAQCAtMjQzNzEsNiArMjQzNzQsNyBAQAogCQkJCTMxMjg4RTc1MEUzMDA1RDYwMDM2
MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkUxMzEz
MzE2MjBDMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgwRTZEMDMwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU01lZGlhUnVsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMkQ1NjQ2QjAxQjhGODQ5MzAwM0M0OTk0IC8qIERpY3Rpb25hcnlQb3B1cElu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUY5OEZGRjQ1MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NP
TVV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwMDBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTUGFnZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzcyQjNFMEM0RUE5MUUwMDgzMjg1
RiAvKiBDU1NQYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0RpY3Rpb25hcnlQb3B1cEluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzQ0MWZlZjU4YmUyYjBiMTg4Zjdk
NTJmYmE3YmM1NGNiNzg4M2I4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBEaWN0aW9uYXJ5UG9wdXBJbmZvX2gKKyNkZWZpbmUgRGljdGlvbmFyeVBv
cHVwSW5mb19oCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiVGV4dEluZGlj
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBOU0F0dHJp
YnV0ZWRTdHJpbmc7CitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbyB7CisgICAgRmxvYXRQb2ludCBvcmln
aW47CisgICAgVGV4dEluZGljYXRvckRhdGEgdGV4dEluZGljYXRvcjsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBvcHRpb25zOworICAgIFJldGFpblB0
cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmc7CisjZW5kaWYKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERpY3Rpb25hcnlQb3B1cEluZm9faApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCmluZGV4IGY2
MjI4ZjVkNzhlNDQzZWIzOGM0MzQwNWRhNTEwNjgxY2ExN2M5NWIuLjExYWRhMTZlZmNlMjc0YWUy
NjAzYjMyYWQ4NjcwYWQxMDNiODZjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9EaWN0aW9uYXJ5TG9va3VwLmgKQEAgLTI4LDIwICsyOCw0MSBAQAogCiAjaWYgUExBVEZPUk0o
TUFDKQogCisjaW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgorI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAotT0JKQ19DTEFTUyBOU0RpY3Rp
b25hcnk7CitPQkpDX0NMQVNTIE5TU3RyaW5nOworT0JKQ19DTEFTUyBOU1ZpZXc7CiBPQkpDX0NM
QVNTIFBERlNlbGVjdGlvbjsKIAorLy8gVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGluIEludGVybmFs
cy5jcHAsIHNvIHdlIGNhbid0IHVzZSBPYmpDIG91dHJpZ2h0LgorI2lmIGRlZmluZWQoX19PQkpD
X18pICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCisjaW5jbHVk
ZSAiTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQSS5oIgorI2RlZmluZSBQbGF0
Zm9ybUFuaW1hdGlvbkNvbnRyb2xsZXIgaWQ8TlNJbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250
cm9sbGVyPgorI2Vsc2UKKyNkZWZpbmUgUGxhdGZvcm1BbmltYXRpb25Db250cm9sbGVyIHZvaWQq
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIaXRUZXN0UmVzdWx0Owog
Y2xhc3MgUmFuZ2U7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCi1XRUJDT1JFX0VYUE9SVCBQ
YXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwotV0VCQ09SRV9F
WFBPUlQgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKLVdF
QkNPUkVfRVhQT1JUIE5TU3RyaW5nICpkaWN0aW9uYXJ5TG9va3VwRm9yUERGU2VsZWN0aW9uKFBE
RlNlbGVjdGlvbiAqLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKTsKK2NsYXNzIERpY3Rpb25hcnlM
b29rdXAgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPFJh
bmdlPiByYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgTlNEaWN0aW9u
YXJ5ICoqb3B0aW9ucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8UmFu
Z2U+IHJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBOU0RpY3Rpb25h
cnkgKipvcHRpb25zKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgTlNTdHJpbmcgKnN0cmlu
Z0ZvclBERlNlbGVjdGlvbihQREZTZWxlY3Rpb24gKiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucyk7
CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIG1vdmUvdW5pZnkgZGljdGlvbmFyeVBvcHVwSW5mb0Zv
clJhbmdlIGhlcmUgdG9vLgorCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2hvd1Bv
cHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBOU1ZpZXcgKiwgc3RkOjpmdW5jdGlvbjx2
b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBoaWRlUG9wdXAoKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQbGF0Zm9ybUFuaW1hdGlvbkNvbnRyb2xsZXIgYW5pbWF0aW9uQ29u
dHJvbGxlckZvclBvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mLCBOU1ZpZXcgKiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlv
bkNhbGxiYWNrKTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggZWQwNDc5ZTRiMmJi
OWI3ZWJkZTJhMDFkYmY3MWVlNjY2MjYzYmM5Mi4uZjMyMDBjYmYxMmI3YjA0YTRmZjBlZTcyMWZk
MmFkYjYyOGM2ODgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGlj
dGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9u
YXJ5TG9va3VwLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJIVE1MQ29udmVydGVyLmgi
CiAjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJMb29rdXBTUEkuaCIKKyNpbXBv
cnQgIk5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCIKICNpbXBvcnQgIlBh
Z2UuaCIKICNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKQEAgLTQ3
LDYgKzQ4LDggQEAKICNpbXBvcnQgPFBERktpdC9QREZLaXQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQ
dHIuaD4KIAorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwgTFVUZXJtT3B0aW9u
RGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IsIE5TU3RyaW5nICopCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGJvb2wgc2VsZWN0aW9uQ29udGFpbnNQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24p
CkBAIC02MSw3ICs2NCw3IEBAIHN0YXRpYyBib29sIHNlbGVjdGlvbkNvbnRhaW5zUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmlzCiAgICAgcmV0dXJuIHNl
bGVjdGVkUmFuZ2UtPmNvbnRhaW5zKHBvc2l0aW9uKTsKIH0KIAotUGFzc1JlZlB0cjxSYW5nZT4g
cmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1Bhc3NSZWZQdHI8UmFuZ2U+
IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKIHsKICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBp
ZiAoIXNlbGVjdGVkUmFuZ2UpCkBAIC04Nyw3ICs5MCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHJh
bmdlRm9yRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzCiAgICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2UucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PFJhbmdlPiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0
VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK1Bhc3NS
ZWZQdHI8UmFuZ2U+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0
IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCiB7
CiAgICAgTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAg
ICAgaWYgKCFub2RlKQpAQCAtMTEzLDcgKzExNiw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
CiAgICAgLy8gSWYgd2UgaGl0IHRoZSBzZWxlY3Rpb24sIHVzZSB0aGF0IGluc3RlYWQgb2YgbGV0
dGluZyBMb29rdXAgZGVjaWRlIHRoZSByYW5nZS4KICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVj
dGlvbiA9IGZyYW1lLT5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bv
c2l0aW9uKHBvc2l0aW9uLCBzZWxlY3Rpb24pKQotICAgICAgICByZXR1cm4gcmFuZ2VGb3JEaWN0
aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7CisgICAgICAgIHJl
dHVybiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24sIG9wdGlv
bnMpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1
bGVzID0gVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbik7CiAgICAgc2VsZWN0aW9uQWNjb3VudGlu
Z0ZvckxpbmVSdWxlcy5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CkBA
IC0xNTAsNyArMTUzLDcgQEAgc3RhdGljIHZvaWQgZXhwYW5kU2VsZWN0aW9uQnlDaGFyYWN0ZXJz
KFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBOU0ludGVnZXIgbnVtYmUKICAgICBjaGFyYWN0ZXJz
QWRkZWRBZnRlckVuZCA9IHNlbGVjdGlvbi5zdHJpbmcubGVuZ3RoIC0gb3JpZ2luYWxMZW5ndGgg
LSBjaGFyYWN0ZXJzQWRkZWRCZWZvcmVTdGFydDsKIH0KIAotTlNTdHJpbmcgKmRpY3Rpb25hcnlM
b29rdXBGb3JQREZTZWxlY3Rpb24oUERGU2VsZWN0aW9uICpzZWxlY3Rpb24sIE5TRGljdGlvbmFy
eSAqKm9wdGlvbnMpCitOU1N0cmluZyAqRGljdGlvbmFyeUxvb2t1cDo6c3RyaW5nRm9yUERGU2Vs
ZWN0aW9uKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zKQog
ewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciBhdCB0
aGUgcG9pbnQuCiAgICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVjdGlvbi5zdHJpbmcubGVuZ3Ro
KQpAQCAtMTg1LDYgKzE4OCw2OSBAQCBOU1N0cmluZyAqZGljdGlvbmFyeUxvb2t1cEZvclBERlNl
bGVjdGlvbihQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiwgTlNEaWN0aW9uYXJ5CiAgICAgcmV0dXJu
IHNlbGVjdGlvbi5zdHJpbmc7CiB9CiAKK3N0YXRpYyBQbGF0Zm9ybUFuaW1hdGlvbkNvbnRyb2xs
ZXIgc2hvd1BvcHVwT3JDcmVhdGVBbmltYXRpb25Db250cm9sbGVyKGJvb2wgY3JlYXRlQW5pbWF0
aW9uQ29udHJvbGxlciwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVw
SW5mbywgTlNWaWV3ICp2aWV3LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoVGV4dEluZGljYXRvciYpPiB0
ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJhY2spCit7CisgICAgaWYgKCFnZXRMVUxvb2t1
cERlZmluaXRpb25Nb2R1bGVDbGFzcygpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgUmV0
YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG11dGFibGVPcHRpb25zID0gYWRvcHROUyhbKE5T
RGljdGlvbmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5nZXQoKSBtdXRhYmxlQ29w
eV0pOworCisgICAgYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlKGRp
Y3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvcik7CisKKyAgICBpZiAoY2FuTG9hZExVVGVy
bU9wdGlvbkRpc2FibGVTZWFyY2hUZXJtSW5kaWNhdG9yKCkgJiYgdGV4dEluZGljYXRvci5nZXQo
KS5jb250ZW50SW1hZ2UoKSkgeworICAgICAgICB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2Fs
bGJhY2sodGV4dEluZGljYXRvci5nZXQoKSk7CisgICAgICAgIFttdXRhYmxlT3B0aW9ucyBzZXRP
YmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0
b3IoKV07CisKKyAgICAgICAgaWYgKFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd0RlZmluaXRpb25Gb3JUZXJtOnJlbGF0
aXZlVG9SZWN0Om9mVmlldzpvcHRpb25zOildKSB7CisgICAgICAgICAgICBGbG9hdFJlY3QgZmly
c3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzID0gdGV4dEluZGljYXRvci5nZXQoKS50ZXh0UmVj
dHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKClbMF07CisgICAgICAgICAgICBmaXJzdFRleHRS
ZWN0SW5WaWV3Q29vcmRpbmF0ZXMubW92ZUJ5KHRleHRJbmRpY2F0b3IuZ2V0KCkudGV4dEJvdW5k
aW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpLmxvY2F0aW9uKCkpOworICAgICAgICAgICAg
aWYgKGNyZWF0ZUFuaW1hdGlvbkNvbnRyb2xsZXIpIHsKKyNpZiAgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEwMDAKKyAgICAgICAgICAgICAgICByZXR1cm4gW2dldExVTG9v
a3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRl
cm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIHJlbGF0aXZlVG9S
ZWN0OmZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcyBvZlZpZXc6dmlldyBvcHRpb25zOm11
dGFibGVPcHRpb25zLmdldCgpXTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
KyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgW2dldExVTG9va3VwRGVmaW5pdGlv
bk1vZHVsZUNsYXNzKCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8u
YXR0cmlidXRlZFN0cmluZy5nZXQoKSByZWxhdGl2ZVRvUmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3
Q29vcmRpbmF0ZXMgb2ZWaWV3OnZpZXcgb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07Cisg
ICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisgICAgfQorCisgICAgTlNQb2ludCB0
ZXh0QmFzZWxpbmVPcmlnaW4gPSBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbjsKKworICAgIC8v
IENvbnZlcnQgdG8gc2NyZWVuIGNvb3JkaW5hdGVzLgorICAgIHRleHRCYXNlbGluZU9yaWdpbiA9
IFt2aWV3IGNvbnZlcnRQb2ludDp0ZXh0QmFzZWxpbmVPcmlnaW4gdG9WaWV3Om5pbF07CisgICAg
dGV4dEJhc2VsaW5lT3JpZ2luID0gW3ZpZXcud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46TlNN
YWtlUmVjdCh0ZXh0QmFzZWxpbmVPcmlnaW4ueCwgdGV4dEJhc2VsaW5lT3JpZ2luLnksIDAsIDAp
XS5vcmlnaW47CisKKyAgICBpZiAoY3JlYXRlQW5pbWF0aW9uQ29udHJvbGxlcikgeworI2lmICBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAorICAgICAgICByZXR1cm4g
W2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJv
bGxlckZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0
TG9jYXRpb246dGV4dEJhc2VsaW5lT3JpZ2luIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCld
OworI2Vsc2UKKyAgICAgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorICAgIH0KKworICAgIFtnZXRM
VUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIHNob3dEZWZpbml0aW9uRm9yVGVybTpkaWN0
aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgYXRMb2NhdGlvbjp0ZXh0QmFz
ZWxpbmVPcmlnaW4gb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07CisgICAgcmV0dXJuIG5p
bDsKK30KKwordm9pZCBEaWN0aW9uYXJ5TG9va3VwOjpzaG93UG9wdXAoY29uc3QgRGljdGlvbmFy
eVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbywgTlNWaWV3ICp2aWV3LCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoVGV4dEluZGljYXRvciYpPiB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJh
Y2spCit7CisgICAgc2hvd1BvcHVwT3JDcmVhdGVBbmltYXRpb25Db250cm9sbGVyKGZhbHNlLCBk
aWN0aW9uYXJ5UG9wdXBJbmZvLCB2aWV3LCB0ZXh0SW5kaWNhdG9ySW5zdGFsbGF0aW9uQ2FsbGJh
Y2spOworfQorCit2b2lkIERpY3Rpb25hcnlMb29rdXA6OmhpZGVQb3B1cCgpCit7CisgICAgaWYg
KCFnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpKQorICAgICAgICByZXR1cm47Cisg
ICAgW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgaGlkZURlZmluaXRpb25dOwor
fQorCitQbGF0Zm9ybUFuaW1hdGlvbkNvbnRyb2xsZXIgRGljdGlvbmFyeUxvb2t1cDo6YW5pbWF0
aW9uQ29udHJvbGxlckZvclBvcHVwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25h
cnlQb3B1cEluZm8sIE5TVmlldyAqdmlldywgc3RkOjpmdW5jdGlvbjx2b2lkKFRleHRJbmRpY2F0
b3ImKT4gdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKQoreworICAgIHJldHVybiBz
aG93UG9wdXBPckNyZWF0ZUFuaW1hdGlvbkNvbnRyb2xsZXIodHJ1ZSwgZGljdGlvbmFyeVBvcHVw
SW5mbywgdmlldywgdGV4dEluZGljYXRvckluc3RhbGxhdGlvbkNhbGxiYWNrKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDAwNTU1MzE2MWU0MTMwMzA5
MmU2NDU4NTVmMDJjMjNkZjA1YTAzOTEuLjEyNjlkYTY0MmFhNTU2NTQ2ODBkMDVjYTQzYTkwMDEz
YWEzOWE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0K
QEAgLTEwNzksNyArMTA3OSw3IEBAIFZpc2libGVTZWxlY3Rpb24gRXZlbnRIYW5kbGVyOjpzZWxl
Y3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1cChjCiAgICAgICAgIHJl
dHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBu
aWw7Ci0gICAgaWYgKFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSByYW5nZUZvckRpY3Rpb25hcnlMb29r
dXBBdEhpdFRlc3RSZXN1bHQocmVzdWx0LCAmb3B0aW9ucykpCisgICAgaWYgKFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChyZXN1bHQs
ICZvcHRpb25zKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKnJhbmdlKTsKIAog
ICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggNGJhY2Q1NWZlZTNiZTE5NWZhMzA3NGY0YjM3MDM0MmUxN2I0Y2Y5OS4uMjVk
NWY2OWFiMTU3ZDA3YzUxNzJlOGEyNmMwYzgwYzViNTVhYTdiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMTI2OCw3ICsxMjY4LDcgQEAgUmVmUHRyPFJhbmdlPiBJbnRl
cm5hbHM6OnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oaW50IHgsIGludCB5LCBF
eGNlcHQKICAgICAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGRvY3VtZW50LT5mcmFtZSgp
LT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2lu
dCh4LCB5KSk7CiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gbnVsbHB0cjsKLSAgICByZXR1
cm4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVzdWx0KHJlc3VsdCwgJm9wdGlv
bnMpOworICAgIHJldHVybiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChy
ZXN1bHQsICZvcHRpb25zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHgpOwogICAgIFVOVVNF
RF9QQVJBTSh5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDFmMzhiNjU2N2NkNTUzNzJhMjAxYmFjYzVmYzQ0ZTNlZWMxMjBmMDQuLjll
MDQ2ZGI5YmVkNzg5MzUyMTExYjczYzkzYzE4OWM1NTE1M2NjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAxLDcgKzEwMSw2IEBA
CiAJCTJEMjUzOTY3MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDI1Mzk2NTE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyLm1tICovOyB9OwogCQkyREQ2MzJDMjE5RTVEMUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERDYzMkMwMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5oICovOyB9OwogCQkyREQ2MzJDMzE5RTVEMUYwMDAyRTlDN0IgLyogV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ2MzJDMTE5RTVEMUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIubW0gKi87IH07Ci0JCTJERjA2NEE5MUEyREQ1M0MwMERCQjM1
NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREYwNjRBODFBMkRENTNDMDBEQkIzNTQgLyogRGljdGlvbmFyeVBv
cHVwSW5mby5oICovOyB9OwogCQkzMTJFMkZFNTE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZp
Y2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzEyRTJGRTYxNEU0ODE4MjAw
N0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkUyRkU0MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmlj
YXRpb24ubW0gKi87IH07CiAJCTMxMkUyRkU5MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmlj
YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFs
LmggKi87IH07CkBAIC01NjMsNyArNTYyLDYgQEAKIAkJMkQ4MURBQjMwM0VCMEIyRDAwQTgwMTY2
IC8qIFdlYkZvcm1EZWxlZ2F0ZS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLm9iamM7IHBhdGggPSBXZWJGb3JtRGVsZWdhdGUubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJERDYzMkMwMTlFNUQxRjAw
MDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREQ2MzJDMTE5RTVEMUYwMDAyRTlDN0IgLyogV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRGMDY0QTgxQTJERDUzQzAwREJCMzU0IC8qIERpY3Rpb25h
cnlQb3B1cEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFy
eVBvcHVwSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJFMkZFMzE0RTQ4
MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJFMkZFODE0RTQ4MjE1MDA3Q0NBMTggLyogV2Vi
Tm90aWZpY2F0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzMjEsNyArMTMxOSw2IEBACiAJCQkJRjUyQ0E2QkQwMkRGOUQwRjAxODYzNUNBIC8qIEhUTUwg
Ki8sCiAJCQkJNTFFOTRDMDcwNkMwMkNBMzAwQTlCMDlFIC8qIFBERiAqLywKIAkJCQlBMTBDMUQ3
OTE4MjAzMDE5MDAzNjg4M0EgLyogaW9zICovLAotCQkJCTJERjA2NEE4MUEyREQ1M0MwMERCQjM1
NCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggKi8sCiAJCQkJODM3MzQzNUEwNjI0RUUwRDAwRjNC
Mjg5IC8qIFdlYkFyY2hpdmUuaCAqLywKIAkJCQk4MzczNDM1QjA2MjRFRTBEMDBGM0IyODkgLyog
V2ViQXJjaGl2ZS5tbSAqLywKIAkJCQk0NEJCOEIxMzEyNDFBMDIyMDAxRTNBMjIgLyogV2ViQXJj
aGl2ZUludGVybmFsLmggKi8sCkBAIC0xODQwLDcgKzE4MzcsNiBAQAogCQkJCUExMEMxRDhDMTgy
MDMwNUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3SVBob25lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
Mzk4MTA2RDA4MjRCRjAxMDA4REYwMzggLyogV2ViS2l0RXJyb3JzUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0Q4QkZDRTgxNTUzMTIyNDAwNUFGQjI1IC8qIFdlYktpdEZ1bGxTY3JlZW5M
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMkRGMDY0QTkxQTJERDUzQzAwREJCMzU0IC8q
IERpY3Rpb25hcnlQb3B1cEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDFEMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJLaXRMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAx
RTA4MjRCRjAxMDA4REYwMzggLyogV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQUY1ODk0MEVEQ0NGMTUwMDhEODgzRCAvKiBXZWJLaXRQbHVnaW5BZ2VudC5kZWZz
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L0Rp
Y3Rpb25hcnlQb3B1cEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvRGljdGlvbmFy
eVBvcHVwSW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTU4YzYyY2IxNDky
MWViMjlhYjZlNzA4YzlmZjFiYjYyMGRmZDY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvRGljdGlvbmFyeVBv
cHVwSW5mby5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
ZiBQTEFURk9STShNQUMpCi0KLSNpbXBvcnQgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotCi1AY2xhc3MgTlNBdHRyaWJ1dGVkU3RyaW5nOwotQGNsYXNz
IE5TRGljdGlvbmFyeTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVGV4dEluZGljYXRv
cjsKLX07Ci0KLXN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvIHsKLSAgICBOU1BvaW50IG9yaWdp
bjsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBvcHRpb25zOwotICAgIFJldGFpblB0cjxO
U0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmc7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3I7Ci19OwotCi0jZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYThkYjhl
MDEwNGQxN2Y3OWVkYzk4M2I0OTM4NjU3Y2M4YzY3M2Y0NC4uMzA5ODBkMzBhYTY3ZTJkZWI5ODIx
ZTk3ZDAwNzIyNTBlNTViZDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgi
CiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwu
aCIKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIldlYkFyY2hpdmUu
aCIKICNpbXBvcnQgIldlYkNsaXBWaWV3LmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUNsaWVu
dC5oIgpAQCAtODIsNiArODEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAt
NTY4OSw3ICs1Njg5LDggQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdz
RW5hYmxlZCgpCiAgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBpbmZvOwogICAgIGluZm8uYXR0cmli
dXRlZFN0cmluZyA9IGF0dHJTdHJpbmc7CiAgICAgaW5mby5vcmlnaW4gPSBjb3JlRnJhbWUtPnZp
ZXcoKS0+Y29udGVudHNUb1dpbmRvdyhlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKS5sb2NhdGlvbigp
OwotICAgIGluZm8udGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxl
Y3Rpb25JbkZyYW1lKCpjb3JlRnJhbWUsIFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNo
b3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0LCBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNp
dGlvbjo6Qm91bmNlQW5kQ3Jvc3NmYWRlKTsKKyAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0g
VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoKmNvcmVGcmFtZSwgVGV4
dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQsIFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpKQor
ICAgICAgICBpbmZvLnRleHRJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CiAgICAg
W1tzZWxmIF93ZWJWaWV3XSBfc2hvd0RpY3Rpb25hcnlMb29rdXBQb3B1cDppbmZvXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25D
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tCmluZGV4IDE0NzRiMzU5MzUwNzE5YmE0MmE0N2JlN2FmZWMzOTRlNzA0
MGNmMTMuLjhmZjVlZDE1ODViZjA3NzNhZWZiYjVkZmJiOTRmMzFiYmZlMGFhNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KQEAgLTMwLDcgKzMwLDYgQEAKICNpbXBvcnQgIkRPTUVsZW1lbnRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01SYW5nZUludGVy
bmFsLmgiCi0jaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJXZWJFbGVt
ZW50RGljdGlvbmFyeS5oIgogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V2ViSFRNTFZpZXcuaCIKQEAgLTQ1NCw2ICs0NTMsNyBAQCBzdGF0aWMgSW50UmVjdCBlbGVtZW50
Qm91bmRpbmdCb3hJbldpbmRvd0Nvb3JkaW5hdGVzRnJvbU5vZGUoTm9kZSogbm9kZSkKICAgICBp
ZiAoIWxpbmtSYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFRleHRJ
bmRpY2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbGlu
a1JhbmdlLCBUZXh0SW5kaWNhdG9yT3B0aW9uRGVmYXVsdCwgVGV4dEluZGljYXRvclByZXNlbnRh
dGlvblRyYW5zaXRpb246OkZhZGVJbik7CisgICAgaW5kaWNhdG9yLT5kYXRhKCkudGV4dEJvdW5k
aW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IFtfd2ViVmlldyBfY29udmVydFJlY3RGcm9t
Um9vdFZpZXc6aW5kaWNhdG9yLT50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCldOwogCiAgICAgX2N1cnJlbnRBY3Rpb25Db250ZXh0ID0gW2FjdGlvbkNvbnRleHQgY29udGV4
dEZvclZpZXc6X3dlYlZpZXcgYWx0TW9kZTpZRVMgaW50ZXJhY3Rpb25TdGFydGVkSGFuZGxlcjpe
KCkgewogICAgIH0gaW50ZXJhY3Rpb25DaGFuZ2VkSGFuZGxlcjpeKCkgewpAQCAtNTEwLDcgKzUx
MCw5IEBAIHN0YXRpYyBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZShGcmFtZSogZnJhbWUsIFJhbmdlJiByYW5nCiAgICAgfV07CiAKICAgICBwb3B1cEluZm8u
YXR0cmlidXRlZFN0cmluZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZy5nZXQoKTsKLSAgICBw
b3B1cEluZm8udGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZShy
YW5nZSwgVGV4dEluZGljYXRvck9wdGlvbkRlZmF1bHQsIHByZXNlbnRhdGlvblRyYW5zaXRpb24p
OworCisgICAgaWYgKGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdp
dGhSYW5nZShyYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbkRlZmF1bHQsIHByZXNlbnRhdGlvblRy
YW5zaXRpb24pKQorICAgICAgICBwb3B1cEluZm8udGV4dEluZGljYXRvciA9IHRleHRJbmRpY2F0
b3ItPmRhdGEoKTsKICAgICByZXR1cm4gcG9wdXBJbmZvOwogfQogCkBAIC01MjgsNyArNTMwLDcg
QEAgc3RhdGljIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdl
KEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhbmcKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5T
RGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKLSAgICBSZWZQdHI8UmFuZ2U+IGRpY3Rpb25hcnlS
YW5nZSA9IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChfaGl0VGVzdFJl
c3VsdCwgJm9wdGlvbnMpOworICAgIFJlZlB0cjxSYW5nZT4gZGljdGlvbmFyeVJhbmdlID0gRGlj
dGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoX2hpdFRlc3RSZXN1bHQsICZvcHRp
b25zKTsKICAgICBpZiAoIWRpY3Rpb25hcnlSYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDhmMTVkYjU1ODNlZTVkOGZkMWZi
OGEwZDg0YzczZmZhYjFlZTllYzAuLmMwODk4NGJiODM4NmMwNzUzM2ZhOTAzNGVlNDUyM2I3MzE3
ZTYwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTM1LDcgKzM1LDYg
QEAKICNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgotI2ltcG9ydCAiRGljdGlvbmFy
eVBvcHVwSW5mby5oIgogI2ltcG9ydCAiU3RvcmFnZVRocmVhZC5oIgogI2ltcG9ydCAiV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlSW50ZXJu
YWwuaCIKQEAgLTEyMyw2ICsxMjIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5h
Z2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTI5NSw3ICsyOTUsNiBAQAogCiAj
aWYgUExBVEZPUk0oTUFDKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKExvb2t1cCwgTFVO
b3RpZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKExvb2t1cCwgTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0
b3IsIE5TU3RyaW5nICopCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1MpCkBAIC04NTUxLDI5
ICs4NTUwLDE0IEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAg
ICBpZiAoIWRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZykKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIGlmIChjYW5Mb2FkTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1J
bmRpY2F0b3IoKSAmJiBjYW5Mb2FkTFVOb3RpZmljYXRpb25Qb3BvdmVyV2lsbENsb3NlKCkgJiYg
ZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yKSB7Ci0gICAgICAgIGlmICghX3ByaXZh
dGUtPmhhc0luaXRpYWxpemVkTG9va3VwT2JzZXJ2ZXIpIHsKLSAgICAgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoX2RpY3Rpb25hcnlMb29rdXBQb3BvdmVyV2lsbENsb3NlOikgbmFtZTpnZXRMVU5v
dGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2UoKSBvYmplY3Q6bmlsXTsKLSAgICAgICAgICAgIF9w
cml2YXRlLT5oYXNJbml0aWFsaXplZExvb2t1cE9ic2VydmVyID0gWUVTOwotICAgICAgICB9Ci0K
LSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG11dGFibGVPcHRpb25zID0g
YWRvcHROUyhbZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zIG11dGFibGVDb3B5XSk7Ci0gICAg
ICAgIGlmICghbXV0YWJsZU9wdGlvbnMpCi0gICAgICAgICAgICBtdXRhYmxlT3B0aW9ucyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFttdXRh
YmxlT3B0aW9ucyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlzYWJsZVNl
YXJjaFRlcm1JbmRpY2F0b3IoKV07Ci0gICAgICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNhdG9yOipk
aWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOlRleHRJbmRpY2F0
b3JXaW5kb3dMaWZldGltZTo6UGVybWFuZW50XTsKLQotICAgICAgICBpZiAoW2dldExVTG9va3Vw
RGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihsb29r
dXBBbmltYXRpb25Db250cm9sbGVyRm9yVGVybTpyZWxhdGl2ZVRvUmVjdDpvZlZpZXc6b3B0aW9u
czopXSkgewotICAgICAgICAgICAgRmxvYXRSZWN0IGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGlu
YXRlcyA9IGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci0+dGV4dFJlY3RzSW5Cb3Vu
ZGluZ1JlY3RDb29yZGluYXRlcygpWzBdOwotICAgICAgICAgICAgZmlyc3RUZXh0UmVjdEluVmll
d0Nvb3JkaW5hdGVzLm1vdmVCeShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3ItPnRl
eHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKS5sb2NhdGlvbigpKTsKLSAgICAg
ICAgICAgIHJldHVybiBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBsb29rdXBB
bmltYXRpb25Db250cm9sbGVyRm9yVGVybTpkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRT
dHJpbmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3
OmZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlc10gb2ZWaWV3OnNlbGYgb3B0aW9uczptdXRh
YmxlT3B0aW9ucy5nZXQoKV07Ci0gICAgICAgIH0KLSAgICB9CisgICAgW3NlbGYgX3ByZXBhcmVG
b3JEaWN0aW9uYXJ5TG9va3VwXTsKIAotICAgIC8vIENvbnZlcnQgdG8gc2NyZWVuIGNvb3JkaW5h
dGVzLgotICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gW3NlbGYud2luZG93IGNvbnZl
cnRSZWN0VG9TY3JlZW46TlNNYWtlUmVjdChkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbi54LCBk
aWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbi55LCAwLCAwKV0ub3JpZ2luOworICAgIERpY3Rpb25h
cnlQb3B1cEluZm8gYWRqdXN0ZWRQb3B1cEluZm8gPSBkaWN0aW9uYXJ5UG9wdXBJbmZvOworICAg
IGFkanVzdGVkUG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcyA9IFtzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290VmlldzphZGp1c3RlZFBv
cHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXNdOwogCi0gICAgcmV0dXJuIFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygpIGxv
b2t1cEFuaW1hdGlvbkNvbnRyb2xsZXJGb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmli
dXRlZFN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOmRp
Y3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5nZXQoKV07CisgICAgcmV0dXJuIChpZDxOU0ltbWVk
aWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXI+KURpY3Rpb25hcnlMb29rdXA6OmFuaW1hdGlv
bkNvbnRyb2xsZXJGb3JQb3B1cChhZGp1c3RlZFBvcHVwSW5mbywgc2VsZiwgW3NlbGZdKFRleHRJ
bmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpIHsKKyAgICAgICAgW3NlbGYgX3NldFRleHRJbmRpY2F0
b3I6dGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1l
OjpQZXJtYW5lbnRdOworICAgIH0pOwogfQogI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAKQEAgLTg1OTcsNyArODU4MSw3IEBAIGJvb2wgTGF5ZXJG
bHVzaENvbnRyb2xsZXI6OmZsdXNoTGF5ZXJzKCkKICAgICBpZiAoIV9wcml2YXRlLT50ZXh0SW5k
aWNhdG9yV2luZG93KQogICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IHN0
ZDo6bWFrZV91bmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CiAKLSAgICBOU1JlY3Qg
dGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpb
c2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdS
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCldIHRvVmlldzpuaWxdOworICAgIE5TUmVjdCB0ZXh0
Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OnRleHRJ
bmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIHRvVmlldzpu
aWxdOwogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9IFtz
ZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOnRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nv
b3JkaW5hdGVzXTsKICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dElu
ZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5T
Y3JlZW5Db29yZGluYXRlcyksIGxpZmV0aW1lKTsKIH0KQEAgLTg2MTUsMzUgKzg1OTksMzAgQEAg
Ym9vbCBMYXllckZsdXNoQ29udHJvbGxlcjo6Zmx1c2hMYXllcnMoKQogICAgICAgICBfcHJpdmF0
ZS0+dGV4dEluZGljYXRvcldpbmRvdy0+c2V0QW5pbWF0aW9uUHJvZ3Jlc3MocHJvZ3Jlc3MpOwog
fQogCi0tICh2b2lkKV9zaG93RGljdGlvbmFyeUxvb2t1cFBvcHVwOihjb25zdCBEaWN0aW9uYXJ5
UG9wdXBJbmZvJilkaWN0aW9uYXJ5UG9wdXBJbmZvCistICh2b2lkKV9wcmVwYXJlRm9yRGljdGlv
bmFyeUxvb2t1cAogewotICAgIGlmICghZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3Ry
aW5nKQorICAgIGlmIChfcHJpdmF0ZS0+aGFzSW5pdGlhbGl6ZWRMb29rdXBPYnNlcnZlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNo
VGVybUluZGljYXRvcigpICYmIGNhbkxvYWRMVU5vdGlmaWNhdGlvblBvcG92ZXJXaWxsQ2xvc2Uo
KSAmJiBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIHsKLSAgICAgICAgaWYgKCFf
cHJpdmF0ZS0+aGFzSW5pdGlhbGl6ZWRMb29rdXBPYnNlcnZlcikgewotICAgICAgICAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihfZGljdGlvbmFyeUxvb2t1cFBvcG92ZXJXaWxsQ2xvc2U6KSBuYW1lOmdl
dExVTm90aWZpY2F0aW9uUG9wb3ZlcldpbGxDbG9zZSgpIG9iamVjdDpuaWxdOwotICAgICAgICAg
ICAgX3ByaXZhdGUtPmhhc0luaXRpYWxpemVkTG9va3VwT2JzZXJ2ZXIgPSBZRVM7Ci0gICAgICAg
IH0KKyAgICBfcHJpdmF0ZS0+aGFzSW5pdGlhbGl6ZWRMb29rdXBPYnNlcnZlciA9IFlFUzsKIAot
ICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbXV0YWJsZU9wdGlvbnMgPSBh
ZG9wdE5TKFtkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMgbXV0YWJsZUNvcHldKTsKLSAgICAg
ICAgaWYgKCFtdXRhYmxlT3B0aW9ucykKLSAgICAgICAgICAgIG11dGFibGVPcHRpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW211dGFi
bGVPcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpnZXRMVVRlcm1PcHRpb25EaXNhYmxlU2Vh
cmNoVGVybUluZGljYXRvcigpXTsKLSAgICAgICAgW3NlbGYgX3NldFRleHRJbmRpY2F0b3I6KmRp
Y3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6VGV4dEluZGljYXRv
cldpbmRvd0xpZmV0aW1lOjpQZXJtYW5lbnRdOworICAgIGlmIChjYW5Mb2FkTFVOb3RpZmljYXRp
b25Qb3BvdmVyV2lsbENsb3NlKCkpCisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2RpY3Rpb25h
cnlMb29rdXBQb3BvdmVyV2lsbENsb3NlOikgbmFtZTpnZXRMVU5vdGlmaWNhdGlvblBvcG92ZXJX
aWxsQ2xvc2UoKSBvYmplY3Q6bmlsXTsKK30KIAotICAgICAgICBpZiAoW2dldExVTG9va3VwRGVm
aW5pdGlvbk1vZHVsZUNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG93RGVm
aW5pdGlvbkZvclRlcm06cmVsYXRpdmVUb1JlY3Q6b2ZWaWV3Om9wdGlvbnM6KV0pIHsKLSAgICAg
ICAgICAgIEZsb2F0UmVjdCBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSBkaWN0aW9u
YXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3ItPnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRp
bmF0ZXMoKVswXTsKLSAgICAgICAgICAgIGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcy5t
b3ZlQnkoZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLT50ZXh0Qm91bmRpbmdSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBbZ2V0TFVM
b29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBzaG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlv
bmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLmdldCgpIHJlbGF0aXZlVG9SZWN0OltzZWxm
IF9jb252ZXJ0UmVjdEZyb21Sb290VmlldzpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXNd
IG9mVmlldzpzZWxmIG9wdGlvbnM6bXV0YWJsZU9wdGlvbnMuZ2V0KCldOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgfQorLSAodm9pZClfc2hvd0RpY3Rpb25hcnlMb29rdXBQ
b3B1cDooY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpZGljdGlvbmFyeVBvcHVwSW5mbworewor
ICAgIGlmICghZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBDb252ZXJ0IHRvIHNjcmVlbiBjb29yZGluYXRlcy4KLSAgICBOU1Bv
aW50IHRleHRCYXNlbGluZU9yaWdpbiA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVu
Ok5TTWFrZVJlY3QoZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4ueCwgZGljdGlvbmFyeVBvcHVw
SW5mby5vcmlnaW4ueSwgMCwgMCldLm9yaWdpbjsKKyAgICBbc2VsZiBfcHJlcGFyZUZvckRpY3Rp
b25hcnlMb29rdXBdOwogCi0gICAgW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkg
c2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmlu
Zy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOmRpY3Rpb25hcnlQ
b3B1cEluZm8ub3B0aW9ucy5nZXQoKV07CisgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBhZGp1c3Rl
ZFBvcHVwSW5mbyA9IGRpY3Rpb25hcnlQb3B1cEluZm87CisgICAgYWRqdXN0ZWRQb3B1cEluZm8u
dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gW3Nl
bGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OmFkanVzdGVkUG9wdXBJbmZvLnRleHRJbmRpY2F0
b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlc107CisKKyAgICBEaWN0aW9u
YXJ5TG9va3VwOjpzaG93UG9wdXAoYWRqdXN0ZWRQb3B1cEluZm8sIHNlbGYsIFtzZWxmXShUZXh0
SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yKSB7CisgICAgICAgIFtzZWxmIF9zZXRUZXh0SW5kaWNh
dG9yOnRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGlt
ZTo6UGVybWFuZW50XTsKKyAgICB9KTsKIH0KIAogLSAodm9pZClfZGljdGlvbmFyeUxvb2t1cFBv
cG92ZXJXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCAyMjBlY2U3ZGI1ZDM2YTEx
MTIwYTQ2YjdmMDU2ZGYyNzFmOWU5MmVhLi44MDU3ZWE3ZDg4MjRkODNlOWQxYWJmNDE3ZjRmYWY5
ZTY3NDE0NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKQEAgLTU4LDkgKzU4LDkgQEAgY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgVGV4dEluZGljYXRv
cjsKIGNsYXNzIFVSTDsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKK3N0cnVjdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvOwogfQogCi1zdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIGNsYXNz
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI7CiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlcjsKIApAQCAtMjY5LDkgKzI2OSw5IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJu
YXRpdmVzOwogLSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooV2ViQ29yZTo6VGV4dEluZGljYXRv
ciYpdGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6KFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5k
b3dMaWZldGltZSlsaWZldGltZTsKIC0gKHZvaWQpX2NsZWFyVGV4dEluZGljYXRvcldpdGhBbmlt
YXRpb246KFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb24pYW5p
bWF0aW9uOwogLSAodm9pZClfc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzOihmbG9h
dClwcm9ncmVzczsKLS0gKHZvaWQpX3Nob3dEaWN0aW9uYXJ5TG9va3VwUG9wdXA6KGNvbnN0IERp
Y3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cEluZm87CistICh2b2lkKV9zaG93RGlj
dGlvbmFyeUxvb2t1cFBvcHVwOihjb25zdCBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvJilk
aWN0aW9uYXJ5UG9wdXBJbmZvOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMDAwCi0tIChpZClfYW5pbWF0aW9uQ29udHJvbGxlckZvckRpY3Rpb25hcnlMb29rdXBQ
b3B1cEluZm86KGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cEluZm87
CistIChpZClfYW5pbWF0aW9uQ29udHJvbGxlckZvckRpY3Rpb25hcnlMb29rdXBQb3B1cEluZm86
KGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKWRpY3Rpb25hcnlQb3B1cEluZm87
CiAtIChXZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyICopX2ltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXI7CiAjZW5kaWYKIC0gKE5TRXZlbnQgKilfcHJlc3N1cmVFdmVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKaW5kZXggZDk4MzkxNDNkOTY4NmIzNGM3NzJhZmFiYmExZjBlYTJhN2RlZjk3ZS4uN2Ew
MTU5YWNhMDIyYWZiZDgzNzI1YWM2OTJkZDhjMDg3MmVhNzhhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQKQEAgLTIxNyw3ICsyMTcsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL0No
aWxkUHJvY2Vzcy5jcHAKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuY3BwCiAgICAgU2hh
cmVkL0NvbnRleHRNZW51Q29udGV4dERhdGEuY3BwCi0gICAgU2hhcmVkL0RpY3Rpb25hcnlQb3B1
cEluZm8uY3BwCiAgICAgU2hhcmVkL0VkaXRvclN0YXRlLmNwcAogICAgIFNoYXJlZC9Gb250SW5m
by5jcHAKICAgICBTaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGY1YTM2ZDZmNzgwYjIzYzk5YTkxMmM2NDUyOWMyOTA4M2Q0ZDA0NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRpY3Rpb25hcnlQ
b3B1cEluZm8uaCIKLQotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgotI2VuZGlmCi0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIERpY3Rpb25hcnlQb3B1cEluZm86OmVuY29kZShJ
UEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG9y
aWdpbjsKLSAgICBlbmNvZGVyIDw8IHRleHRJbmRpY2F0b3I7Ci0KLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIGhhZE9wdGlvbnMgPSBvcHRpb25zOwotICAgIGVuY29kZXIgPDwgaGFkT3B0
aW9uczsKLSAgICBpZiAoaGFkT3B0aW9ucykKLSAgICAgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwg
b3B0aW9ucy5nZXQoKSk7Ci0KLSAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZWRTdHJpbmc7Ci0jZW5k
aWYKLX0KLQotYm9vbCBEaWN0aW9uYXJ5UG9wdXBJbmZvOjpkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIERpY3Rpb25hcnlQb3B1cEluZm8mIHJlc3VsdCkKLXsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50ZXh0SW5kaWNhdG9yKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBoYWRPcHRpb25z
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFkT3B0aW9ucykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoaGFkT3B0aW9ucykgewotICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRl
Y29kZXIsIHJlc3VsdC5vcHRpb25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hdHRyaWJ1dGVkU3RyaW5nKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rp
b25hcnlQb3B1cEluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJ
bmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkM2MwMDZjYzY2MDg1Y2VmZDcy
N2Y1ODBmOGE5ZTBlOGJhNzVmZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAor
KysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIERpY3Rp
b25hcnlQb3B1cEluZm9faAotI2RlZmluZSBEaWN0aW9uYXJ5UG9wdXBJbmZvX2gKLQotI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRv
ci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiQXR0cmlidXRlZFN0cmluZy5o
IgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgSVBDIHsK
LWNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKLWNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKLX0KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvIHsKLSAgICB2b2lk
IGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIERpY3Rpb25hcnlQb3B1cEluZm8mKTsKLQotICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luOwotICAgIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhIHRleHRJbmRpY2F0b3I7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gb3B0aW9uczsKLSAgICBBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRT
dHJpbmc7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
RGljdGlvbmFyeVBvcHVwSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDdhNTg0OTRhODdmMWUwMzM4ZGI1ZGNmMzliNzQ4YTE4
NDIwNWM3YzcuLmZlMjUzYTg1NjEwMGYxNjRjNDEzZDM0OGE2ZmYzNTc2NzZkY2NjYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlRGV0YWlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJu
YXRpdmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbi5oPgpAQCAtNzMsNiArNzQsNyBAQAog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgorI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzTWFjLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTIyMDMsNCArMjIwNSw1MiBAQCBib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1Rh
cmdldENvbnRleHQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLAogfQogI2VuZGlm
CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxEaWN0aW9uYXJ5UG9wdXBJbmZvPjo6ZW5jb2RlKElQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBpbmZv
KQoreworICAgIGVuY29kZXIgPDwgaW5mby5vcmlnaW47CisgICAgZW5jb2RlciA8PCBpbmZvLnRl
eHRJbmRpY2F0b3I7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBib29sIGhhZE9wdGlvbnMg
PSBpbmZvLm9wdGlvbnM7CisgICAgZW5jb2RlciA8PCBoYWRPcHRpb25zOworICAgIGlmIChoYWRP
cHRpb25zKQorICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBpbmZvLm9wdGlvbnMuZ2V0KCkp
OworCisgICAgYm9vbCBoYWRBdHRyaWJ1dGVkU3RyaW5nID0gaW5mby5hdHRyaWJ1dGVkU3RyaW5n
OworICAgIGVuY29kZXIgPDwgaGFkQXR0cmlidXRlZFN0cmluZzsKKyAgICBpZiAoaGFkQXR0cmli
dXRlZFN0cmluZykKKyAgICAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgaW5mby5hdHRyaWJ1dGVk
U3RyaW5nLmdldCgpKTsKKyNlbmRpZgorfQorCitib29sIEFyZ3VtZW50Q29kZXI8RGljdGlvbmFy
eVBvcHVwSW5mbz46OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgRGljdGlv
bmFyeVBvcHVwSW5mbyYgcmVzdWx0KQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm9yaWdpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnRleHRJbmRpY2F0b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBib29sIGhhZE9wdGlvbnM7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShoYWRPcHRpb25zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChoYWRPcHRp
b25zKSB7CisgICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0Lm9wdGlvbnMp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQu
b3B0aW9ucyA9IG51bGxwdHI7CisKKyAgICBib29sIGhhZEF0dHJpYnV0ZWRTdHJpbmc7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYWRBdHRyaWJ1dGVkU3RyaW5nKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChoYWRBdHRyaWJ1dGVkU3RyaW5nKSB7CisgICAgICAgIGlmICghSVBD
OjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LmF0dHJpYnV0ZWRTdHJpbmcpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQuYXR0cmlidXRlZFN0cmlu
ZyA9IG51bGxwdHI7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggZjVmMTU1MTJmNDcxZmEzNTFkMjVkYTEyOTI0NmYyZTQ0YWQ1Y2U3MC4uY2Y1NDkzYjYw
NzJmNjVmNDI4ZGVlNTg2Y2E4OWRiN2ZlNzdmNTMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzEsNiArNzEsNyBAQCBjbGFzcyBVUkw7
CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgQ29va2llOwogc3RydWN0IERp
Y3RhdGlvbkFsdGVybmF0aXZlOworc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiBzdHJ1Y3Qg
RmlsZUNob29zZXJTZXR0aW5nczsKIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOwogc3RydWN0
IElEQkdldFJlc3VsdDsKQEAgLTQ3Myw2ICs0NzQsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4gewogICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYpOwog
fTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEaWN0aW9uYXJ5
UG9wdXBJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNv
bnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpOworfTsK
KwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0PiB7CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHQuaAppbmRleCBiODI2MTFmMjU1MTJjMTVlZWI1MzEyNjkzNjU0ZjYxMTdmMTM4OTZi
Li40ZDg3MWEzOGE0MjMzOTllZjhiNDNkMjViMzg2ZWMxZjMxNjQxN2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmgKQEAgLTIxLDggKzIxLDggQEAKICNkZWZpbmUg
V2ViSGl0VGVzdFJlc3VsdF9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJE
aWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9h
dFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlT3ZlcmxheS5oPgpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiBkZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9yOwogICAg
ICAgICBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlJRCBkZXRlY3RlZERhdGFPcmln
aW5hdGluZ1BhZ2VPdmVybGF5OwogCi0gICAgICAgIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlv
bmFyeVBvcHVwSW5mbzsKKyAgICAgICAgV2ViQ29yZTo6RGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0
aW9uYXJ5UG9wdXBJbmZvOwogCiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
PiBsaW5rVGV4dEluZGljYXRvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9Bcmd1bWVudENvZGVyc01hYy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1
bWVudENvZGVyc01hYy5oCmluZGV4IDE3NDgwNTFmM2U1Y2NmZGZlYjJjNGRlNTY5M2ZhMWQyYzBj
NTJmNGUuLjRlMmRhNzYxOTMxNTNlZDhkODA5ZDE4N2UwNTIzMTVjOWI3MWY3YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLmgKQEAgLTI4LDYgKzI4
LDE2IEBACiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKK09CSkNfQ0xBU1MgTlNBcnJh
eTsKK09CSkNfQ0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOworT0JKQ19DTEFTUyBOU0NvbG9yOwor
T0JKQ19DTEFTUyBOU0RhdGE7CitPQkpDX0NMQVNTIE5TRGF0ZTsKK09CSkNfQ0xBU1MgTlNEaWN0
aW9uYXJ5OworT0JKQ19DTEFTUyBOU0ZvbnQ7CitPQkpDX0NMQVNTIE5TTnVtYmVyOworT0JKQ19D
TEFTUyBOU1N0cmluZzsKKwogbmFtZXNwYWNlIElQQyB7CiAKIGNsYXNzIEFyZ3VtZW50RW5jb2Rl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBmZjI4
MzNiM2IyOTdlOTNkODA0ZGZiZDEyYjNiMmI2MzliNjA4ZGM1Li5jOWQ2OTk3NGU2OTViZTgwZDFj
NzhiMGZkYzYwYmM1YjQ0MDgzYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCkBAIC04Myw2ICs4Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0
Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RGF0YURldGVjdG9yc1NQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Ry
YWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtNDA4Myw5ICs0MDg0
LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0
cmluZyAqcGF0aCkKIAogKyAodm9pZCloaWRlV29yZERlZmluaXRpb25XaW5kb3cKIHsKLSAgICBp
ZiAoIWdldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBoaWRlRGVmaW5pdGlvbl07
CisgICAgRGljdGlvbmFyeUxvb2t1cDo6aGlkZVBvcHVwKCk7CiB9CiAKIC0gKE5TU2l6ZSltaW5p
bXVtU2l6ZUZvckF1dG9MYXlvdXQKQEAgLTQ2NzYsOCArNDY3NSw3IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgICAg
IHx8IFtfZGF0YS0+X2ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgaGFzQWN0aXZlSW1tZWRpYXRl
QWN0aW9uXQogI2VuZGlmCiAgICAgICAgICkgewotICAgICAgICBpZiAoQ2xhc3MgbG9va3VwRGVm
aW5pdGlvbk1vZHVsZUNsYXNzID0gZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSkK
LSAgICAgICAgICAgIFtsb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MgaGlkZURlZmluaXRpb25d
OworICAgICAgICBEaWN0aW9uYXJ5TG9va3VwOjpoaWRlUG9wdXAoKTsKIAogI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAgICAgIEREQWN0aW9uc01hbmFn
ZXIgKmFjdGlvbnNNYW5hZ2VyID0gW2dldEREQWN0aW9uc01hbmFnZXJDbGFzcygpIHNoYXJlZE1h
bmFnZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggZTY4N2ZkYTVi
NmE4MWU4MTdjZGQ3YWY1MGJhOWEyZDg2NDNkZDVhMS4uMjUxMjkwMDE4NjliZThiMTQ3YWZjMTg0
NWYxMzIyYjg3OGY2ZjEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFs
IHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21w
bGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0Zv
Y3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0
ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgUGx1Z2luQ29tcGxl
eFRleHRJbnB1dFN0YXRlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFdlYkNvcmU6OkRpY3Rpb25hcnlQ
b3B1cEluZm8mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb250ZW50UmVsYXRpdmVD
aGlsZFdpbmRvd3MoYm9vbCB3aXRoQW5pbWF0aW9uID0gdHJ1ZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5n
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggM2IxYzczYTY1NzY5YTUyYmE5ZjBjNjRkNzZiNGZkMjky
Mjk1OTU4Yi4uMTg5MmQ3OWU5MzMxMTE2ZTdmMDNhNDQ3NWUwZDIyM2ZlZTBmMjg4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU1LDYgKzE1NSw3IEBAIGNs
YXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CitzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5m
bzsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwogc3RydWN0IFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZTsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CkBAIC0yMDEsNyArMjAyLDYgQEAg
Y2xhc3MgV2ViV2hlZWxFdmVudDsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBzdHJ1Y3QgQXR0
cmlidXRlZFN0cmluZzsKIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKLXN0cnVjdCBEaWN0aW9uYXJ5
UG9wdXBJbmZvOwogc3RydWN0IEVkaXRpbmdSYW5nZTsKIHN0cnVjdCBFZGl0b3JTdGF0ZTsKIHN0
cnVjdCBQbGF0Zm9ybVBvcHVwTWVudURhdGE7CkBAIC0xMjk1LDcgKzEyOTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2VhcmNoVGhlV2ViKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gRGljdGlv
bmFyeS4KLSAgICB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25h
cnlQb3B1cEluZm8mKTsKKyAgICB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0
IFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8mKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZTJjMWI5ZGUzNzM0OGQwMDM4MDM2MWY3NDQwZWFlYWFjNTU4ZDQyMC4uZDhk
OTFiMWI4NWNhYjVjZGU5OTcwYTRiMzBmZDRmNzRjODc0YTM2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMDgsNyArMzA4
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICMgRGljdGlvbmFyeSBzdXBwb3J0LgotICAgIERpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
KHN0cnVjdCBXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbykK
KyAgICBEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChzdHJ1Y3QgV2ViQ29yZTo6RGljdGlvbmFy
eVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogCiAgICAgIyBLZXlib2FyZCBpbnB1dCBz
dXBwb3J0IG1lc3NhZ2VzCiAgICAgRXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoU3RyaW5n
IHNlbGVjdG9yKSAtPiAoYm9vbCBoYW5kbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDNkMTgyNTI0YjcxNDBhYzc0YmVmNzgwZmRiZWE0
MDg3ZjA5OGI4MTQuLjFjZDk5NzA0NmIwYzVmZjU2ODhhYzg3ZmQ3OTk2MDEzYWIxZjc3OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE0
NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIG1ha2VGaXJzdFJlc3Bv
bmRlcigpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFdlYkNvcmU6OkRpY3Rp
b25hcnlQb3B1cEluZm8mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvbnRl
bnRSZWxhdGl2ZUNoaWxkV2luZG93cyhib29sIHdpdGhBbmltYXRpb24gPSB0cnVlKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggYjFkNTY4OWRhNDRkYWE0ZmQ0OTdhOWJmZTMyYTU5
MzdlYzhjOTg1Yi4uNzliMDBmNzJkZGE0ZmVkZWNiYjgwZGZmMTAzMmViOTM2NDIwYjhkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0y
OCwxMCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJBdHRyaWJ1dGVk
U3RyaW5nLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVy
ZW5jZS5oIgotI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiRG93bmxv
YWRQcm94eS5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2ltcG9ydCAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgpAQCAtNTMsMTEgKzUxLDExIEBACiAjaW1wb3J0IDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9CaXRt
YXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTG9v
a3VwU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+
CkBAIC04NSw4ICs4Myw2IEBACiBAZW5kCiAjZW5kaWYKIAotU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKExvb2t1cCwgTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IsIE5T
U3RyaW5nICopCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApAQCAtNTg1LDMyICs1ODEsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UGx1
Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW4KIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKIHsKLSAgICBpZiAoIWdldExV
TG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBtdXRhYmxlT3B0aW9ucyA9IGFkb3B0TlMoWyhO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UG9wdXBJbmZvLm9wdGlvbnMuZ2V0KCkgbXV0YWJsZUNv
cHldKTsKLQogICAgIFttX3drVmlldyBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBdOwogCi0g
ICAgaWYgKGNhbkxvYWRMVVRlcm1PcHRpb25EaXNhYmxlU2VhcmNoVGVybUluZGljYXRvcigpICYm
IGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvci5jb250ZW50SW1hZ2UpIHsKLSAgICAg
ICAgW21fd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOlRleHRJbmRpY2F0b3I6OmNyZWF0ZShkaWN0
aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9y
V2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07Ci0gICAgICAgIFttdXRhYmxlT3B0aW9ucyBzZXRP
YmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0
b3IoKV07Ci0KLSAgICAgICAgaWYgKFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1bGVDbGFzcygp
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvd0RlZmluaXRpb25Gb3JUZXJtOnJlbGF0
aXZlVG9SZWN0Om9mVmlldzpvcHRpb25zOildKSB7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgZmly
c3RUZXh0UmVjdEluVmlld0Nvb3JkaW5hdGVzID0gZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5k
aWNhdG9yLnRleHRSZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXNbMF07Ci0gICAgICAgICAg
ICBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMubW92ZUJ5KGRpY3Rpb25hcnlQb3B1cElu
Zm8udGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLmxv
Y2F0aW9uKCkpOwotICAgICAgICAgICAgW2dldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNz
KCkgc2hvd0RlZmluaXRpb25Gb3JUZXJtOmRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0
cmluZy5zdHJpbmcuZ2V0KCkgcmVsYXRpdmVUb1JlY3Q6Zmlyc3RUZXh0UmVjdEluVmlld0Nvb3Jk
aW5hdGVzIG9mVmlldzptX3drVmlldyBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE5TUG9pbnQgdGV4dEJh
c2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW47Ci0KLSAgICAvLyBDb252
ZXJ0IHRvIHNjcmVlbiBjb29yZGluYXRlcy4KLSAgICB0ZXh0QmFzZWxpbmVPcmlnaW4gPSBbbV93
a1ZpZXcgY29udmVydFBvaW50OnRleHRCYXNlbGluZU9yaWdpbiB0b1ZpZXc6bmlsXTsKLSAgICB0
ZXh0QmFzZWxpbmVPcmlnaW4gPSBbbV93a1ZpZXcud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46
TlNNYWtlUmVjdCh0ZXh0QmFzZWxpbmVPcmlnaW4ueCwgdGV4dEJhc2VsaW5lT3JpZ2luLnksIDAs
IDApXS5vcmlnaW47Ci0KLSAgICBbZ2V0TFVMb29rdXBEZWZpbml0aW9uTW9kdWxlQ2xhc3MoKSBz
aG93RGVmaW5pdGlvbkZvclRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5n
LnN0cmluZy5nZXQoKSBhdExvY2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFi
bGVPcHRpb25zLmdldCgpXTsKKyAgICBEaWN0aW9uYXJ5TG9va3VwOjpzaG93UG9wdXAoZGljdGlv
bmFyeVBvcHVwSW5mbywgbV93a1ZpZXcsIFt0aGlzXShUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNh
dG9yKSB7CisgICAgICAgIFttX3drVmlldyBfc2V0VGV4dEluZGljYXRvcjp0ZXh0SW5kaWNhdG9y
IHdpdGhMaWZldGltZTpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07Cisg
ICAgfSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpc21pc3NDb250ZW50UmVsYXRpdmVD
aGlsZFdpbmRvd3MoYm9vbCB3aXRoQW5pbWF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRl
eCA3ZTQ4MzMyNWIwNjkxMGY4MDc3MjU1ODhhM2U4NzFiZWQyNGZlZDI5Li5lZDQwZmVhMDQ5MDVi
YmU5OTZmMDFmNWZjNzA5YzQyMjBkOTc2ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAt
MzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzU1BJLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUv
R2VvbWV0cnlVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9va3VwU1BJLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL05TTWVudVNQSS5oPgpAQCAtNDYsNyArNDcsNiBAQAogCiBTT0ZUX0xJTktf
RlJBTUVXT1JLX0lOX1VNQlJFTExBKFF1YXJ0eiwgUXVpY2tMb29rVUkpCiBTT0ZUX0xJTktfQ0xB
U1MoUXVpY2tMb29rVUksIFFMUHJldmlld01lbnVJdGVtKQotU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKExvb2t1cCwgTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRpY2F0b3IsIE5T
U3RyaW5nICopCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTQ2MSwzMyArNDYxLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAgICAg
aWYgKF9zdGF0ZSAhPSBJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6UmVhZHkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBpZiAoIWdldExVTG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQ
b3B1cEluZm8gPSBfaGl0VGVzdFJlc3VsdERhdGEuZGljdGlvbmFyeVBvcHVwSW5mbzsKLSAgICBp
ZiAoIWRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5zdHJpbmcpCisgICAgaWYg
KCFkaWN0aW9uYXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICBbX3drVmlldyBfcHJlcGFyZUZvckRpY3Rpb25hcnlMb29rdXBdOwogCi0gICAg
UmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG11dGFibGVPcHRpb25zID0gYWRvcHROUyhb
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucy5nZXQoKSBtdXRhYmxl
Q29weV0pOwotICAgIGlmIChjYW5Mb2FkTFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRlcm1JbmRp
Y2F0b3IoKSAmJiBkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IuY29udGVudEltYWdl
KSB7Ci0gICAgICAgIFtfd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOlRleHRJbmRpY2F0b3I6OmNy
ZWF0ZShkaWN0aW9uYXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IpIHdpdGhMaWZldGltZTpUZXh0
SW5kaWNhdG9yV2luZG93TGlmZXRpbWU6OlBlcm1hbmVudF07Ci0gICAgICAgIFttdXRhYmxlT3B0
aW9ucyBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6Z2V0TFVUZXJtT3B0aW9uRGlzYWJsZVNlYXJjaFRl
cm1JbmRpY2F0b3IoKV07Ci0KLSAgICAgICAgaWYgKFtnZXRMVUxvb2t1cERlZmluaXRpb25Nb2R1
bGVDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobG9va3VwQW5pbWF0aW9uQ29u
dHJvbGxlckZvclRlcm06cmVsYXRpdmVUb1JlY3Q6b2ZWaWV3Om9wdGlvbnM6KV0pIHsKLSAgICAg
ICAgICAgIEZsb2F0UmVjdCBmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSBkaWN0aW9u
YXJ5UG9wdXBJbmZvLnRleHRJbmRpY2F0b3IudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGlu
YXRlc1swXTsKLSAgICAgICAgICAgIGZpcnN0VGV4dFJlY3RJblZpZXdDb29yZGluYXRlcy5tb3Zl
QnkoZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gW2dldExV
TG9va3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZv
clRlcm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSBy
ZWxhdGl2ZVRvUmVjdDpmaXJzdFRleHRSZWN0SW5WaWV3Q29vcmRpbmF0ZXMgb2ZWaWV3Ol93a1Zp
ZXcgb3B0aW9uczptdXRhYmxlT3B0aW9ucy5nZXQoKV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyBDb252ZXJ0IGJhc2VsaW5lIHRvIHNjcmVlbiBjb29yZGluYXRlcy4KLSAgICBOU1BvaW50
IHRleHRCYXNlbGluZU9yaWdpbiA9IGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luOwotICAgIHRl
eHRCYXNlbGluZU9yaWdpbiA9IFtfd2tWaWV3IGNvbnZlcnRQb2ludDp0ZXh0QmFzZWxpbmVPcmln
aW4gdG9WaWV3Om5pbF07Ci0gICAgdGV4dEJhc2VsaW5lT3JpZ2luID0gW193a1ZpZXcud2luZG93
IGNvbnZlcnRSZWN0VG9TY3JlZW46TlNNYWtlUmVjdCh0ZXh0QmFzZWxpbmVPcmlnaW4ueCwgdGV4
dEJhc2VsaW5lT3JpZ2luLnksIDAsIDApXS5vcmlnaW47Ci0KLSAgICByZXR1cm4gW2dldExVTG9v
a3VwRGVmaW5pdGlvbk1vZHVsZUNsYXNzKCkgbG9va3VwQW5pbWF0aW9uQ29udHJvbGxlckZvclRl
cm06ZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSBhdExv
Y2F0aW9uOnRleHRCYXNlbGluZU9yaWdpbiBvcHRpb25zOm11dGFibGVPcHRpb25zLmdldCgpXTsK
KyAgICByZXR1cm4gKGlkPE5TSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlcj4pRGlj
dGlvbmFyeUxvb2t1cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKGRpY3Rpb25hcnlQb3B1
cEluZm8sIF93a1ZpZXcsIFtzZWxmXShUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yKSB7Cisg
ICAgICAgIFtfd2tWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOnRleHRJbmRpY2F0b3Igd2l0aExpZmV0
aW1lOlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZTo6UGVybWFuZW50XTsKKyAgICB9KTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQppbmRleCAzOTRlZWFmMTMwNjYwNzlkZDQzZjAxOTQ3ZTkwN2ZhNTI5MGIyMjNmLi5iNmZi
Y2JmZjcxOGFhMDM3Mzg5OWEzODA5YTU4MzZiOWRkYWE1MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzIsNyArMzIsNiBAQAog
I2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIK
ICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8u
aCIKICNpbXBvcnQgIkVkaXRpbmdSYW5nZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUuaCIKICNp
bXBvcnQgIk1lbnVVdGlsaXRpZXMuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbXBvcnQgIldlYlBh
Z2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlM
b29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOGQ0ZGY0NzA1NTE4ZGE4ZDZkYTU1ZmMyNjcwOWUxNDg0MTI5NDAwNC4u
Y2MxMTczZmY2YzI4NzMzNGE2NGE5NDU1ZTIxNzZiNjZmNzhhNTliNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5NCw4ICsx
NTk0LDYgQEAKIAkJQkNFNDY5NzkxMjE0RjJCNDAwMEI5OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQ
cm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0U0Njk3ODEyMTRGMkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCAqLzsg
fTsKIAkJQkNFODFEOEMxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDhBMTMxOUY3RUYwMDI0
MTkxMCAvKiBGb250SW5mby5jcHAgKi87IH07CiAJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAv
KiBGb250SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNFODFEOEIxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggKi87IH07Ci0JCUJDRTgx
RDk4MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDk2MTMxQUUwMjAwMDI0
MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCAqLzsgfTsKLQkJQkNFODFEOTkxMzFBRTAy
MTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDk3MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0
aW9uYXJ5UG9wdXBJbmZvLmggKi87IH07CiAJCUJDRUU3QUQwMTI4MTc5ODgwMDk4MjdEQSAvKiBX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTdBQ0MxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJDRUU3QUQxMTI4MTc5ODgw
MDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTdBQ0QxMjgxNzk4ODAwOTgyN0RBIC8qIFdl
YlByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCUJDRUU3REM1MTI4QjY0NUQwMDk4MjdE
QSAvKiBJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFRTdEQzMxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVu
ZGxlQ2xpZW50LmggKi87IH07CkBAIC0zODIxLDggKzM4MTksNiBAQAogCQlCQ0U0Njk3ODEyMTRG
MkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5m
by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250SW5mby5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTgxRDhCMTMxOUY3RUYwMDI0MTkxMCAv
KiBGb250SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250SW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0U4MUQ5NjEzMUFFMDIwMDAyNDE5MTAg
LyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQkNFODFEOTcxMzFBRTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFyeVBvcHVwSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U5QzBDRjE0ODU5NjVEMDBFMzNENjEgLyog
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRTlDMEQwMTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUU3QUIzMTI4
MTcwOTUwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDcwMCw4ICs0Njk2LDYgQEAKIAkJCQkxQTZGOUY4RTExRTEzRUZDMDBE
QjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLywKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYg
LyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAw
MEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLywKLQkJCQlCQ0U4MUQ5NjEzMUFF
MDIwMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgKi8sCi0JCQkJQkNFODFEOTcx
MzFBRTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLywKIAkJCQlDNTE3Mzg4
MDEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLywKIAkJCQkwRkI2
NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8sCiAJCQkJRTEwNUZF
NTMxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oICovLApAQCAtNzYzNyw3ICs3NjMx
LDYgQEAKIAkJCQlDRTFBMEJENDFBNDhFNkM2MDA1NEVGNzQgLyogRGF0YURldGVjdG9yc1VJU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJl
ZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNkMxQTY4QzMwQjAwMzBGMzg2IC8q
IERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0U4MUQ5OTEz
MUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE4RThGMDgxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MThFOEYwQTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRBdXRoZW50aWNhdGlvbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFERjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIERv
d25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTk0NDAsNyArOTQzMyw2IEBACiAJCQkJ
NTEwMzJGMUQxODBGNzkxNzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM3NTM3RjE4M0JFNTBG
MDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Mzg5MUI2
RDFBNjhDMzBCMDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubW0gaW4gU291cmNl
cyAqLywKLQkJCQlCQ0U4MUQ5ODEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThFOEYwNzE2QjIwOTM3MDBFOTE0MjkgLyogRG93
bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4RThGMDkxNkIyMDkzNzAwRTkxNDI5IC8q
IERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFE
RjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IDkzMjQ5NDgyNTJiNzBjODZhNTEzOGMyZDkzYzA1NTdlYTBlOTAyMWUuLjYxY2Y0
ZmVhODFhMWM4NjE1Y2ZiZmQ4MjNmMGZiMDAwODY0ODZhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yOSw5ICsyOSw3
IEBACiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJz
LmgiCi0jaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNl
LmgiCi0jaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJQREZBbm5vdGF0
aW9uVGV4dFdpZGdldERldGFpbHMuaCIKICNpbXBvcnQgIlBERktpdEltcG9ydHMuaCIKICNpbXBv
cnQgIlBERkxheWVyQ29udHJvbGxlckRldGFpbHMuaCIKQEAgLTE3MjAsNyArMTcxOCw3IEBAIHZv
aWQgUERGUGx1Z2luOjpzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcsIENHCiB7CiAgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9u
YXJ5UG9wdXBJbmZvOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luID0gY29udmVydEZy
b21QREZWaWV3VG9Sb290VmlldyhJbnRQb2ludChwb2ludCkpOwotICAgIGRpY3Rpb25hcnlQb3B1
cEluZm8uYXR0cmlidXRlZFN0cmluZy5zdHJpbmcgPSBzdHJpbmc7CisgICAgZGljdGlvbmFyeVBv
cHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nID0gc3RyaW5nOwogCiAgICAgd2ViRnJhbWUoKS0+cGFn
ZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwKGRpY3Rpb25hcnlQb3B1cEluZm8pKTsKIH0KQEAgLTE5MzcsNyArMTkzNSw3IEBAIFN0cmlu
ZyBQREZQbHVnaW46Omxvb2t1cFRleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmIGxvY2F0aW9uSW5WaWV3CiAgICAgICAgIHJldHVybiBzZWxlY3Rpb24uc3RyaW5nOwogICAg
IH0KICAgICAKLSAgICBOU1N0cmluZyAqbG9va3VwVGV4dCA9IGRpY3Rpb25hcnlMb29rdXBGb3JQ
REZTZWxlY3Rpb24oc2VsZWN0aW9uLCBvcHRpb25zKTsKKyAgICBOU1N0cmluZyAqbG9va3VwVGV4
dCA9IERpY3Rpb25hcnlMb29rdXA6OnN0cmluZ0ZvclBERlNlbGVjdGlvbihzZWxlY3Rpb24sIG9w
dGlvbnMpOwogICAgIGlmICghbG9va3VwVGV4dCB8fCAhbG9va3VwVGV4dC5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBAIiI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRN
YWMubW0KaW5kZXggNDFiNTA2NmQ2NDA2ODM0ZGY4MDE4OGYyY2JlNzk1NjY0ODU2NDVlZS4uMGQ3
ODljMzdlNTVkNmVkYzBkNDFlZDRjZjEyZmYzMDI1MWFkMjg0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGll
bnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIK
ICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgog
I2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGljdGlv
bmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDA5MDc5MmMyYmRmYjc2Yzcz
NTJhN2RiNTI4MmJkODk4MDJhZWFiMzIuLjFlMmY2MWFmN2QyZGQxNjAxOWU0OTEwY2MxNTNjYzVh
MzJhMzM0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
aCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJEaWN0aW9uYXJ5UG9wdXBJbmZv
LmgiCiAjaW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgpAQCAt
NDksNiArNDgsNyBAQAogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25B
bHRlcm5hdGl2ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpAQCAtMTA1NSw5ICsxMDU1
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpOwogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlM
b29rdXBGb3JSYW5nZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OlJhbmdlJiwgTlNEaWN0aW9u
YXJ5ICpvcHRpb25zLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlv
bik7Ci0gICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yUmFuZ2Uo
V2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpSYW5nZSYgcmFuZ2UsIE5TRGljdGlvbmFy
eSAqKm9wdGlvbnMsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9u
IHByZXNlbnRhdGlvblRyYW5zaXRpb24pOworICAgIFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cElu
Zm8gZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6
UmFuZ2UmLCBOU0RpY3Rpb25hcnkgKipvcHRpb25zLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbik7CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCi0gICAgRGlj
dGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQbHVn
aW4oUERGU2VsZWN0aW9uICosIFBERlBsdWdpbiYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMsIFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uKTsKKyAgICBXZWJDb3Jl
OjpEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm9Gb3JTZWxlY3Rpb25JblBE
RlBsdWdpbihQREZTZWxlY3Rpb24gKiwgUERGUGx1Z2luJiwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9u
cywgV2ViQ29yZTo6VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogI2VuZGlm
CiAKICAgICB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpp
bmRleCA3YzcyNDQ0NDI0YTJmNDhkZDc2ZWU3YTY4YTY3Njk3OTJjYmFiZDY5Li4yZDk1ZjljYWEy
MzAzOTYyNGYzZWNiOTU4MDM2NDZlZDUyNzg4ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zMCw3ICszMCw2IEBA
CiAKICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2Uu
aCIKLSNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbXBvcnQgIkVkaXRpbmdSYW5n
ZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUuaCIKICNpbXBvcnQgIkluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5oIgpAQCAtNTE4LDcgKzUxNyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZsb2F0UG9pbnQpCiAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxl
cigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKHBvaW50KSk7CiAgICAgRnJhbWUqIGZyYW1lID0gcmVzdWx0LmlubmVyTm9u
U2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLmZy
YW1lKCkgOiAmbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7Ci0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZvcHRp
b25zKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VB
dEhpdFRlc3RSZXN1bHQocmVzdWx0LCAmb3B0aW9ucyk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC01MjgsNyArNTI3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uIHByZXNlbnRhdGlvblRyYW5zaXRpb24pCiB7CiAgICAgTlNEaWN0
aW9uYXJ5ICpvcHRpb25zID0gbmlsOwotICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9
IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihzZWxlY3Rpb24sICZvcHRpb25z
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBEaWN0aW9uYXJ5TG9va3VwOjpy
YW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24sICZvcHRpb25zKTsKICAgICBpZiAoc2VsZWN0ZWRS
YW5nZSkKICAgICAgICAgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZShmcmFtZSwgKnNl
bGVjdGVkUmFuZ2UsIG9wdGlvbnMsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogfQpAQCAtNTU2
LDcgKzU1NSw3IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVw
SW5mb0ZvclJhbmdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgSW50UmVjdCByYW5nZVJl
Y3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHF1YWRzWzBdLmVuY2xvc2luZ0Jv
dW5kaW5nQm94KCkpOwogCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSBGbG9hdFBv
aW50KHJhbmdlUmVjdC54KCksIHJhbmdlUmVjdC55KCkgKyAoc3R5bGUuZm9udE1ldHJpY3MoKS5h
c2NlbnQoKSAqIHBhZ2VTY2FsZUZhY3RvcigpKSk7Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5mby5v
cHRpb25zID0gKENGRGljdGlvbmFyeVJlZikqb3B0aW9uczsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJ
bmZvLm9wdGlvbnMgPSAqb3B0aW9uczsKIAogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqbnNBdHRy
aWJ1dGVkU3RyaW5nID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UocmFuZ2UsIElu
Y2x1ZGVJbWFnZXNJbkF0dHJpYnV0ZWRTdHJpbmc6Ok5vKTsKIApAQCAtNTg1LDcgKzU4NCw3IEBA
IERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdl
KEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJ
bmZvOwogCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0gdGV4dEluZGlj
YXRvci0+ZGF0YSgpOwotICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZy5z
dHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmc7CisgICAgZGljdGlvbmFyeVBvcHVwSW5m
by5hdHRyaWJ1dGVkU3RyaW5nID0gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nOwogCiAgICAgcmV0
dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiB9CkBAIC02MzgsOSArNjM3LDkgQEAgRGljdGlvbmFy
eVBvcHVwSW5mbyBXZWJQYWdlOjpkaWN0aW9uYXJ5UG9wdXBJbmZvRm9yU2VsZWN0aW9uSW5QREZQ
bHVnaW4oUERGU2VsZWMKICAgICBkYXRhRm9yU2VsZWN0aW9uLnByZXNlbnRhdGlvblRyYW5zaXRp
b24gPSBwcmVzZW50YXRpb25UcmFuc2l0aW9uOwogICAgIAogICAgIGRpY3Rpb25hcnlQb3B1cElu
Zm8ub3JpZ2luID0gcmFuZ2VSZWN0Lm9yaWdpbjsKLSAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9w
dGlvbnMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKSpvcHRpb25zOworICAgIGRpY3Rpb25hcnlQb3B1cElu
Zm8ub3B0aW9ucyA9ICpvcHRpb25zOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGlj
YXRvciA9IGRhdGFGb3JTZWxlY3Rpb247Ci0gICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1
dGVkU3RyaW5nLnN0cmluZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZzsKKyAgICBkaWN0aW9u
YXJ5UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmc7
CiAgICAgCiAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiB9CkBAIC0xMTk4LDcgKzEx
OTcsNyBAQCBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6Omxvb2t1cFRleHRBdExvY2F0
aW9uKEZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDbwogCiAgICAgSW50UG9pbnQgcG9pbnQgPSBy
b3VuZGVkSW50UG9pbnQobG9jYXRpb25JblZpZXdDb29yZGluYXRlcyk7CiAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9p
bnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpKTsK
LSAgICByZXR1cm4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVzdWx0KHJlc3Vs
dCwgb3B0aW9ucyk7CisgICAgcmV0dXJuIERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0
UmVzdWx0KHJlc3VsdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6aW1tZWRpYXRlQWN0
aW9uRGlkVXBkYXRlKCkK
</data>
<flag name="review"
          id="285269"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>