<?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>211048</bug_id>
          
          <creation_ts>2020-04-26 11:19:26 -0700</creation_ts>
          <short_desc>[Cocoa] stop using out arguments for document attributes when converting to attributed strings</short_desc>
          <delta_ts>2020-04-27 14:35:23 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1645798</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-26 11:19:26 -0700</bug_when>
    <thetext>[Cocoa] stop using out arguments for document attributes when converting to attributed strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645799</commentid>
    <comment_count>1</comment_count>
      <attachid>397623</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-26 11:36:03 -0700</bug_when>
    <thetext>Created attachment 397623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645801</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-26 11:36:56 -0700</bug_when>
    <thetext>Started this in response to Sam’s review comment in bug 210396.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645811</commentid>
    <comment_count>3</comment_count>
      <attachid>397626</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-26 12:27:35 -0700</bug_when>
    <thetext>Created attachment 397626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645872</commentid>
    <comment_count>4</comment_count>
      <attachid>397626</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-04-26 18:08:42 -0700</bug_when>
    <thetext>Comment on attachment 397626
Patch

!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645886</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-26 22:13:00 -0700</bug_when>
    <thetext>Committed r260739: &lt;https://trac.webkit.org/changeset/260739&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397626.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645887</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-26 22:13:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/62426218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646092</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-04-27 10:48:34 -0700</bug_when>
    <thetext>I believe this change is incomplete for MacCatalyst builds. See UIProcess/Cocoa/TextCheckingController.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646096</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-27 10:56:18 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #7)
&gt; I believe this change is incomplete for MacCatalyst builds. See
&gt; UIProcess/Cocoa/TextCheckingController.mm.

Tried to fix this in r260766</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646103</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-04-27 11:17:29 -0700</bug_when>
    <thetext>That was almost perfect! I had to add a couple of #include&apos;s because of the vagaries of UnifiedSources.

Committed r260768: &lt;https://trac.webkit.org/changeset/260768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646216</commentid>
    <comment_count>10</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-27 14:35:23 -0700</bug_when>
    <thetext>(In reply to EWS from comment #5)
&gt; Committed r260739: &lt;https://trac.webkit.org/changeset/260739&gt;
Catalina Perf tests started failing due to some unexpected logging after this change: https://build.webkit.org/builders/Apple-Catalina-Release-WK2-Perf/builds/783

Partial revert (as suggested by Darin) in https://trac.webkit.org/changeset/260785/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397623</attachid>
            <date>2020-04-26 11:36:03 -0700</date>
            <delta_ts>2020-04-26 12:27:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211048-20200426113602.patch</filename>
            <type>text/plain</type>
            <size>77217</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI2OTk2ZjUxNzg1N2IyMmZmNDFkZTI4
ODYzNmJlNTJjYWQ2NDNmNjkuLjQxMjRkZmUyN2ZiYWFkYjRjMjhmZmM3YzFiZGRiMTc3OTBjMjU3
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gc3RvcCB1c2luZyBvdXQgYXJndW1lbnRzIGZv
ciBkb2N1bWVudCBhdHRyaWJ1dGVzIHdoZW4gY29udmVydGluZyB0byBhdHRyaWJ1dGVkIHN0cmlu
Z3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTA0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L2NvY29hL1VSTENvY29hLm1tOgorICAgICAgICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0
KTogVXNlIGluaXQgaW5zdGVhZCBvZiBpbml0V2l0aFN0cmluZzpAIiIuIFRoZSB0d28gYXJlCisg
ICAgICAgIGVxdWl2YWxlbnQgaW4gbW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgRm91bmRhdGlvbi4K
KwogMjAyMC0wNC0yNSAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gUmVtb3ZlIHRoZSBidWxpZCB3YXJuaW5ncyBiZWxvdyBzaW5j
ZSByMjYwNzA3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcyZjA0ZDI0NTY2NmU2M2I5N2IxM2U5MzNjNjVmNjNl
YTk5YmQ1NDguLjgyMjc3YzFhY2YwMWNiYWNlYzljMTJlMTkzNTdiODkyZjI1YjkwMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMC0wNC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBzdG9wIHVzaW5nIG91dCBhcmd1bWVudHMgZm9y
IGRvY3VtZW50IGF0dHJpYnV0ZXMgd2hlbiBjb252ZXJ0aW5nIHRvIGF0dHJpYnV0ZWQgc3RyaW5n
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDQ4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OiBCdWlsZGluZyBtb2RpZmllZCB0aGlzIGZpbGUg
YXV0b21hdGljYWxseS4gVXBsb2FkaW5nCisgICAgICAgIHRoZSBuZXcgdmVyc2lvbi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgQXR0cmlidXRl
ZFN0cmluZy5oLgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvQXR0cmlidXRlZFN0cmluZy5oOiBB
ZGRlZC4gTW92ZWQgdGhpcyBmcm9tIFdlYktpdCwgYnV0IHJlbW92ZWQgYSBsb3Qgb2YKKyAgICAg
ICAgaW5lc3NlbnRpYWxzLgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1
cC5tbTogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAgICAqIGVkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzZWxlY3Rpb25Bc0F0dHJpYnV0ZWRT
dHJpbmcpOiBVcGRhdGVkIGZvciBjaGFuZ2UgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKKyAg
ICAgICAgYXR0cmlidXRlZFN0cmluZyBmdW5jdGlvbiwgYW5kIHVzZSBpbml0IGluc3RlYWQgb2Yg
aW5pdFdpdGhTdHJpbmc6QCIiLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLmg6IENoYW5nZWQgdG8gYW4gT2JqZWN0aXZlLUMtb25seSBoZWFkZXIsIG9taXR0aW5nIHRo
aW5ncworICAgICAgICBsaWtlICNwcmFtZ2Egb25jZS4gUmV0dXJuIHRoZSBBdHRyaWJ1dGVkU3Ry
aW5nIHN0cnVjdCBmcm9tIHRoZSBmdW5jdGlvbnMgaW5zdGVhZCBvZgorICAgICAgICB1c2luZyBh
biBvdXQgYXJndW1lbnQgZm9yIGRvY3VtZW50IGF0dHJpYnV0ZXMuCisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6Y29udmVy
dCk6IFJldHVybiBhbiBBdHRyaWJ1dGVkU3RyaW5nIGFuZCBkcm9wIHRoZSBvdXQgYXJndW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVkU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjplZGl0aW5nQXR0cmlidXRlZFN0cmluZyk6IERpdHRvLiBBbHNvIHJlZmFjdG9yIGEg
bGl0dGxlIGJpdC4KKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbTogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlLgorICAgICAgICAqIGVkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXBMZWdhY3kubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKworICAgICAgICAqIGVkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOiBVcGRhdGVkIHNpbmNlIGF0dHJpYnV0ZWRTdHJpbmcKKyAgICAg
ICAgbm93IHJldHVybnMgYSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
cG9saWN5UHJvcGVydGllcyk6IFVzZSBpbml0IGluc3RlYWQgb2YgaW5pdFdpdGhTdHJpbmc6QCIi
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpzaXRlRm9yQ29va2llcyk6IFVzZSBpbml0IGluc3RlYWQg
b2YgaW5pdFdpdGhTdHJpbmc6QCIiLgorCiAyMDIwLTA0LTExICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2VzIGluIGZ1bmN0aW9u
cyB0aGF0IHJldHVybiByYW5nZSBvZiB0aGUgc2VsZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVhOTY4NTg3
YmMyYjNkM2JmMTI5Y2ZjZWI3YzM5OGQ0M2RiYTIyYmYuLjE2YWUzYmQxNGY3ZjU4ZjI1NmJlOTVk
ODIxYWFhYmQwMDY5Njk0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMDQtMjYg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gc3RvcCB1
c2luZyBvdXQgYXJndW1lbnRzIGZvciBkb2N1bWVudCBhdHRyaWJ1dGVzIHdoZW4gY29udmVydGlu
ZyB0byBhdHRyaWJ1dGVkIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZvclNhbWVT
aXRlQ29va2llcyk6IFVzZSBpbml0IGluc3RlYWQgb2YgaW5pdFdpdGhTdHJpbmc6QCIiLgorCisg
ICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+OjplbmNv
ZGUpOiBNb3ZlZCBoZXJlIGZyb20gQXR0cmlidXRlZFN0cmluZy5tbS4KKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPjo6ZGVjb2RlKTogRGl0dG8u
CisKKyAgICAgICAgKiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oOiBVcGRhdGVkIHRv
IHVzZSBXZWJDb3JlOjpBdHRyaWJ1dGVTdHJpbmcuCisgICAgICAgICogU2hhcmVkL0RvY3VtZW50
RWRpdGluZ0NvbnRleHQubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpE
b2N1bWVudEVkaXRpbmdDb250ZXh0Pjo6ZGVjb2RlKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6IEFkZGVkIGNvZGVyIGZvciBXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nLgorCisgICAgICAgICogU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3RyaW5nLmg6
IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3RyaW5nLm1tOiBSZW1v
dmVkLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDogUmVtb3ZlZCBBdHRyaWJ1dGVkU3Ry
aW5nLm1tLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06IFVw
ZGF0ZWQgdG8gdXNlIFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW06IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlKTogRGl0dG8uCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0
ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJh
Y2spOiBEaXR0by4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBSZW1vdmVkIEF0dHJpYnV0ZWRTdHJpbmcuaCBhbmQgQXR0cmlidXRlZFN0cmluZy5tbS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHkuaDogVXBkYXRlZCB0byB1c2UgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZy4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6YW5ub3RhdGVk
U3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucyk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKTogVXBkYXRlZCBzaW5jZSBlZGl0aW5nQXR0
cmlidXRlZFN0cmluZworICAgICAgICByZXR1cm5zIGEgc3RydWN0LgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyk6IFVwZGF0ZWQgdG8gdXNl
IFNpbXBsZVJhbmdlIGFuZAorICAgICAgICBzaW5jZSBhdHRyaWJ1dGVkU3RyaW5nIHJldHVybnMg
YSBzdHJ1Y3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOiBVcGRh
dGVkIHRvIHVzZSBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2spOiBEaXR0
by4KKwogMjAyMC0wNC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU3RvcCB1c2luZyBsaXZlIHJhbmdlcyBpbiBmdW5jdGlvbnMgdGhhdCByZXR1cm4gcmFuZ2Ug
b2YgdGhlIHNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGU4N2M2NzEy
MzE3NjFjYTQxMDliYzBlNzUxYTQ2YThlMDg1Njk0OGQuLmNlNjkyNTc5ODRmODAyMWIwYjUxZmQ3
MTA2MDFjMDM4ZjJjOWUyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNyBAQAorMjAyMC0wNC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBzdG9wIHVzaW5nIG91dCBhcmd1bWVudHMgZm9yIGRvY3VtZW50IGF0dHJp
YnV0ZXMgd2hlbiBjb252ZXJ0aW5nIHRvIGF0dHJpYnV0ZWQgc3RyaW5ncworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2spOiBVcGRhdGVkIHNpbmNl
CisgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgcmV0dXJucyBhIHN0cnVjdC4KKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJl
c2VudGF0aW9uIGF0dHJpYnV0ZWRTdHJpbmdGcm9tOnN0YXJ0T2Zmc2V0OnRvOmVuZE9mZnNldDpd
KTogRGl0dG8uCisgICAgICAgIEFsc28gdXNlIGluaXQgaW5zdGVhZCBvZiBpbml0V2l0aFN0cmlu
ZzpAIiIuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgdGV4dFN0b3JhZ2VdKTogREl0dG8uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGF0
dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJIVE1M
VmlldyBfYXR0cmlidXRlZFN0cmluZ0Zyb21ET01SYW5nZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1dlYkhUTUxWaWV3IF9sZWdhY3lBdHRyaWJ1dGVkU3RyaW5nRnJvbTpvZmZzZXQ6dG86b2Zmc2V0
Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgYXR0cmlidXRlZFN0cmluZ10pOiBE
aXR0by4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2VsZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nXSk6
IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bToKKyAgICAgICAgKCtbV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlciBfZGljdGlvbmFyeVBv
cHVwSW5mb0ZvclJhbmdlOmluRnJhbWU6d2l0aExvb2t1cE9wdGlvbnM6aW5kaWNhdG9yT3B0aW9u
czp0cmFuc2l0aW9uOl0pOgorICAgICAgICBVcGRhdGVkLgorCiAyMDIwLTA0LTExICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGxpdmUgcmFuZ2Vz
IGluIGZ1bmN0aW9ucyB0aGF0IHJldHVybiByYW5nZSBvZiB0aGUgc2VsZWN0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL1VSTENvY29hLm1tCmluZGV4IDM2Njk4YTEzMTUyMWM3ZjY1NmE3NjI0N2FkZDgwMDRiZmIx
ZTgzYmIuLjU1NmQzYTllMzM4ZjIxNzUzMmEyNjFiZjAwZTZjMzEwNDY0YTRmNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL1VSTENvY29hLm1tCkBAIC02NSw3ICs2NSw3IEBAIFJldGFpblB0cjxDRlVSTFJlZj4g
VVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0CiAKICAgICBpZiAoaXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFuZCBDRlVSTCB0
byBjcmVhdGUgYSBDRlVSTFJlZiBzdXBwb3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwgdmFsdWVz
LgotICAgICAgICByZXR1cm4gKF9fYnJpZGdlIENGVVJMUmVmKWFkb3B0TlMoW1tOU1VSTCBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6QCIiXSkuZ2V0KCk7CisgICAgICAgIHJldHVybiAoX19icmlkZ2Ug
Q0ZVUkxSZWYpYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0XSkuZ2V0KCk7CiAgICAgfQogCiAg
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDJkNGQxMjg1ZTg3MTBjYjU1ODdmYmIyZWVl
ZjhlNGMyY2Q2YzNlMDAuLmZkM2JhMDAxYzdjMTczY2M3ZjBiYjY0OTBkODU4OWI1ODQ5NTJiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtMTE4MCwzICsxMTgwLDUgQEAgJChQUk9KRUNUX0RJUikveG1sL1hQYXRoUmVzdWx0LmlkbAog
JChQUk9KRUNUX0RJUikveG1sL1hTTFRQcm9jZXNzb3IuaWRsCiAkKFBST0pFQ1RfRElSKS94bWwv
eG1sYXR0cnMuaW4KICQoUFJPSkVDVF9ESVIpL3htbC94bWxuc2F0dHJzLmluCitBcHBsZVBheVNl
dHVwLmlkbAorQXBwbGVQYXlTZXR1cEZlYXR1cmUuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjMyYjgyNjM4M2NmYzFkNDI4
MzIwZGY0M2YzM2NiYTYwMGNlOTFmOS4uYzhjZTI0ODc5ZWE3ZmI0M2JmMjUxZTY5YzdjNTNkOGJl
Y2ExYmExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjcxOCw2ICsyNzE4LDcgQEAKIAkJOTNEOUQ1M0MwREEyN0UxODAwNzcy
MTZDIC8qIFJhbmdlQm91bmRhcnlQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNEOUQ1M0IwREEyN0UxODAwNzcyMTZDIC8qIFJhbmdlQm91bmRh
cnlQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzRTI0MUZGMEIyQjRFNDAwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTI0MUZFMEIy
QjRFNDAwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0UyQTMwNzEyM0U5REMwMDA5RkUx
MkEgLyogSFRNTFBhcnNlcklkaW9tcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNFMkEzMDUxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlv
bXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
M0U1QjI2NTI0NTVFOTZGMDA1QzUyRDAgLyogQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNUIyNjMyNDU1RTk2RjAwNUM1
MkQwIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5M0YxOThFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTIz
RDIzQzAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTERvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk4RTYwODI0NUU1OTAwMUU5QUJD
IC8qIEhUTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTIzRDIzRjAyREU0Mzk2MDE4NjM1Q0EgLyogSFRNTEVsZW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOThGNjA4MjQ1
RTU5MDAxRTlBQkMgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyNzkwMkRFNDNENzAxODYzNUNBIC8qIFRl
eHRSZXNvdXJjZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTA5NDIsNiArMTA5NDMsNyBAQAogCQk5M0UyQTMwNDEyM0U5REMwMDA5
RkUxMkEgLyogSFRNTFBhcnNlcklkaW9tcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVE1MUGFyc2VySWRpb21zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNFMkEzMDUxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFBhcnNlcklkaW9tcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U1QjI1NDI0NTM2QjFFMDA1QzUyRDAgLyogVVJMRGVj
b21wb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxE
ZWNvbXBvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNFNUIyNjMy
NDU1RTk2RjAwNUM1MkQwIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXR0cmlidXRlZFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0VCMzU1RTA5RTM3RkQ2MDBGNDM3OTkgLyogTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNFRUMxRTUwOUMyODc3NzAwQzUxNUQxIC8qIEF0dHIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEF0dHIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0VFQzFFNjA5QzI4
Nzc3MDBDNTE1RDEgLyogQ2hhcmFjdGVyRGF0YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Q2hhcmFjdGVyRGF0YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTU4Miw2
ICsyMTU4NCw3IEBACiAJCQkJQ0U0NTk0NjUyNDEyMUEwNTAwNzgwMTlGIC8qIEFsdGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyLm1tICovLAogCQkJCUNFN0IyREFGMTU4NkFCQUQwMDk4QjNG
QSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCAqLywKIAkJCQlDRTdCMkRCMDE1ODZB
QkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tICovLAorCQkJCTkz
RTVCMjYzMjQ1NUU5NkYwMDVDNTJEMCAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi8sCiAJCQkJNUND
QzI3MDcyMkQ1M0I2OTAwOTY0RkEwIC8qIEF1dG9maWxsRWxlbWVudHMuY3BwICovLAogCQkJCTVD
Q0MyNzA2MjJENTNCNjgwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1lbnRzLmggKi8sCiAJCQkJQzUy
MjdERUYxQzNDNkRENzAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24uaCAqLywKQEAgLTI5NTQ1LDYg
KzI5NTQ4LDcgQEAKIAkJCQlBOEM0QTgwRDA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MEIwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHJpYnV0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTRBODE0REExQzcwRTEwRDAwQkY4NUFDIC8qIEF0dHJpYnV0ZUNo
YW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNFNUIyNjUyNDU1RTk2RjAw
NUM1MkQwIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdB
MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDYy
OUVBMzE1NEI0NzE2MDAwNkQwMjYgLyogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE1RkY3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0F0dHJpYnV0ZWRTdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvQXR0cmlidXRlZFN0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNTFhZDk0MTQ0NzM1N2YwNWQ0ZTFl
MTBjMjhlYjdjNmI2YTUzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0F0dHJpYnV0ZWRTdHJpbmcuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFT
UyBOU0F0dHJpYnV0ZWRTdHJpbmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEF0
dHJpYnV0ZWRTdHJpbmcgeworICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IHN0cmlu
ZzsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkb2N1bWVudEF0dHJpYnV0ZXM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggYmY1MTZmNDkzZmZlMWQyNGQ5ZmNmYTY0OTdk
NzQ5ZDM3YjYyODgyOC4uMDg5YTIxZjVjNWYxOTFiZmU3NWY1OTJjMjhjNTQ4ZGE4YWJmNzI4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3Vw
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5t
bQpAQCAtMzYsNyArMzYsNiBAQAogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lU2Vs
ZWN0aW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgotI2ltcG9ydCAiSFRNTENv
bnZlcnRlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbXBvcnQgIlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCmluZGV4IDg1ODA3ODEyMTQxZGU1NjkzNTQ5ZDQzZTFhNjQ4YjRlYzg5
Yjk2ZGEuLjcyMmY4NDg1Mzk1ZTFlODIzYTYxOWYzODU5MzY1ZjQwNGY3NDhlYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiBzdGF0aWMgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4gc2VsZWN0aW9uQXNBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IEZyYW1lJiBmcmFtZSkK
IHsKICAgICBhdXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RS
YW5nZSgpOwotICAgIHJldHVybiByYW5nZSA/IGF0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKSA6IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pOwor
ICAgIHJldHVybiByYW5nZSA/IGF0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKS5zdHJpbmcgOiBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7CiB9CiAKIHZvaWQgRWRpdG9y
Ojp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIuaAppbmRleCA0MGI1NThh
OTBjNTZjZTg5MmNjODIzNGFiMGEwYjM1Y2I3YTU3YzVlLi5kY2VhNzMwZTY3MTc3MDc4ODViY2Q5
Y2RkMjRlZDZiYmYxODE3NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIuaApAQCAtMjMsMjUgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCi0KLSNpbXBvcnQgPHd0Zi9Gb3J3YXJk
Lmg+Ci0KLU9CSkNfQ0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOworI2ltcG9ydCAiQXR0cmlidXRl
ZFN0cmluZy5oIgorI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdHJ1Y3QgU2ltcGxlUmFuZ2U7Ci0KLVdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0F0
dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2UmLCBSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PiogZG9jdW1lbnRBdHRyaWJ1dGVzID0gbnVsbHB0cik7CitXRUJD
T1JFX0VYUE9SVCBBdHRyaWJ1dGVkU3RyaW5nIGF0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxl
UmFuZ2UmKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLS8vIFRoaXMgYWx0ZXJuYXRlIGltcGxlbWVu
dGF0aW9uIG9mIEhUTUwgY29udmVyc2lvbiBkb2Vzbid0IGhhbmRsZSBhcyBtYW55Ci0vLyBhZHZh
bmNlZCBmZWF0dXJlcywgc3VjaCBhcyB0YWJsZXMsIGJ1dCBpdCBkb2VzIHVzZSBUZXh0SXRlcmF0
b3Igc28gdGhlCisvLyBUaGlzIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBIVE1MIGNvbnZl
cnNpb24gZG9lc24ndCBoYW5kbGUgYXMgbWFueSBhZHZhbmNlZCBmZWF0dXJlcywKKy8vIHN1Y2gg
YXMgdGFibGVzLCBhbmQgZG9lc24ndCBwcm9kdWNlIGRvY3VtZW50IGF0dHJpYnV0ZXMsIGJ1dCBp
dCBkb2VzIHVzZSBUZXh0SXRlcmF0b3Igc28KIC8vIHRleHQgb2Zmc2V0cyB3aWxsIGV4YWN0bHkg
bWF0Y2ggcGxhaW4gdGV4dCBhbmQgb3RoZXIgZWRpdGluZyBtYWNoaW5lcnkuCiAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBhbmQgdGhlIG9uZSBhYm92ZSBzaG91bGQgYmUgbWVyZ2VkLgogZW51bSBj
bGFzcyBJbmNsdWRlSW1hZ2VzIHsgWWVzLCBObyB9OwotV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TQXR0cmlidXRlZFN0cmluZz4gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxl
UmFuZ2UmLCBJbmNsdWRlSW1hZ2VzID0gSW5jbHVkZUltYWdlczo6WWVzKTsKK1dFQkNPUkVfRVhQ
T1JUIEF0dHJpYnV0ZWRTdHJpbmcgZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxl
UmFuZ2UmLCBJbmNsdWRlSW1hZ2VzID0gSW5jbHVkZUltYWdlczo6WWVzKTsKICNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KaW5kZXggZjFmY2E0ZWI2ZWI0YWIxMDJhODExMmY3MWNjMmU1MjFmMTQz
MjhkNy4uYjBlMDhmNDgyY2FhZWIwNjYyNDQwNTNlYjhkMDRjZDZhMTlkYzY5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjc5LDcgKzI3
OSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBIVE1MQ29udmVydGVyKGNvbnN0IFNpbXBsZVJh
bmdlJik7CiAgICAgfkhUTUxDb252ZXJ0ZXIoKTsKIAotICAgIFJldGFpblB0cjxOU0F0dHJpYnV0
ZWRTdHJpbmc+IGNvbnZlcnQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4qIGRvY3VtZW50QXR0cmli
dXRlcyA9IG51bGxwdHIpOworICAgIEF0dHJpYnV0ZWRTdHJpbmcgY29udmVydCgpOwogCiBwcml2
YXRlOgogICAgIFBvc2l0aW9uIG1fc3RhcnQ7CkBAIC0zOTcsMTAgKzM5NywxMCBAQCBIVE1MQ29u
dmVydGVyOjp+SFRNTENvbnZlcnRlcigpCiAgICAgW193cml0aW5nRGlyZWN0aW9uQXJyYXkgcmVs
ZWFzZV07CiB9CiAKLVJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IEhUTUxDb252ZXJ0ZXI6
OmNvbnZlcnQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4qIGRvY3VtZW50QXR0cmlidXRlcykKK0F0
dHJpYnV0ZWRTdHJpbmcgSFRNTENvbnZlcnRlcjo6Y29udmVydCgpCiB7CiAgICAgaWYgKGNvbXBh
cmVQb3NpdGlvbnMobV9zdGFydCwgbV9lbmQpID4gMCkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyID0g
X2NhY2hlcy0+Y2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZlcnRlZChtX3N0YXJ0LCBtX2Vu
ZCk7CiAgICAgQVNTRVJUKGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKTsKQEAgLTQxOCwxMCArNDE4
LDcgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gSFRNTENvbnZlcnRlcjo6Y29udmVy
dChSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiogZG8KICAgICBpZiAoX2RvbVJhbmdlU3RhcnRJbmRl
eCA+IDAgJiYgX2RvbVJhbmdlU3RhcnRJbmRleCA8PSBbX2F0dHJTdHIgbGVuZ3RoXSkKICAgICAg
ICAgW19hdHRyU3RyIGRlbGV0ZUNoYXJhY3RlcnNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIF9kb21S
YW5nZVN0YXJ0SW5kZXgpXTsKIAotICAgIGlmIChkb2N1bWVudEF0dHJpYnV0ZXMpCi0gICAgICAg
ICpkb2N1bWVudEF0dHJpYnV0ZXMgPSBfZG9jdW1lbnRBdHRyczsKLQotICAgIHJldHVybiBfYXR0
clN0cjsKKyAgICByZXR1cm4geyBXVEZNb3ZlKF9hdHRyU3RyKSwgV1RGTW92ZShfZG9jdW1lbnRB
dHRycykgfTsKIH0KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMjM2OCwzMCArMjM2
NSwyNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxl
bWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAv
LyBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIG1vcmUgSFRNTCBmZWF0dXJlcyB0aGFuIHRoZSBlZGl0
aW5nIHZhcmlhbnQgYmVsb3csIHN1Y2ggYXMgdGFibGVzLgotUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIFJldGFp
blB0cjxOU0RpY3Rpb25hcnk+KiBkb2N1bWVudEF0dHJpYnV0ZXMpCitBdHRyaWJ1dGVkU3RyaW5n
IGF0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIHJldHVy
biBIVE1MQ29udmVydGVyIHsgcmFuZ2UgfS5jb252ZXJ0KGRvY3VtZW50QXR0cmlidXRlcyk7Cisg
ICAgcmV0dXJuIEhUTUxDb252ZXJ0ZXIgeyByYW5nZSB9LmNvbnZlcnQoKTsKIH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKIAogLy8gVGhpcyBmdW5jdGlvbiB1c2VzIFRleHRJdGVyYXRvciwgd2hpY2gg
bWFrZXMgb2Zmc2V0cyBpbiBpdHMgcmVzdWx0IGNvbXBhdGlibGUgd2l0aCBIVE1MIGVkaXRpbmcu
Ci1SZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBlZGl0aW5nQXR0cmlidXRlZFN0cmluZyhj
b25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIEluY2x1ZGVJbWFnZXMgaW5jbHVkZUltYWdlcykKK0F0
dHJpYnV0ZWRTdHJpbmcgZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlLCBJbmNsdWRlSW1hZ2VzIGluY2x1ZGVJbWFnZXMpCiB7Ci0gICAgTlNGb250TWFuYWdl
ciAqZm9udE1hbmFnZXIgPSBbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl07Ci0gICAg
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFn
ZXIgc2hhcmVkRm9udE1hbmFnZXJdOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGF0dHJzID0gYWRv
cHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBOU1VJbnRlZ2Vy
IHN0cmluZ0xlbmd0aCA9IDA7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0
dHJzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLQogICAg
IGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkg
ewotICAgICAgICBTaW1wbGVSYW5nZSBjdXJyZW50VGV4dFJhbmdlID0gaXQucmFuZ2UoKTsKLSAg
ICAgICAgTm9kZSYgc3RhcnRDb250YWluZXIgPSBjdXJyZW50VGV4dFJhbmdlLnN0YXJ0LmNvbnRh
aW5lcjsKLSAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVyID0gY3VycmVudFRleHRSYW5nZS5lbmQu
Y29udGFpbmVyOwotICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBjdXJyZW50VGV4dFJhbmdlLnN0
YXJ0Lm9mZnNldDsKLSAgICAgICAgaW50IGVuZE9mZnNldCA9IGN1cnJlbnRUZXh0UmFuZ2UuZW5k
Lm9mZnNldDsKKyAgICAgICAgYXV0byBjdXJyZW50UmFuZ2UgPSBpdC5yYW5nZSgpOworICAgICAg
ICBOb2RlJiBzdGFydENvbnRhaW5lciA9IGN1cnJlbnRSYW5nZS5zdGFydC5jb250YWluZXI7CiAK
ICAgICAgICAgaWYgKGluY2x1ZGVJbWFnZXMgPT0gSW5jbHVkZUltYWdlczo6WWVzKSB7Ci0gICAg
ICAgICAgICBpZiAoJnN0YXJ0Q29udGFpbmVyID09ICZlbmRDb250YWluZXIgJiYgKHN0YXJ0T2Zm
c2V0ID09IGVuZE9mZnNldCAtIDEpKSB7CisgICAgICAgICAgICBpZiAoJnN0YXJ0Q29udGFpbmVy
ID09IGN1cnJlbnRSYW5nZS5lbmQuY29udGFpbmVyLnB0cigpICYmIGN1cnJlbnRSYW5nZS5zdGFy
dC5vZmZzZXQgKyAxID09IGN1cnJlbnRSYW5nZS5lbmQub2Zmc2V0KSB7CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IHN0YXJ0Q29udGFpbmVyLnRyYXZlcnNlVG9DaGlsZEF0KHN0YXJ0T2Zm
c2V0KTsKICAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4obm9kZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
ID0gZmlsZVdyYXBwZXJGb3JFbGVtZW50KGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCpub2Rl
KSk7CkBAIC0yNDAyLDM1ICsyMzk1LDM1IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+
IGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGludCBjdXJyZW50VGV4dExlbmd0aCA9IGl0
LnRleHQoKS5sZW5ndGgoKTsKKyAgICAgICAgYXV0byBjdXJyZW50VGV4dExlbmd0aCA9IGl0LnRl
eHQoKS5sZW5ndGgoKTsKICAgICAgICAgaWYgKCFjdXJyZW50VGV4dExlbmd0aCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydENv
bnRhaW5lci5yZW5kZXJlcigpOworICAgICAgICBhdXRvKiByZW5kZXJlciA9IHN0YXJ0Q29udGFp
bmVyLnJlbmRlcmVyKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAgICAgIGlmICgh
cmVuZGVyZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAgICAgIGF1dG8mIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7CiAgICAgICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKLSAgICAgICAgICAgIFthdHRycy5nZXQo
KSBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVT
aW5nbGVdIGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07CisgICAgICAgICAg
ICBbYXR0cnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpOU1VuZGVybGlu
ZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwogICAg
ICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9u
OjpMaW5lVGhyb3VnaCkKLSAgICAgICAgICAgIFthdHRycy5nZXQoKSBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZvcktleTpOU1N0
cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgW2F0dHJzIHNldE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0g
Zm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGlmIChh
dXRvIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCkp
Ci0gICAgICAgICAgICBbYXR0cnMuZ2V0KCkgc2V0T2JqZWN0OnRvTlNGb250KGZvbnQpIGZvcktl
eTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6dG9O
U0ZvbnQoZm9udCkgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBbYXR0cnMuZ2V0KCkgc2V0T2JqZWN0Oltmb250TWFuYWdlciBjb252ZXJ0Rm9u
dDpXZWJEZWZhdWx0Rm9udCgpIHRvU2l6ZTpzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250
KCkucGxhdGZvcm1EYXRhKCkuc2l6ZSgpXSBmb3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV07Cisg
ICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Oltmb250TWFuYWdlciBjb252ZXJ0Rm9udDpXZWJE
ZWZhdWx0Rm9udCgpIHRvU2l6ZTpzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkucGxh
dGZvcm1EYXRhKCkuc2l6ZSgpXSBmb3JLZXk6TlNGb250QXR0cmlidXRlTmFtZV07CiAKICAgICAg
ICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0
aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3IpOwogICAgICAgICBpZiAoZm9yZWdyb3VuZENv
bG9yLmlzVmlzaWJsZSgpKQotICAgICAgICAgICAgW2F0dHJzLmdldCgpIHNldE9iamVjdDpuc0Nv
bG9yKGZvcmVncm91bmRDb2xvcikgZm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFt
ZV07CisgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5zQ29sb3IoZm9yZWdyb3VuZENvbG9y
KSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgW2F0dHJzLmdldCgpIHJlbW92ZU9iamVjdEZvcktleTpOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgW2F0dHJzIHJlbW92ZU9iamVjdEZvcktl
eTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCiAgICAgICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3Iu
aXNWaXNpYmxlKCkpCi0gICAgICAgICAgICBbYXR0cnMuZ2V0KCkgc2V0T2JqZWN0Om5zQ29sb3Io
YmFja2dyb3VuZENvbG9yKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsK
KyAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6bnNDb2xvcihiYWNrZ3JvdW5kQ29sb3IpIGZv
cktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBbYXR0cnMuZ2V0KCkgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5TQmFja2dyb3VuZENvbG9y
QXR0cmlidXRlTmFtZV07CisgICAgICAgICAgICBbYXR0cnMgcmVtb3ZlT2JqZWN0Rm9yS2V5Ok5T
QmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CiAKICAgICAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiB0ZXh0OwogICAgICAgICBpZiAoc3R5bGUubmJzcE1vZGUoKSA9PSBOQlNQTW9kZTo6Tm9y
bWFsKQpAQCAtMjQ0Myw3ICsyNDM2LDcgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4g
ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLAogICAgICAg
ICBzdHJpbmdMZW5ndGggKz0gY3VycmVudFRleHRMZW5ndGg7CiAgICAgfQogCi0gICAgcmV0dXJu
IFtzdHJpbmcgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB7IFdURk1vdmUoc3RyaW5nKSwgbmls
IH07CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmlu
ZGV4IGI3ZDI5Y2Q0YmFkOTUwZDNhYmQ3ZGY3OWU5MGY1MzQ2NGMzNjg4NDkuLjNmMjljNGUyM2Uy
ZjZjZGY1ZDQ2NDJmMmRjMTg4NDZjNTdlMzJkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KQEAgLTM4LDcgKzM4LDYgQEAKICNpbXBvcnQgIkVkaXRpbmcuaCIKICNp
bXBvcnQgIkVkaXRvckNsaWVudC5oIgogI2ltcG9ydCAiRnJhbWUuaCIKLSNpbXBvcnQgIkhUTUxD
b252ZXJ0ZXIuaCIKICNpbXBvcnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxO
YW1lcy5oIgogI2ltcG9ydCAiSFRNTFBhcnNlcklkaW9tcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KaW5kZXggMjIzOGYx
M2I3NjI2YjRlYTczNGViNjJiYWQ0NDA0ZDBmODNlYjI1Zi4uNTU3YjAyMjk5NjlhODUxYWVhYzkx
ZjgyYWYzNzhjNmU3ZjQ4MWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0
ICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJGcmFtZVNl
bGVjdGlvbi5oIgotI2ltcG9ydCAiSFRNTENvbnZlcnRlci5oIgogI2ltcG9ydCAiSGl0VGVzdFJl
c3VsdC5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAyZjYxNmE5NDQ5YzBmZDljYWMzZDMxMGMz
YTc3NzdlMGQ2ZGJjZmQzLi5mZDJmY2JlMjBmN2U4ODQxNzIxMGVkY2I5YzUxNmQxMTE5NjE4MzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC01MCw3ICs1MCw2
IEBACiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmgiCiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCi0jaW1wb3J0ICJT
aW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJXZWJD
b250ZW50UmVhZGVyLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIK
QEAgLTE4OCwxMCArMTg3LDEwIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkCiAgICAgICAgIHJl
dHVybiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKIAogICAgIGlmIChwYXN0ZWJvYXJk
VHlwZSA9PSBTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKQotICAgICAgICByZXR1
cm4gZGF0YUluUlRGREZvcm1hdChhdHRyaWJ1dGVkU3RyaW5nKCphZGp1c3RlZFNlbGVjdGlvblJh
bmdlKCkpLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGRhdGFJblJURkRGb3JtYXQoYXR0cmlidXRl
ZFN0cmluZygqYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpKS5zdHJpbmcuZ2V0KCkpOwogCiAgICAg
aWYgKHBhc3RlYm9hcmRUeXBlID09IFN0cmluZyhsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpKSkg
ewotICAgICAgICBhdXRvIHN0cmluZyA9IGF0dHJpYnV0ZWRTdHJpbmcoKmFkanVzdGVkU2VsZWN0
aW9uUmFuZ2UoKSk7CisgICAgICAgIGF1dG8gc3RyaW5nID0gYXR0cmlidXRlZFN0cmluZygqYWRq
dXN0ZWRTZWxlY3Rpb25SYW5nZSgpKS5zdHJpbmc7CiAgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMg
dGhpcyBzdHJpcHBpbmcgbmVlZGVkIGhlcmUsIGJ1dCBub3QgaW4gd3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQ/CiAgICAgICAgIGlmIChbc3RyaW5nIGNvbnRhaW5zQXR0YWNobWVudHNdKQogICAg
ICAgICAgICAgc3RyaW5nID0gYXR0cmlidXRlZFN0cmluZ0J5U3RyaXBwaW5nQXR0YWNobWVudENo
YXJhY3RlcnMoc3RyaW5nLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29h
Lm1tCmluZGV4IGU2NzU5MDBlNDEwYjM5ZDI3ZTkwODYyNjZkZTUzZTVmZGU0NmMxZmQuLmJiZjQy
ZjZmYWRkZjdlNDRiZmE1Nzg3N2FhYjNiNGQ4ZDU2ODk0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2ll
U3RvcmFnCiAjaWYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPCAxMDE0MDApICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVU
VikKIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwb2xpY3lQcm9wZXJ0aWVzKGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQogewotICAgIHN0YXRpYyBO
U1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdOworICAg
IHN0YXRpYyBOU1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFsbG9jXSBpbml0XTsKICAgICBOU0Rp
Y3Rpb25hcnkgKnBvbGljeVByb3BlcnRpZXMgPSBAewogICAgICAgICBAIl9rQ0ZIVFRQQ29va2ll
UG9saWN5UHJvcGVydHlTaXRlRm9yQ29va2llcyI6IHNhbWVTaXRlSW5mby5pc1NhbWVTaXRlID8g
dXJsIDogZW1wdHlVUkwsCiAgICAgICAgIEAiX2tDRkhUVFBDb29raWVQb2xpY3lQcm9wZXJ0eUlz
VG9wTGV2ZWxOYXZpZ2F0aW9uIjogW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnNhbWVTaXRlSW5m
by5pc1RvcFNpdGVdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggMzY1MzgyZGY4MTAw
YjhlMzRkYWNhODk1NDkyMDdjZWMxMzNhNDNlNi4uY2M1ZGIwZTk5NGVjNzVkOTlhYmRkMTFjMTc4
NTczN2Y5MmY4ODcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0xNDYsNyArMTQ2
LDcgQEAgc3RhdGljIE5TVVJMICpzaXRlRm9yQ29va2llcyhSZXNvdXJjZVJlcXVlc3Q6OlNhbWVT
aXRlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE4KICAgICBjYXNlIFJlc291cmNlUmVxdWVzdDo6
U2FtZVNpdGVEaXNwb3NpdGlvbjo6U2FtZVNpdGU6CiAgICAgICAgIHJldHVybiB1cmw7CiAgICAg
Y2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVTaXRlRGlzcG9zaXRpb246OkNyb3NzU2l0ZToKLSAg
ICAgICAgc3RhdGljIE5TVVJMICplbXB0eVVSTCA9IFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOkAiIl07CisgICAgICAgIHN0YXRpYyBOU1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFsbG9j
XSBpbml0XTsKICAgICAgICAgcmV0dXJuIGVtcHR5VVJMOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCmluZGV4IDdlYTM4N2RjOWE3ZGQyNGRhODJkMzc1Y2UxODRhZmIxZmYwY2E3MjguLmM2
ODgwYzg5NjM5MTNiMWRiZWVhNThhNjU4YjQ5ZmMxNjI4NDg4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRhc2tXaXRoRmlyc3RQ
YXJ0eUZvclNhbWVTaXRlQ29va2llcyhOU1VSTFNlc3Npb25EYXRhVGFzayogdGFzCiAgICAgaWYg
KHJlcXVlc3QuaXNTYW1lU2l0ZVVuc3BlY2lmaWVkKCkpCiAgICAgICAgIHJldHVybjsKICNpZiBI
QVZFKEZPVU5EQVRJT05fV0lUSF9TQU1FX1NJVEVfQ09PS0lFX1NVUFBPUlQpCi0gICAgc3RhdGlj
IE5TVVJMICplbXB0eVVSTCA9IFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl07Cisg
ICAgc3RhdGljIE5TVVJMICplbXB0eVVSTCA9IFtbTlNVUkwgYWxsb2NdIGluaXRdOwogICAgIHRh
c2suX3NpdGVGb3JDb29raWVzID0gcmVxdWVzdC5pc1NhbWVTaXRlKCkgPyB0YXNrLmN1cnJlbnRS
ZXF1ZXN0LlVSTCA6IGVtcHR5VVJMOwogICAgIHRhc2suX2lzVG9wTGV2ZWxOYXZpZ2F0aW9uID0g
cmVxdWVzdC5pc1RvcFNpdGUoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDI2OTY1Yzdh
NWRiNDRjYjU4MWEyNWIxZjk2MzMyOWYyZmZjMWNjYWMuLmEwNWRmMGE5NDRmOTI4NjkwYjIzNDU4
ZGYxNDFjYzhmMzA2YmI2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAogI2ltcG9ydCAiQXJndW1lbnRDb2Rl
cnNDb2NvYS5oIgorI2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgpAQCAtNDQsNiArNDUsMjIgQEAK
IG5hbWVzcGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK3ZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmIGF0dHJpYnV0ZWRTdHJpbmcpCit7
CisgICAgZW5jb2RlciA8PCBhdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyA8PCBhdHRyaWJ1dGVkU3Ry
aW5nLmRvY3VtZW50QXR0cmlidXRlczsKK30KKworT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRl
ZFN0cmluZz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4g
YXR0cmlidXRlZFN0cmluZzsKKyAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGF0dHJpYnV0
ZWRTdHJpbmcpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk+IGRvY3VtZW50QXR0cmlidXRlczsKKyAgICBpZiAoIUlQQzo6ZGVjb2RlKGRl
Y29kZXIsIGRvY3VtZW50QXR0cmlidXRlcykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpLCBXVEZNb3ZlKGRvY3Vt
ZW50QXR0cmlidXRlcykgfSB9OworfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogc3RhdGlj
IGJvb2wgZmluaXNoRGVjb2RpbmcoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9E
b2N1bWVudEVkaXRpbmdDb250ZXh0LmgKaW5kZXggOWEyNGE0ZDIwMDE0MjAzMzZkNTZiY2IzOTlj
OThkZDM1NDcxZWI0ZC4uMDkxZjQzMjZjZTI2OTBlMjBkZTY4OTg3OWE2Y2IzYmM4NmE1MmRkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaApAQCAt
MjgsNyArMjgsNyBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRDb250
ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1RleHRHcmFudWxhcml0eS5oPgpAQCAtNjMsMTEgKzYzLDExIEBAIHN0cnVjdCBEb2N1bWVudEVk
aXRpbmdDb250ZXh0UmVxdWVzdCB7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dCB7CiAg
ICAgVUlXS0RvY3VtZW50Q29udGV4dCAqdG9QbGF0Zm9ybUNvbnRleHQoT3B0aW9uU2V0PFdlYktp
dDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q6Ok9wdGlvbnM+KTsKIAotICAgIEF0dHJp
YnV0ZWRTdHJpbmcgY29udGV4dEJlZm9yZTsKLSAgICBBdHRyaWJ1dGVkU3RyaW5nIHNlbGVjdGVk
VGV4dDsKLSAgICBBdHRyaWJ1dGVkU3RyaW5nIGNvbnRleHRBZnRlcjsKLSAgICBBdHRyaWJ1dGVk
U3RyaW5nIG1hcmtlZFRleHQ7Ci0gICAgQXR0cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRUZXh0Owor
ICAgIFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgY29udGV4dEJlZm9yZTsKKyAgICBXZWJDb3Jl
OjpBdHRyaWJ1dGVkU3RyaW5nIHNlbGVjdGVkVGV4dDsKKyAgICBXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nIGNvbnRleHRBZnRlcjsKKyAgICBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIG1hcmtl
ZFRleHQ7CisgICAgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRUZXh0OwogCiAg
ICAgc3RydWN0IFJhbmdlIHsKICAgICAgICAgdWludDY0X3QgbG9jYXRpb24geyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQppbmRleCA1ZjVj
Mzc0YTk4OTZhYmVlZGJiMzA1ZmE0ZTA4ZTQ3ODg3MmNiOTg1Li4xOWZlN2E4MzFiYTM1OTM0MTEx
M2JjMjBiN2Y1MGQ2MTQyNzg0ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9E
b2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3Vt
ZW50RWRpdGluZ0NvbnRleHQubW0KQEAgLTEzMSwzMSArMTMxLDMxIEBAIE9wdGlvbmFsPFdlYktp
dDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dD4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50
RWRpdGluZ0NvCiB7CiAgICAgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0IGNvbnRleHQ7
CiAKLSAgICBPcHRpb25hbDxXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmc+IGNvbnRleHRCZWZvcmU7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gY29udGV4dEJlZm9yZTsK
ICAgICBkZWNvZGVyID4+IGNvbnRleHRCZWZvcmU7CiAgICAgaWYgKCFjb250ZXh0QmVmb3JlKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9
ICpjb250ZXh0QmVmb3JlOwogCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5n
PiBzZWxlY3RlZFRleHQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4g
c2VsZWN0ZWRUZXh0OwogICAgIGRlY29kZXIgPj4gc2VsZWN0ZWRUZXh0OwogICAgIGlmICghc2Vs
ZWN0ZWRUZXh0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGNvbnRleHQuc2Vs
ZWN0ZWRUZXh0ID0gKnNlbGVjdGVkVGV4dDsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6QXR0cmli
dXRlZFN0cmluZz4gY29udGV4dEFmdGVyOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0
ZWRTdHJpbmc+IGNvbnRleHRBZnRlcjsKICAgICBkZWNvZGVyID4+IGNvbnRleHRBZnRlcjsKICAg
ICBpZiAoIWNvbnRleHRBZnRlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBj
b250ZXh0LmNvbnRleHRBZnRlciA9ICpjb250ZXh0QWZ0ZXI7CiAKLSAgICBPcHRpb25hbDxXZWJL
aXQ6OkF0dHJpYnV0ZWRTdHJpbmc+IG1hcmtlZFRleHQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
QXR0cmlidXRlZFN0cmluZz4gbWFya2VkVGV4dDsKICAgICBkZWNvZGVyID4+IG1hcmtlZFRleHQ7
CiAgICAgaWYgKCFtYXJrZWRUZXh0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IGNvbnRleHQubWFya2VkVGV4dCA9ICptYXJrZWRUZXh0OwogCi0gICAgT3B0aW9uYWw8V2ViS2l0
OjpBdHRyaWJ1dGVkU3RyaW5nPiBhbm5vdGF0ZWRUZXh0OworICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkF0dHJpYnV0ZWRTdHJpbmc+IGFubm90YXRlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBhbm5vdGF0
ZWRUZXh0OwogICAgIGlmICghYW5ub3RhdGVkVGV4dCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggNmJlY2JmNzBlMmFiMjRlYmY5MTZlNzBlOGEzOTNjYWUwZjI3ODQxMS4uMWQzNmJlZjQxOWY2
ZWYyYmZhN2JjOGZhZGFmYjQwMzFhZWZhMWI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBjbGFzcyBUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YTsKIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNl
clN0eWxlU2hlZXQ7CiAKK3N0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0IENhY2hlUXVl
cnlPcHRpb25zOwogc3RydWN0IENoYXJhY3RlclJhbmdlOwogc3RydWN0IENvbXBvc2l0aW9uVW5k
ZXJsaW5lOwpAQCAtMjA5LDYgKzIxMCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwog
fTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpBdHRyaWJ1dGVkU3RyaW5nJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJp
YnV0ZWRTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zPiB7CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYpOwog
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNv
cmU6OkNhY2hlUXVlcnlPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQXR0cmlidXRlZFN0cmluZy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F0dHJp
YnV0ZWRTdHJpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDJkNmIwMTAyNjFh
ZDMwOGE4YWU2N2EyM2RhMjhlZmY2M2FiNzM2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXR0cmlidXRlZFN0
cmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmcgewotICAgIFJldGFpblB0cjxOU0F0
dHJpYnV0ZWRTdHJpbmc+IHN0cmluZzsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkb2N1
bWVudEF0dHJpYnV0ZXM7Ci0KLSAgICBBdHRyaWJ1dGVkU3RyaW5nKCkgPSBkZWZhdWx0OwotCi0j
aWYgZGVmaW5lZChfX09CSkNfXykKLSAgICBBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZywgTlNEaWN0aW9uYXJ5ICpkb2N1bWVudEF0dHJpYnV0ZXMg
PSBuaWwpCi0gICAgICAgIDogc3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcpCi0gICAgICAgICwgZG9j
dW1lbnRBdHRyaWJ1dGVzKGRvY3VtZW50QXR0cmlidXRlcykKLSAgICB7Ci0gICAgfQotCi0gICAg
QXR0cmlidXRlZFN0cmluZyhSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYmIGF0dHJpYnV0
ZWRTdHJpbmcsIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+JiYgZG9jdW1lbnRBdHRyaWJ1dGVzID0g
eyB9KQotICAgICAgICA6IHN0cmluZyhXVEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpKQotICAgICAg
ICAsIGRvY3VtZW50QXR0cmlidXRlcyhXVEZNb3ZlKGRvY3VtZW50QXR0cmlidXRlcykpCi0gICAg
ewotICAgIH0KLQotICAgIG9wZXJhdG9yIE5TQXR0cmlidXRlZFN0cmluZyAqKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzdHJpbmcuZ2V0KCk7Ci0gICAgfQotI2VuZGlmCi19OwotCi19
Ci0KLW5hbWVzcGFjZSBJUEMgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YktpdDo6QXR0cmlidXRlZFN0cmluZz4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nJik7Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFdlYktpdDo6QXR0cmlidXRlZFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3RyaW5nLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDBmMmU5MmRiNjU0ZTQwOGM3YTAyZjM2YmU0NTY3OGIyMzlhNzAz
NDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW0KKysrIC9kZXYvbnVsbApAQCAt
MSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJB
dHRyaWJ1dGVkU3RyaW5nLmgiCi0KLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29jb2EuaCIKLSNp
bXBvcnQgIkRlY29kZXIuaCIKLSNpbXBvcnQgIkVuY29kZXIuaCIKLQotbmFtZXNwYWNlIElQQyB7
Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmc+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nJiBhdHRyaWJ1
dGVkU3RyaW5nKQotewotICAgIGVuY29kZXIgPDwgYXR0cmlidXRlZFN0cmluZy5zdHJpbmcgPDwg
YXR0cmlidXRlZFN0cmluZy5kb2N1bWVudEF0dHJpYnV0ZXM7Ci19Ci0KLU9wdGlvbmFsPFdlYktp
dDo6QXR0cmlidXRlZFN0cmluZz4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJp
bmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nOwotICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rl
ciwgYXR0cmlidXRlZFN0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZG9jdW1lbnRBdHRyaWJ1dGVzOwotICAgIGlmICghSVBD
OjpkZWNvZGUoZGVjb2RlciwgZG9jdW1lbnRBdHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICByZXR1cm4geyB7IFdURk1vdmUoYXR0cmlidXRlZFN0cmluZyksIFdU
Rk1vdmUoZG9jdW1lbnRBdHRyaWJ1dGVzKSB9IH07Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCAxZGU3N2UzNDQzNDQ5ZDA0OWJiMjliNGJmNWFkYmY2OThkMThhYTcxLi5iYmNiMDJl
YjUzNDdjZjNhYWJmZmNmM2VmYjRhMzQyYWI5YWEyMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0xODgsNyArMTg4LDYgQEAgU2hhcmVkL2lvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1Mu
Y3BwCiBTaGFyZWQvaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbQogU2hhcmVk
L2lvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcAogCi1TaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcu
bW0KIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQogU2hhcmVkL21hYy9Db2RlU2ln
bmluZy5tbQogU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYmYzNjEyYmY3ODhiZTkxMzcz
M2FiZGVjMTMzZDllOThmYjBlN2ZmMy4uMmQzYTc5MDQzNDQ3ZTdkZmViNGE1OGQzNjk1YjU1YTVk
OTFmYWE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJBUElGcmFtZVRyZWVOb2RlLmgiCiAj
aW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCi0jaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJDb2Nv
YUltYWdlLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1w
b3J0ICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCkBAIC0xMTYsNiArMTE1
LDcgQEAKICNpbXBvcnQgIl9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIgogI2ltcG9ydCAiX1dL
VmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJ
bnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NQmluZGlu
Zy5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
ci5tbQppbmRleCBhZDRiNjFlYzM5NDhiMDQ2ZjczM2RjYmU5ODdmYmFkOTRmMGUzMWZmLi5mZDZi
ZWUyNTFiZTlhYTRiYjg2NWFkMzU0MTcyZjAwZGQyNWFmYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KQEAg
LTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVDS0lO
RykKIAotI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDA4
OWE0YmFjNzVjZmFhNTNlZWU3Y2I4ZjkzODMyMWMxYmVlMmQ5MTQuLjRjNTVjZWE2NDg3MmQwYTky
ZDI2OGJkYmFhMWRlZTQ0YTI4NzkxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJBUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2ltcG9ydCAiQVBJTmF2aWdhdGlvbi5oIgogI2ltcG9y
dCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJD
b2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiQ29yZVRleHRIZWxwZXJzLmgiCiAjaW1wb3J0ICJG
b250SW5mby5oIgpAQCAtODIsNiArODEsNyBAQAogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FjdGl2
aXR5U3RhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hs
aWdodC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CkBAIC00OTUxLDE2
ICs0OTUxLDE1IEBAIHZvaWQgV2ViVmlld0ltcGw6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9w
b3NlZFJhbmdlKE5TUmFuZ2UgcHJvcG9zZWRSYW5nZSwgdm9pCiAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyUHRyIGNvcHldKTsKIAogICAgIExP
RyhUZXh0SW5wdXQsICJhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOigldSwgJXUpIiwgcHJv
cG9zZWRSYW5nZS5sb2NhdGlvbiwgcHJvcG9zZWRSYW5nZS5sZW5ndGgpOwotICAgIG1fcGFnZS0+
YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocHJvcG9zZWRSYW5nZSwg
W2NvbXBsZXRpb25IYW5kbGVyXShjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgIG1fcGFnZS0+YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMocHJvcG9zZWRSYW5nZSwgW2NvbXBsZXRpb25IYW5kbGVyXShjb25zdCBXZWJDb3JlOjpB
dHRyaWJ1dGVkU3RyaW5nJiBzdHJpbmcsIGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2Us
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICB2b2lkICheY29t
cGxldGlvbkhhbmRsZXJCbG9jaykoTlNBdHRyaWJ1dGVkU3RyaW5nICosIE5TUmFuZ2UpID0gKHZv
aWQgKF4pKE5TQXR0cmlidXRlZFN0cmluZyAqLCBOU1JhbmdlKSljb21wbGV0aW9uSGFuZGxlci5n
ZXQoKTsKICAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSkgewogICAgICAgICAgICAgTE9HKFRleHRJbnB1dCwgIiAgICAuLi5hdHRyaWJ1dGVkU3Vi
c3RyaW5nRnJvbVJhbmdlIGZhaWxlZC4iKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
QmxvY2soMCwgTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IHN0cmluZzsKLSAgICAgICAgTE9HKFRleHRJbnB1dCwgIiAgICAtPiBhdHRyaWJ1dGVkU3Vi
c3RyaW5nRnJvbVJhbmdlIHJldHVybmVkICVAIiwgW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSk7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2soW1thdHRyaWJ1dGVkU3RyaW5nIHJldGFp
bl0gYXV0b3JlbGVhc2VdLCBhY3R1YWxSYW5nZSk7CisgICAgICAgIExPRyhUZXh0SW5wdXQsICIg
ICAgLT4gYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSByZXR1cm5lZCAlQCIsIHN0cmluZy5z
dHJpbmcuZ2V0KCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2NrKHN0cmluZy5zdHJp
bmcuZ2V0KCksIGFjdHVhbFJhbmdlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMjNlMDQ4MThmNWU4MjdlM2E4NzkzMjU0YTJiMWUy
ZjI0Y2Q5Y2NhMS4uNjQxYTgyMjIxOGI4YWYwYjNmYjBjM2VjOWRkODEwY2ZkYTk2Y2M0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzksNiArMTM5LDcg
QEAKICNpbmNsdWRlICJXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZENsaWNrQXR0cmlidXRp
b24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hs
aWdodC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
ci5oPgpAQCAtMjAwLDcgKzIwMSw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
I2luY2x1ZGUgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJJbnNlcnRUZXh0T3B0aW9u
cy5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCIKQEAgLTQxMTUs
MTAgKzQxMTUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWQKIH0KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXR0cmlidXRlZFN0cmluZyYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVk
U3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0
cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdHRyaWJ1dGVkU3RyaW5nKCkpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGYxOTcxNmFmZmNmY2U2
OWJiZTgwYjkxNjk0YjM5ZTEwZGM1MGY1OGQuLjhkZjQ2NDBiZmE1ODFjNjk2MTMwOTcxZDNiY2E3
N2ZmZDBmNjA4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0y
MzIsNiArMjMyLDcgQEAgZW51bSBjbGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBi
b29sOwogZW51bSBjbGFzcyBXcml0aW5nRGlyZWN0aW9uIDogdWludDhfdDsKIAogc3RydWN0IEFw
cGxpY2F0aW9uTWFuaWZlc3Q7CitzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3Ry
dWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CkBAIC0yNTMsNyArMjU0LDcgQEAgc3RydWN0IFRl
eHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2lu
ZG93RmVhdHVyZXM7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwordGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKIHVzaW5nIEZsb2F0Qm94RXh0ZW50ID0g
UmVjdEVkZ2VzPGZsb2F0PjsKIH0KIApAQCAtMzIzLDcgKzMyNCw2IEBAIGNsYXNzIFdlYlZpZXdE
aWRNb3ZlVG9XaW5kb3dPYnNlcnZlcjsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBjbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogCi1zdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBXZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHM7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURl
dGVjdGlvblJlc3VsdDsKQEAgLTM5NSw3ICszOTUsNyBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiY+IEFwcGxpY2F0
aQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gQXR0cmlidXRlZFN0
cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gQXR0
cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbD4gRm9udEF0U2VsZWN0aW9uQ2Fs
bGJhY2s7CiAjZW5kaWYKIApAQCAtODgxLDcgKzg4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNo
YW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7CiAKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBF
ZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcm
LCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5n
UmFuZ2UmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBj
b25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBm
b250QXRTZWxlY3Rpb24oRnVuY3Rpb248dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9v
bCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWco
KTsKQEAgLTExMDMsNyArMTEwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Q29udGVudHNB
c1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOworICAgIHZvaWQg
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBnZXRC
eXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwpAQCAtMjA3OSw3ICsyMDc5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgcmVjdEZv
ckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVk
aXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGF0
dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRT
dHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGF0dHJp
YnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkF0dHJp
YnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lk
IGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBD
YWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYzQ2ZmNi
YjViNWEyNjg3ZmRkNzhjYTFkNTBmMDFlODI0OTQ5YzFkYi4uMmVlZTFiMGE5NmVlMGFhOWZiZGJl
MDI4YzFhNTZjMWViOGI4OWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTc1LDcgKzE3NSw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKE9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBBdHRyaWJ1dGVkU3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3Ry
aW5nIHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFj
dGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyBzdHJpbmcs
IHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAgICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soc3RydWN0IFdlYktp
dDo6Rm9udEluZm8gZm9udEluZm8sIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNN
dWx0aXBsZUZvbnRzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogICAg
IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2soc3RydWN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYTdjM2RmZTU1YjE4MmI0
NDhlOGM3NzE2MDBkY2MxMGU4MmIyODJjZi4uYzA1OTQwYzgyODdiMGNlNTE5MTAwODg0NWQ0MDg2
ZTg0MTQ4MmE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0
ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAi
Q29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKQEAgLTUwLDYgKzQ5LDcgQEAKICNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJv
eHlNYWMuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlv
bmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgpAQCAtMTg2LDEwICsx
ODYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29s
IGlzU2Nyb2xsYWJsZSkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFz
eW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3Qg
QXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwg
RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRp
dGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlv
bihBdHRyaWJ1dGVkU3RyaW5nKCksIEVkaXRpbmdSYW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbih7IH0sIEVkaXRpbmdSYW5nZSgp
LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2so
Y29uc3QgQXR0cmlidXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVh
bFJhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmli
dXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6QXR0cmli
dXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhhY3R1YWxSYW5nZS5pc1Zh
bGlkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1NWQ4YzgyZWEyMTUyMDI3Y2FkOWVkMDkxZGExNTdiMzkzMDMwYTI0Li4xOGFj
OTlmNDhjNTljMDBmN2Y2MWQ1Y2Y1ODMxOGRjMzNmZmUzY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3OTYsNyArMTc5Niw2IEBA
CiAJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEU2OTE0
MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJ
RTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTU4MkQyMTUzQ0JGRDcwMEI2MDg3
NSAvKiBQREZLaXRJbXBvcnRzLmggKi87IH07CiAJCUUxOUJEQTg2MTkzNjY1RTMwMEI5N0Y1NyAv
KiBjb20uYXBwbGUuYXBwc3RvcmUuQ29kZVJlZGVlbWVyTmV0c2NhcGVQbHVnaW4uc2IgaW4gQ29w
eSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE5QkRBODQxOTM2NUY0QjAwQjk3RjU3IC8qIGNvbS5hcHBsZS5hcHBzdG9yZS5Db2Rl
UmVkZWVtZXJOZXRzY2FwZVBsdWdpbi5zYiAqLzsgfTsKLQkJRTFBMzE3MzIxMzRDRUE2QzAwN0M5
QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQTMxNzMxMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3Ry
aW5nLmggKi87IH07CiAJCUUxQUVBMjJGMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQUVBMjJEMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dh
dGNoZXIuaCAqLzsgfTsKIAkJRTFCNzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUI3ODQ3MDE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
aCAqLzsgfTsKIAkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQzFCOEUxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovOyB9OwpAQCAtNTI3NSw4ICs1Mjc0LDYgQEAKIAkJ
RTE5NjdFMzcxNTBBQjVFMjAwQzczMTY5IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTE5QkRBODQxOTM2NUY0QjAwQjk3RjU3IC8qIGNvbS5h
cHBsZS5hcHBzdG9yZS5Db2RlUmVkZWVtZXJOZXRzY2FwZVBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBjb20uYXBwbGUuYXBwc3RvcmUuQ29kZVJlZGVlbWVyTmV0c2NhcGVQbHVnaW4u
c2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOUJEQTg4MTkzNjg2QTQwMEI5N0Y1
NyAvKiBTYW5kYm94VXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNhbmRib3hVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBMzE3
MzExMzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXR0cmlidXRlZFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlFMUEzMTczNDEzNENFQTgwMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF0dHJpYnV0ZWRTdHJp
bmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUVBMjJEMTQ2ODdCREIwMDgw
NDU2OSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxQUVBMjJFMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1bGxLZXli
b2FyZEFjY2Vzc1dhdGNoZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxQjc4NDcwMTYzRjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM5OCw4ICs5Mzk1LDYg
QEAKIAkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFBMzE3MzExMzRDRUE2QzAwN0M5QTRGIC8q
IEF0dHJpYnV0ZWRTdHJpbmcuaCAqLywKLQkJCQlFMUEzMTczNDEzNENFQTgwMDA3QzlBNEYgLyog
QXR0cmlidXRlZFN0cmluZy5tbSAqLywKIAkJCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyog
QXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywKIAkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUg
LyogQ29kZVNpZ25pbmcuaCAqLywKIAkJCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29k
ZVNpZ25pbmcubW0gKi8sCkBAIC0xMDcxOCw3ICsxMDcxMyw2IEBACiAJCQkJNTE1RTc3MjgxODNE
RDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFGQTYz
NEYyMzRGN0M2NDAwRkZBODY0IC8qIEFzeW5jUmV2YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRTFBMzE3MzIxMzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMkY1ODk3MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5OTEyQTg4Mzg4
MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MThFOEVGOTE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgK
aW5kZXggZjQ4ZjBiNjcxYWQ4ZmJmMTQ5MjU4YjY4YWM3Nzc5YjBkNTc1NDcxMy4uYWQ5YmY4Y2M1
MzU0YmViMGI2NzQ2YmRlMDc0YzAzODRhZGVmNzM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShQTEFURk9S
TV9EUklWRU5fVEVYVF9DSEVDS0lORykKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZWRTdHJpbmcuaCIK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCkBAIC0zOSw2ICszOCw3IEBAIGNsYXNzIEVuY29kZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEF0dHJpYnV0ZWRTdHJpbmc7CiBjbGFz
cyBWaXNpYmxlUG9zaXRpb247CiB9CiAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFRl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eShXZWJQYWdlJik7CiAgICAgflRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eSgpOwogCi0gICAgc3RhdGljIEF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVk
U3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucyhjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24m
LCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6
QXR0cmlidXRlZFN0cmluZyBhbm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9zaXRpb25zKGNvbnN0
IFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVQb3NpdGlv
biYpOwogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBAIC02NSw3ICs2
NSw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8UmFuZ2VBbmRPZmZzZXQ+IHJhbmdlQW5kT2Zm
c2V0UmVsYXRpdmVUb1NlbGVjdGlvbihpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgbGVuZ3RoKTsK
IAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdm9pZCByZXBsYWNlUmVsYXRpdmVUb1Nl
bGVjdGlvbihjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgaW50NjRfdCBzZWxlY3Rpb25PZmZzZXQs
IHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCB1
aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKTsKKyAgICB2b2lkIHJlcGxhY2VSZWxh
dGl2ZVRvU2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBpbnQ2NF90
IHNlbGVjdGlvbk9mZnNldCwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxh
Y2VtZW50TG9jYXRpb24sIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgpOwogICAg
IHZvaWQgcmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxlY3Rpb24oY29uc3QgU3RyaW5nJiBh
bm5vdGF0aW9uTmFtZSwgaW50NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCk7
CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdD
b250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmM1ZDUyYmVkYTM5OTdlMmRlNWNhZDBk
NDBlY2Y3MjM5NTAwODllZi4uMGNjZWIwMDIwMjM3MzExNjc5MjM2Mjg0MWQzYzczZTE2MjcwN2M5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4
dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVY
VF9DSEVDS0lORykKIAogbWVzc2FnZXMgLT4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IE5v
dFJlZkNvdW50ZWQgewotICAgIFJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKHN0cnVjdCBXZWJL
aXQ6OkF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVkU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvbk9m
ZnNldCwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRp
b24sIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgpCisgICAgUmVwbGFjZVJlbGF0
aXZlVG9TZWxlY3Rpb24oc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVk
U3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvbk9mZnNldCwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRf
dCByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1l
bnRMZW5ndGgpCiAKICAgICBSZW1vdmVBbm5vdGF0aW9uUmVsYXRpdmVUb1NlbGVjdGlvbihTdHJp
bmcgYW5ub3RhdGlvbk5hbWUsIGludDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5n
dGgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KaW5kZXggYTVl
ZTdlMzg5NWQ1MDhmYmM5OGVkMzhlODE4NzI5NGVjMjZjN2RhMi4uNzNmNTAyMzM1OGNkYmU1NWI3
MzMyYzY2OGUzM2E2N2RkZDc4Mzk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eS5tbQpAQCAtOTMsNyArOTMsNyBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHk6OlJhbmdlQW5kT2Zmc2V0PiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveAogICAg
IHJldHVybiB7IHsgY3JlYXRlTGl2ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzY29wZSwg
YWRqdXN0ZWRTZWxlY3Rpb25DaGFyYWN0ZXJSYW5nZSkpLCBhZGp1c3RlZFNlbGVjdGlvbkNoYXJh
Y3RlclJhbmdlLmxvY2F0aW9uIH0gfTsKIH0KIAotdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcm
IGFubm90YXRlZFN0cmluZywgaW50NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0
aCwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCB1aW50NjRfdCByZWxhdGl2
ZVJlcGxhY2VtZW50TGVuZ3RoKQordm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJl
cGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcm
IGFubm90YXRlZFN0cmluZywgaW50NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0
aCwgdWludDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCB1aW50NjRfdCByZWxhdGl2
ZVJlcGxhY2VtZW50TGVuZ3RoKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS5jb3JlUGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZVNl
bGVjdGlvbiYgZnJhbWVTZWxlY3Rpb24gPSBmcmFtZS5zZWxlY3Rpb24oKTsKQEAgLTE3Myw3ICsx
NzMsNyBAQCB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQW5ub3RhdGlv
blJlbGF0aXZlVG9TZWxlY3Rpb24oY29uc3QgU3RyaQogICAgIH0sIHR5cGVzKTsKIH0KIAotQXR0
cmlidXRlZFN0cmluZyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0
cmluZ0JldHdlZW5Qb3NpdGlvbnMoY29uc3QgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uJiBlbmQpCitXZWJDb3JlOjpBdHRyaWJ1
dGVkU3RyaW5nIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6YW5ub3RhdGVkU3Vic3RyaW5n
QmV0d2VlblBvc2l0aW9ucyhjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mIGVuZCkKIHsKICAgICBhdXRvIHN0YXJ0Qm91
bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydCk7CiAgICAgYXV0byBlbmRCb3VuZGFyeSA9
IG1ha2VCb3VuZGFyeVBvaW50KGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggMzI0NDE4NmM5ZDdhNjY1
MDE3M2I4MWUyZWRmNjE4YmUwM2RlN2NhZi4uNjQzMGZlNTgyZGU4OTg3ZTlkZjcwYWY3MzE4MjMz
YjkyZmY1MzU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKLSNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcu
aCIKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW1wb3J0ICJMb2FkUGFyYW1ldGVy
cy5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpAQCAtNTEsNyArNTAsNiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9TaW1wbGVSYW5nZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKQEAgLTE0Niw3ICsx
NDQsNyBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9G
b3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8u
b3B0aW9ucyA9IG9wdGlvbnM7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcocmFuZ2UsIEluY2x1ZGVJbWFnZXM6
Ok5vKTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmlu
ZyhyYW5nZSwgSW5jbHVkZUltYWdlczo6Tm8pLnN0cmluZzsKICAgICBhdXRvIHNjYWxlZEF0dHJp
YnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6W2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXV0pOwogICAgIE5TRm9udE1h
bmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwog
ICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJh
bmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4o
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CkBA
IC0yMjQsMTcgKzIyMiw5IEBAIFdlYlBheW1lbnRDb29yZGluYXRvciogV2ViUGFnZTo6cGF5bWVu
dENvb3JkaW5hdG9yKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNB
dHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXR0cmlidXRlZFN0
cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0Fz
QXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0
dHJpYnV0ZWRTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBkb2N1
bWVudEVsZW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpOwotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiBkb2N1bWVudEF0dHJpYnV0ZXM7Ci0gICAgYXV0byBzdHJpbmcgPSBhdHRyaWJ1
dGVkU3RyaW5nKHJhbmdlT2ZDb250ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgJmRvY3VtZW50QXR0
cmlidXRlcyk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoeyBXVEZNb3ZlKHN0cmluZyksIFdURk1v
dmUoZG9jdW1lbnRBdHRyaWJ1dGVzKSB9KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihhdHRyaWJ1
dGVkU3RyaW5nKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqbV9wYWdlLT5tYWluRnJh
bWUoKS5kb2N1bWVudCgpKSkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldFJlbW90ZU9iamVjdFJl
Z2lzdHJ5KFdlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5KiByZWdpc3RyeSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAwMGM0NzY5NWRlMjg2ZTM2M2IzMGIz
NGE4OTI3Y2U2YmE3ZGU4OTQ5Li43MTk0MGUxOTRkYTRlNzRjOGE3ODVjMjMxNjMwNmFjMmNlNjIw
MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0y
MDUsNiArMjA1LDcgQEAgZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7
CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIDogdWludDhf
dDsKIGVudW0gY2xhc3MgV3JpdGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBdHRy
aWJ1dGVkU3RyaW5nOwogc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiBzdHJ1Y3Qg
Q29tcG9zaXRpb25IaWdobGlnaHQ7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CkBAIC0y
NzksNyArMjgwLDYgQEAgZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBE
cmFnQ29udHJvbGxlckFjdGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZSA6IHVpbnQ4X3Q7CiAKLXN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3Ry
dWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0
Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0lu
Y2x1ZGVzQ2hpbGRGcmFtZXMsIENhbGxiYWNrSUQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOworICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0
dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nJik+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIHZvaWQg
Z2V0Q29udGVudHNBc01IVE1MRGF0YShDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ3MDM4YTA3
MDViOGQyNDc4ODdjOTQ5OTlkODU1NjZiMWExZDZlZDUuLjZkMDZjZDNlODk3ODIwZjc3ZWNiYzAz
MjU3MmYyYjczNmEwMjU3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjAwLDcgKzIwMCw3IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0Q29udGVudHNBc1N0cmluZyhlbnVtOmJvb2wgV2ViS2l0
OjpDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluQ2hpbGRGcmFtZXMsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldEFsbEZyYW1lcygpIC0+IChzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZVRyZWVOb2RlRGF0YSBtYWluRnJhbWUpIEFzeW5jCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgR2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdl
YktpdDo6QXR0cmlidXRlZFN0cmluZyByZXN1bHQpIEFzeW5jCisgICAgR2V0Q29udGVudHNBc0F0
dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVz
dWx0KSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIEdldENvbnRlbnRzQXNN
SFRNTERhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGI2OWE2NGE5
NWZkNzNiNWI0OWViOTliYzVjODM3ZDQyNGUzMTYwYzcuLmZhNzNiNjFhNzlkNjM2MTU5MGQwOTJi
NmE0YTU5NjlmMTJmNTcxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MjYyLDIyICs0MjYyLDIyIEBAIHZvaWQgV2Vi
UGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4
dFJlcXVlc3QgcmVxdWVzCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIG1ha2VTdHJpbmcg
PSBbXSAoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBlbmQpIC0+IFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IHsKKyAgICBhdXRvIG1ha2VT
dHJpbmcgPSBbXSAoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBlbmQpIC0+IEF0dHJpYnV0ZWRTdHJpbmcgewogICAgICAgICBhdXRvIHN0YXJ0Qm91
bmRhcnkgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICAg
ICAgYXV0byBlbmRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KGVuZC5kZWVwRXF1aXZhbGVu
dCgpKTsKICAgICAgICAgaWYgKCFzdGFydEJvdW5kYXJ5IHx8ICFlbmRCb3VuZGFyeSB8fCAqc3Rh
cnRCb3VuZGFyeSA9PSAqZW5kQm91bmRhcnkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOworICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVy
biBlZGl0aW5nLW9mZnNldC1jb21wYXRpYmxlIGF0dHJpYnV0ZWQgc3RyaW5ncyBpZiB0aGF0IG9w
dGlvbiBpcyByZXF1ZXN0ZWQuCi0gICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdO
b0JyZWFrU3BhY2UoeyBXVEZNb3ZlKCpzdGFydEJvdW5kYXJ5KSwgV1RGTW92ZSgqZW5kQm91bmRh
cnkpIH0pXSk7CisgICAgICAgIHJldHVybiB7IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOldlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZSh7IFdURk1vdmUoKnN0YXJ0Qm91bmRhcnkpLCBXVEZNb3ZlKCplbmRCb3VuZGFyeSkgfSld
KSwgbmlsIH07CiAgICAgfTsKIAotICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9IG1ha2VTdHJp
bmcoY29udGV4dEJlZm9yZVN0YXJ0LCBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24p
LmdldCgpOwotICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFydE9mUmFu
Z2VPZkludGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24p
LmdldCgpOwotICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdl
T2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpLmdldCgpOworICAgIGNvbnRl
eHQuY29udGV4dEJlZm9yZSA9IG1ha2VTdHJpbmcoY29udGV4dEJlZm9yZVN0YXJ0LCBzdGFydE9m
UmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pOworICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0g
bWFrZVN0cmluZyhzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VP
ZkludGVyZXN0SW5TZWxlY3Rpb24pOworICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0
cmluZyhlbmRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpOwog
ICAgIGlmIChjb21wb3NpdGlvblJhbmdlICYmIHJhbmdlc092ZXJsYXAocmFuZ2VPZkludGVyZXN0
LmdldCgpLCBjb21wb3NpdGlvblJhbmdlLmdldCgpKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRp
b24gY29tcG9zaXRpb25TdGFydChjb21wb3NpdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwog
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gY29tcG9zaXRpb25FbmQoY29tcG9zaXRpb25SYW5nZS0+
ZW5kUG9zaXRpb24oKSk7Ci0gICAgICAgIGNvbnRleHQubWFya2VkVGV4dCA9IG1ha2VTdHJpbmco
Y29tcG9zaXRpb25TdGFydCwgY29tcG9zaXRpb25FbmQpLmdldCgpOworICAgICAgICBjb250ZXh0
Lm1hcmtlZFRleHQgPSBtYWtlU3RyaW5nKGNvbXBvc2l0aW9uU3RhcnQsIGNvbXBvc2l0aW9uRW5k
KTsKICAgICAgICAgY29udGV4dC5zZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0LmxvY2F0aW9uID0g
ZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlv
biwgY29tcG9zaXRpb25TdGFydCk7CiAgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRSYW5nZUluTWFy
a2VkVGV4dC5sZW5ndGggPSBbY29udGV4dC5zZWxlY3RlZFRleHQuc3RyaW5nIGxlbmd0aF07CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQppbmRleCA5YmQ3MzFlMjIyYzA5MzY5N2JiMTgzOGUxODY1NjI4Yjk4ZjIwYTlkLi4w
NzNmYzFlOWU1ZDEwMDQ5YjM5MzJmOTc1YzU5MGVkNzNlYjc2MDRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5n
LmgiCiAjaW1wb3J0ICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW1wb3J0ICJFZGl0aW5nUmFuZ2UuaCIKQEAgLTMzOSw3ICszMzgsNyBAQCB2
b2lkIFdlYlBhZ2U6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNv
bnN0IEVkaXRpbmdSYW5nZSYgZWRpdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byBhdHRyaWJ1dGVkU3RyaW5nID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlLCBJbmNs
dWRlSW1hZ2VzOjpObyk7CisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gZWRpdGluZ0F0dHJp
YnV0ZWRTdHJpbmcoKnJhbmdlLCBJbmNsdWRlSW1hZ2VzOjpObykuc3RyaW5nOwogCiAgICAgLy8g
V2ViQ29yZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKSBpbnNpc3RzIG9uIGlu
c2VydGluZyBhIHRyYWlsaW5nCiAgICAgLy8gd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBz
dHJpbmcgd2hpY2ggYnJlYWtzIHRoZSBBVE9LIGlucHV0IG1ldGhvZC4gIDxyZGFyOi8vcHJvYmxl
bS81NDAwNTUxPgpAQCAtMzU0LDExICszNTMsMTEgQEAgdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVk
U3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXQK
ICAgICBBU1NFUlQocmFuZ2VUb1NlbmQuaXNWYWxpZCgpKTsKICAgICBpZiAoIXJhbmdlVG9TZW5k
LmlzVmFsaWQoKSkgewogICAgICAgICAvLyBTZW5kIGFuIGVtcHR5IEVkaXRpbmdSYW5nZSBhcyBh
IGxhc3QgcmVzb3J0IGZvciA8cmRhcjovL3Byb2JsZW0vMjcwNzgwODk+LgotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIEVkaXRpbmdSYW5nZSgpLCBjYWxsYmFj
a0lEKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0cmlidXRlZFN0
cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soeyBXVEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcp
LCBuaWwgfSwgRWRpdGluZ1JhbmdlKCksIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0cmlidXRlZFN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soYXR0cmlidXRlZFN0cmluZy5nZXQoKSwgcmFuZ2VU
b1NlbmQsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0
dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHsgV1RGTW92ZShhdHRyaWJ1
dGVkU3RyaW5nKSwgbmlsIH0sIHJhbmdlVG9TZW5kLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6Zm9udEF0U2VsZWN0aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTgxMCw3
ICs4MDksNyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFt
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBWZWN0bwogICAgIGlmICghcmFuZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gYXR0cmlidXRlZFNlbGVjdGlvbiA9IGF0dHJpYnV0ZWRT
dHJpbmcoKnJhbmdlKTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRTZWxlY3Rpb24gPSBhdHRyaWJ1dGVk
U3RyaW5nKCpyYW5nZSkuc3RyaW5nOwogICAgIGlmICghYXR0cmlidXRlZFNlbGVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
Lm1tCmluZGV4IGQ2MTRlYjkzMTRiMGY5ZjZkNTM1ZmZkMTcxY2YzOWE5MzliMGFmYjMuLjI2MGIx
YTJhZTdmMTA0YWQ5YjNjNWViYzczOTVmYTAyZmQyNGM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFu
Z2UuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU2hhcmluZ1NlcnZpY2VTUEkuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MSw3ICs1MCw3IEBAIHZvaWQgV2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpG
cmFtZVNlCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBhdHRy
aWJ1dGVkU2VsZWN0aW9uID0gYXR0cmlidXRlZFN0cmluZygqcmFuZ2UpOworICAgIGF1dG8gYXR0
cmlidXRlZFNlbGVjdGlvbiA9IGF0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKS5zdHJpbmc7CiAgICAg
aWYgKCFhdHRyaWJ1dGVkU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0KaW5kZXggZWYzZDRkNDNmOGIzODdlZTA0ODQ2NWZlODU2MjNiYjRmY2RjYThlMy4uM2NiZmU3
NmZmZDFmNzViZmZkMjg3YWE1Y2I3MWIyZjRkMTRlY2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAg
LTI2OSw5ICsyNjksOSBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkVGV4dAog
LSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZ0Zyb206KERPTU5vZGUgKilz
dGFydE5vZGUgc3RhcnRPZmZzZXQ6KGludClzdGFydE9mZnNldCB0bzooRE9NTm9kZSAqKWVuZE5v
ZGUgZW5kT2Zmc2V0OihpbnQpZW5kT2Zmc2V0CiB7CiAgICAgaWYgKCFzdGFydE5vZGUgfHwgIWVu
ZE5vZGUpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOkAiIl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgYXV0byByYW5nZSA9IFNp
bXBsZVJhbmdlIHsgeyAqY29yZShzdGFydE5vZGUpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Rh
cnRPZmZzZXQpIH0sIHsgKmNvcmUoZW5kTm9kZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRP
ZmZzZXQpIH0gfTsKLSAgICByZXR1cm4gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcocmFuZ2UpLmF1
dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKHJhbmdlKS5z
dHJpbmcuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBlMzkxMWQ3NWE4YTY3ZTU4OTA0YzE0
NDlmNDZlOWRlMTFjMTc0NjJlLi43MWIwMmQxYjUzZGVkYjllMmZiMzUwOWU1NTdmMTQ1Nzk5NzQz
MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTYzMDksNyArNjMwOSw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXRleHRTdG9y
YWdlCiAgICAgTE9HKFRleHRJbnB1dCwgInRleHRTdG9yYWdlIC0+IFwiJUBcIiIsIHJlc3VsdCA/
IFtyZXN1bHQgc3RyaW5nXSA6IEAiIik7CiAgICAgCiAgICAgLy8gV2UgaGF2ZSB0byByZXR1cm4g
YW4gZW1wdHkgc3RyaW5nIHJhdGhlciB0aGFuIG51bGwgdG8gcHJldmVudCBUU00gZnJvbSBjYWxs
aW5nIC1zdHJpbmcKLSAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0IDogW1tbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gcmVzdWx0ID8gcmVzdWx0IDogW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkBAIC02NDMwLDcgKzY0
MzAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGVkaXRpbmdBdHRyaWJ1dGVkU3Ry
aW5nKCpyYW5nZSk7CisgICAgYXV0byByZXN1bHQgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZygq
cmFuZ2UpLnN0cmluZzsKICAgICAKICAgICAvLyBXZWJDb3JlOjplZGl0aW5nQXR0cmlidXRlZFN0
cmluZ0Zyb21SYW5nZSgpIGluc2lzdHMgb24gaW5zZXJ0aW5nIGEgdHJhaWxpbmcKICAgICAvLyB3
aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyB3aGljaCBicmVha3MgdGhlIEFUT0sg
aW5wdXQgbWV0aG9kLiAgPHJkYXI6Ly9wcm9ibGVtLzU0MDA1NTE+CkBAIC03MDAzLDcgKzcwMDMs
NyBAQCAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfYXR0cmlidXRlZFN0cmluZ0Zyb21ET01SYW5n
ZTooRE9NUmFuZ2UgKilyYW5nZQogI2lmICFMT0dfRElTQUJMRUQKICAgICBkb3VibGUgc3RhcnQg
PSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKTsKICNlbmRpZgotICAgIGF1dG8gcmVzdWx0ID0g
YXR0cmlidXRlZFN0cmluZygqY29yZShyYW5nZSkpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byBy
ZXN1bHQgPSBhdHRyaWJ1dGVkU3RyaW5nKCpjb3JlKHJhbmdlKSkuc3RyaW5nLmF1dG9yZWxlYXNl
KCk7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IENGQWJzb2x1dGVU
aW1lR2V0Q3VycmVudCgpIC0gc3RhcnQ7CiAgICAgTE9HKFRpbWluZywgImNyZWF0aW5nIGF0dHJp
YnV0ZWQgc3RyaW5nIGZyb20gc2VsZWN0aW9uIHRvb2sgJWYgc2Vjb25kcy4iLCBkdXJhdGlvbik7
CkBAIC03MDE0LDMwICs3MDE0LDMwIEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9hdHRyaWJ1
dGVkU3RyaW5nRnJvbURPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAtIChOU0F0dHJpYnV0ZWRT
dHJpbmcgKilfbGVnYWN5QXR0cmlidXRlZFN0cmluZ0Zyb206KERPTU5vZGUgKilzdGFydENvbnRh
aW5lciBvZmZzZXQ6KGludClzdGFydE9mZnNldCB0bzooRE9NTm9kZSAqKWVuZENvbnRhaW5lciBv
ZmZzZXQ6KGludCllbmRPZmZzZXQKIHsKICAgICBpZiAoIXN0YXJ0Q29udGFpbmVyIHx8ICFlbmRD
b250YWluZXIpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOkAiIl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gW1tbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgcmV0dXJuIGF0dHJp
YnV0ZWRTdHJpbmcoV2ViQ29yZTo6U2ltcGxlUmFuZ2UgeyB7ICpjb3JlKHN0YXJ0Q29udGFpbmVy
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSB9LAotICAgICAgICB7ICpjb3Jl
KGVuZENvbnRhaW5lciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpIH0gfSkuYXV0
b3JlbGVhc2UoKTsKKyAgICAgICAgeyAqY29yZShlbmRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZW5kT2Zmc2V0KSB9IH0pLnN0cmluZy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5nCiB7CiAgICAgRE9NRG9jdW1lbnQg
KmRvY3VtZW50ID0gW1tzZWxmIF9mcmFtZV0gRE9NRG9jdW1lbnRdOwogICAgIGlmICghZG9jdW1l
bnQpCi0gICAgICAgIHJldHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOkAiIl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgaWYgKGF1dG8gYXR0cmlidXRl
ZFN0cmluZyA9IFtzZWxmIF9hdHRyaWJ1dGVkU3RyaW5nRnJvbURPTVJhbmdlOltkb2N1bWVudCBf
ZG9jdW1lbnRSYW5nZV1dKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlZFN0cmluZzsKLSAgICBy
ZXR1cm4gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKCpjb3JlKGRvY3VtZW50KSkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVkaXRpbmdB
dHRyaWJ1dGVkU3RyaW5nKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqY29yZShkb2N1
bWVudCkpKS5zdHJpbmcuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5n
ICopc2VsZWN0ZWRBdHRyaWJ1dGVkU3RyaW5nCiB7Ci0gICAgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZyA9IFtzZWxmIF9hdHRyaWJ1dGVkU3RyaW5nRnJvbURP
TVJhbmdlOltzZWxmIF9zZWxlY3RlZFJhbmdlXV07CisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5n
ID0gcmV0YWluUHRyKFtzZWxmIF9hdHRyaWJ1dGVkU3RyaW5nRnJvbURPTVJhbmdlOltzZWxmIF9z
ZWxlY3RlZFJhbmdlXV0pOwogICAgIGlmICghYXR0cmlidXRlZFN0cmluZykgewogICAgICAgICBh
dXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgICAgICBpZiAoY29yZUZy
YW1lKSB7CiAgICAgICAgICAgICBhdXRvIHJhbmdlID0gY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICAgICAgaWYgKHJhbmdlKQot
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmlu
ZygqcmFuZ2UpOworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0
cmlidXRlZFN0cmluZygqcmFuZ2UpLnN0cmluZzsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdF0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5k
ZXggODU5Njg0ODk1ZWNjMzcwYjJiZGEwOGIwMTI5NTE2ZWI2NDgyNmFkMC4uYjU1ZDE1NWFkYzI3
ZGM0MjVmYWRmZDM3NDcyYTYyZGQ1NzlhZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5tbQpAQCAtNTIwLDcgKzUyMCw3IEBAICsgKFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8p
X2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZTooY29uc3QgV2ViQ29yZTo6U2ltCiAgICAgcG9w
dXBJbmZvLm9yaWdpbiA9IE5TTWFrZVBvaW50KHJhbmdlUmVjdC54KCksIHJhbmdlUmVjdC55KCkg
KyBzY2FsZWREZXNjZW50KTsKICAgICBwb3B1cEluZm8ub3B0aW9ucyA9IGxvb2t1cE9wdGlvbnM7
CiAKLSAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZyhy
YW5nZSwgV2ViQ29yZTo6SW5jbHVkZUltYWdlczo6Tm8pOworICAgIGF1dG8gYXR0cmlidXRlZFN0
cmluZyA9IGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKHJhbmdlLCBXZWJDb3JlOjpJbmNsdWRlSW1h
Z2VzOjpObykuc3RyaW5nOwogICAgIGF1dG8gc2NhbGVkQXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbYXR0
cmlidXRlZFN0cmluZyBzdHJpbmddXSk7CiAgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIg
PSBbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397626</attachid>
            <date>2020-04-26 12:27:35 -0700</date>
            <delta_ts>2020-04-26 22:13:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211048-20200426122734.patch</filename>
            <type>text/plain</type>
            <size>77595</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRjNDEwNzIyZjNlMmQwMWRhZWRjZjk3
YmIxOGU2MTE1Mjk2NjdlZGYuLjNiZmU1ZjA2ZmU4NjczMDYzMTBkZDc3MzNmYzMxM2I1ZDkxNTc4
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDQtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gc3RvcCB1c2luZyBvdXQgYXJndW1lbnRzIGZv
ciBkb2N1bWVudCBhdHRyaWJ1dGVzIHdoZW4gY29udmVydGluZyB0byBhdHRyaWJ1dGVkIHN0cmlu
Z3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTA0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L2NvY29hL1VSTENvY29hLm1tOgorICAgICAgICAoV1RGOjpVUkw6OmNyZWF0ZUNGVVJMIGNvbnN0
KTogVXNlIGluaXQgaW5zdGVhZCBvZiBpbml0V2l0aFN0cmluZzpAIiIuIFRoZSB0d28gYXJlCisg
ICAgICAgIGVxdWl2YWxlbnQgaW4gbW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgRm91bmRhdGlvbi4K
KwogMjAyMC0wNC0yNiAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW1dURl0gV29ya2Fyb3VuZCBnY2MgYnVnIGZvciB1bnNpZ25lZCBiaXRmaWVsZCBy
ZWxhdGVkIHVzdWFsIGFyaXRobWV0aWMgY29udmVyc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhOTQ0MjY0
NzA0MWU5Njg1OGEyNGY5NjQzZGQ4MzRlMWI0YmU5MjNhLi40NTcwNGM4ZTkwMmY2MTY2MTlhMzYx
NjA2ZGM5YzBhMDk2YjUwZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDQt
MjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gc3Rv
cCB1c2luZyBvdXQgYXJndW1lbnRzIGZvciBkb2N1bWVudCBhdHRyaWJ1dGVzIHdoZW4gY29udmVy
dGluZyB0byBhdHRyaWJ1dGVkIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDogQnVp
bGRpbmcgbW9kaWZpZWQgdGhpcyBmaWxlIGF1dG9tYXRpY2FsbHkuIFVwbG9hZGluZworICAgICAg
ICB0aGUgbmV3IHZlcnNpb24uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZGVkIEF0dHJpYnV0ZWRTdHJpbmcuaC4KKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0F0dHJpYnV0ZWRTdHJpbmcuaDogQWRkZWQuIE1vdmVkIHRoaXMgZnJvbSBXZWJLaXQsIGJ1
dCByZW1vdmVkIGEgbG90IG9mCisgICAgICAgIGluZXNzZW50aWFscy4KKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4K
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c2VsZWN0aW9uQXNBdHRyaWJ1dGVkU3RyaW5nKTogVXBkYXRlZCBmb3IgY2hhbmdlIHRvIHRo
ZSByZXR1cm4gdmFsdWUgb2YgdGhlCisgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgZnVuY3Rpb24s
IGFuZCB1c2UgaW5pdCBpbnN0ZWFkIG9mIGluaXRXaXRoU3RyaW5nOkAiIi4KKworICAgICAgICAq
IGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5oOiBDaGFuZ2VkIHRvIGFuIE9iamVjdGl2ZS1D
LW9ubHkgaGVhZGVyLCBvbWl0dGluZyB0aGluZ3MKKyAgICAgICAgbGlrZSAjcHJhbWdhIG9uY2Uu
IFJldHVybiB0aGUgQXR0cmlidXRlZFN0cmluZyBzdHJ1Y3QgZnJvbSB0aGUgZnVuY3Rpb25zIGlu
c3RlYWQgb2YKKyAgICAgICAgdXNpbmcgYW4gb3V0IGFyZ3VtZW50IGZvciBkb2N1bWVudCBhdHRy
aWJ1dGVzLgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6OmNvbnZlcnQpOiBSZXR1cm4gYW4gQXR0cmlidXRlZFN0cmluZyBh
bmQgZHJvcCB0aGUgb3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlZFN0
cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcp
OiBEaXR0by4gQWxzbyByZWZhY3RvciBhIGxpdHRsZSBiaXQuCisKKyAgICAgICAgKiBlZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW06IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZS4KKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tOiBSZW1vdmVkIHVubmVlZGVkIGlu
Y2x1ZGUuCisKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKTogVXBkYXRlZCBzaW5j
ZSBhdHRyaWJ1dGVkU3RyaW5nCisgICAgICAgIG5vdyByZXR1cm5zIGEgc3RydWN0dXJlLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBvbGljeVByb3BlcnRpZXMpOiBVc2UgaW5pdCBpbnN0
ZWFkIG9mIGluaXRXaXRoU3RyaW5nOkAiIi4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2l0ZUZvckNv
b2tpZXMpOiBVc2UgaW5pdCBpbnN0ZWFkIG9mIGluaXRXaXRoU3RyaW5nOkAiIi4KKwogMjAyMC0w
NC0yNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1RG
Q10gQ29tcHV0ZSBhbmQgZGlzdHJpYnV0ZSBleHRyYSB2ZXJ0aWNhbCBzcGFjZSBmb3Igcm93cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1YTk2ODU4N2JjMmIzZDNiZjEyOWNmY2ViN2MzOThkNDNkYmEyMmJmLi4xNmFl
M2JkMTRmN2Y1OGYyNTZiZTk1ZDgyMWFhYWJkMDA2OTY5NDI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDYyIEBACisyMDIwLTA0LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIHN0b3AgdXNpbmcgb3V0IGFyZ3VtZW50cyBmb3IgZG9jdW1lbnQgYXR0cmli
dXRlcyB3aGVuIGNvbnZlcnRpbmcgdG8gYXR0cmlidXRlZCBzdHJpbmdzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwNDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp1cGRhdGVUYXNrV2l0
aEZpcnN0UGFydHlGb3JTYW1lU2l0ZUNvb2tpZXMpOiBVc2UgaW5pdCBpbnN0ZWFkIG9mIGluaXRX
aXRoU3RyaW5nOkAiIi4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRD
b2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nPjo6ZW5jb2RlKTogTW92ZWQgaGVyZSBmcm9tIEF0dHJpYnV0ZWRTdHJpbmcu
bW0uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmlu
Zz46OmRlY29kZSk6IERpdHRvLgorCisgICAgICAgICogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0Nv
bnRleHQuaDogVXBkYXRlZCB0byB1c2UgV2ViQ29yZTo6QXR0cmlidXRlU3RyaW5nLgorICAgICAg
ICAqIFNoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dD46OmRlY29kZSk6IERpdHRv
LgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOiBBZGRlZCBjb2Rl
ciBmb3IgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZy4KKworICAgICAgICAqIFNoYXJlZC9tYWMv
QXR0cmlidXRlZFN0cmluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvQXR0cmli
dXRlZFN0cmluZy5tbTogUmVtb3ZlZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6IFJl
bW92ZWQgQXR0cmlidXRlZFN0cmluZy5tbS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOiBVcGRhdGVkIHRvIHVzZSBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
LgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5n
ZSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JD
aGFyYWN0ZXJSYW5nZUNhbGxiYWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBBdHRyaWJ1dGVkU3RyaW5nLmggYW5kIEF0dHJp
YnV0ZWRTdHJpbmcubW0uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4
dENoZWNraW5nQ29udHJvbGxlclByb3h5Lmg6IFVwZGF0ZWQgdG8gdXNlIFdlYkNvcmU6OkF0dHJp
YnV0ZWRTdHJpbmcuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbToKKyAgICAg
ICAgKFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZXBsYWNlUmVsYXRpdmVU
b1NlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMpOiBEaXR0by4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZSk6IFVwZGF0
ZWQgc2luY2UgZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcKKyAgICAgICAgcmV0dXJucyBhIHN0cnVj
dC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcpOiBVcGRhdGVkIHRvIHVzZSBTaW1wbGVSYW5nZSBhbmQKKyAgICAgICAgc2luY2UgYXR0cmli
dXRlZFN0cmluZyByZXR1cm5zIGEgc3RydWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDogVXBkYXRlZCB0byB1c2UgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZy4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogRGl0dG8u
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6IERpdHRv
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
QXN5bmMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlU2VsZWN0aW9u
U2VydmljZUNsaWNrKTogRGl0dG8uCisKIDIwMjAtMDQtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgbGl2ZSByYW5nZXMgaW4gZnVuY3Rpb25z
IHRoYXQgcmV0dXJuIHJhbmdlIG9mIHRoZSBzZWxlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwppbmRleCBlODdjNjcxMjMxNzYxY2E0MTA5YmMwZTc1MWE0NmE4ZTA4NTY5NDhkLi5jZTY5
MjU3OTg0ZjgwMjFiMGI1MWZkNzEwNjAxYzAzOGYyYzllMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDQtMjYgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gc3RvcCB1c2luZyBvdXQgYXJndW1lbnRz
IGZvciBkb2N1bWVudCBhdHRyaWJ1dGVzIHdoZW4gY29udmVydGluZyB0byBhdHRyaWJ1dGVkIHN0
cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MTA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW06CisgICAgICAg
IChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNs
aWNrKTogVXBkYXRlZCBzaW5jZQorICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nIHJldHVybnMgYSBz
dHJ1Y3QuCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAg
ICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBhdHRyaWJ1dGVkU3RyaW5nRnJvbTpzdGFydE9m
ZnNldDp0bzplbmRPZmZzZXQ6XSk6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBpbml0IGluc3Rl
YWQgb2YgaW5pdFdpdGhTdHJpbmc6QCIiLgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRleHRTdG9yYWdlXSk6IERJdHRvLgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOl0pOiBEaXR0by4K
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2F0dHJpYnV0ZWRTdHJpbmdGcm9tRE9NUmFuZ2U6XSk6
IERpdHRvLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfbGVnYWN5QXR0cmlidXRlZFN0cmluZ0Zy
b206b2Zmc2V0OnRvOm9mZnNldDpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGF0
dHJpYnV0ZWRTdHJpbmddKTogRGl0dG8uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNlbGVjdGVk
QXR0cmlidXRlZFN0cmluZ10pOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW06CisgICAgICAgICgrW1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIgX2RpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZTppbkZyYW1lOndpdGhMb29rdXBPcHRp
b25zOmluZGljYXRvck9wdGlvbnM6dHJhbnNpdGlvbjpdKToKKyAgICAgICAgVXBkYXRlZC4KKwog
MjAyMC0wNC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Rv
cCB1c2luZyBsaXZlIHJhbmdlcyBpbiBmdW5jdGlvbnMgdGhhdCByZXR1cm4gcmFuZ2Ugb2YgdGhl
IHNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0g
Yi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRleCAzNjY5OGExMzE1MjFjN2Y2
NTZhNzYyNDdhZGQ4MDA0YmZiMWU4M2JiLi41NTZkM2E5ZTMzOGYyMTc1MzJhMjYxYmYwMGU2YzMx
MDQ2NGE0ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtNjUsNyArNjUsNyBAQCBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogCiAgICAgaWYgKGlz
RW1wdHkoKSkgewogICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2Vl
biBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVt
cHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBDRlVSTFJlZilh
ZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpOworICAgICAg
ICByZXR1cm4gKF9fYnJpZGdlIENGVVJMUmVmKWFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdF0p
LmdldCgpOwogICAgIH0KIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZDRkMTI4
NWU4NzEwY2I1NTg3ZmJiMmVlZWY4ZTRjMmNkNmMzZTAwLi5mZDNiYTAwMWM3YzE3M2NjN2YwYmI2
NDkwZDg1ODliNTg0OTUyYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKQEAgLTExODAsMyArMTE4MCw1IEBAICQoUFJPSkVDVF9ESVIpL3ht
bC9YUGF0aFJlc3VsdC5pZGwKICQoUFJPSkVDVF9ESVIpL3htbC9YU0xUUHJvY2Vzc29yLmlkbAog
JChQUk9KRUNUX0RJUikveG1sL3htbGF0dHJzLmluCiAkKFBST0pFQ1RfRElSKS94bWwveG1sbnNh
dHRycy5pbgorQXBwbGVQYXlTZXR1cC5pZGwKK0FwcGxlUGF5U2V0dXBGZWF0dXJlLmlkbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDYzMmI4MjYzODNjZmMxZDQyODMyMGRmNDNmMzNjYmE2MDBjZTkxZjkuLmM4Y2UyNDg3OWVhN2Zi
NDNiZjI1MWU2OWM3YzUzZDhiZWNhMWJhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3MTgsNiArMjcxOCw3IEBACiAJCTkz
RDlENTNDMERBMjdFMTgwMDc3MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDlENTNCMERBMjdFMTgwMDc3
MjE2QyAvKiBSYW5nZUJvdW5kYXJ5UG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0UyNDFGRjBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZy
YW1lT3duZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0UyNDFGRTBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNF
MkEzMDcxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTJBMzA1MTIzRTlEQzAwMDlGRTEy
QSAvKiBIVE1MUGFyc2VySWRpb21zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTNFNUIyNjUyNDU1RTk2RjAwNUM1MkQwIC8qIEF0dHJpYnV0ZWRT
dHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RTVCMjYzMjQ1NUU5NkYwMDVDNTJEMCAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk4RTUwODI0NUU1OTAw
MUU5QUJDIC8qIEhUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjUyM0QyM0MwMkRFNDM5NjAxODYzNUNBIC8qIEhUTUxEb2N1bWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5
OEU2MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyM0YwMkRFNDM5NjAxODYzNUNBIC8qIEhU
TUxFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNGMTk4RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjNEMjc5MDJE
RTQzRDcwMTg2MzVDQSAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwOTQyLDYgKzEwOTQzLDcgQEAKIAkJ
OTNFMkEzMDQxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFBhcnNlcklkaW9tcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTJBMzA1MTIzRTlEQzAwMDlGRTEyQSAvKiBIVE1M
UGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxQYXJz
ZXJJZGlvbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNUIyNTQyNDUzNkIx
RTAwNUM1MkQwIC8qIFVSTERlY29tcG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVVJMRGVjb21wb3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRTVCMjYzMjQ1NUU5NkYwMDVDNTJEMCAvKiBBdHRyaWJ1dGVkU3RyaW5nLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0dHJpYnV0ZWRTdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFQjM1NUUwOUUzN0ZENjAwRjQzNzk5IC8qIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRUVDMUU1MDlDMjg3NzcwMEM1MTVEMSAvKiBBdHRyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdHRyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNFRUMxRTYwOUMyODc3NzAwQzUxNUQxIC8qIENoYXJhY3RlckRhdGEuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENoYXJhY3RlckRhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjE1ODIsNiArMjE1ODQsNyBAQAogCQkJCUNFNDU5NDY1MjQxMjFBMDUwMDc4
MDE5RiAvKiBBbHRlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlci5tbSAqLywKIAkJCQlDRTdC
MkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8s
CiAJCQkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlci5tbSAqLywKKwkJCQk5M0U1QjI2MzI0NTVFOTZGMDA1QzUyRDAgLyogQXR0cmlidXRlZFN0
cmluZy5oICovLAogCQkJCTVDQ0MyNzA3MjJENTNCNjkwMDk2NEZBMCAvKiBBdXRvZmlsbEVsZW1l
bnRzLmNwcCAqLywKIAkJCQk1Q0NDMjcwNjIyRDUzQjY4MDA5NjRGQTAgLyogQXV0b2ZpbGxFbGVt
ZW50cy5oICovLAogCQkJCUM1MjI3REVGMUMzQzZERDcwMEY1RUQ1NCAvKiBEYXRhRGV0ZWN0aW9u
LmggKi8sCkBAIC0yOTU0NSw2ICsyOTU0OCw3IEBACiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNB
QzhEIC8qIEF0dHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4
RCAvKiBBdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTgxNERBMUM3MEUxMEQwMEJG
ODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzRTVCMjY1MjQ1NUU5NkYwMDVDNTJEMCAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjA3QTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9BcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ2MjlFQTMxNTRCNDcxNjAwMDZEMDI2IC8qIEF1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNUZGNzEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdHRyaWJ1dGVkU3RyaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0F0dHJpYnV0ZWRTdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjUx
YWQ5NDE0NDczNTdmMDVkNGUxZTEwYzI4ZWI3YzZiNmE1M2M3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdHRyaWJ1dGVkU3RyaW5nLmgKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisKK09CSkNfQ0xBU1MgTlNBdHRyaWJ1dGVkU3RyaW5nOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nIHsKKyAgICBSZXRhaW5QdHI8TlNBdHRy
aWJ1dGVkU3RyaW5nPiBzdHJpbmc7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZG9jdW1l
bnRBdHRyaWJ1dGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IGJmNTE2ZjQ5
M2ZmZTFkMjRkOWZjZmE2NDk3ZDc0OWQzN2I2Mjg4MjguLjA4OWEyMWY1YzVmMTkxYmZlNzVmNTky
YzI4YzU0OGRhOGFiZjcyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTM2LDcgKzM2LDYgQEAKICNpbXBvcnQgIkZyYW1lLmgi
CiAjaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cu
aCIKLSNpbXBvcnQgIkhUTUxDb252ZXJ0ZXIuaCIKICNpbXBvcnQgIkhpdFRlc3RSZXN1bHQuaCIK
ICNpbXBvcnQgIk5vdEltcGxlbWVudGVkLmgiCiAjaW1wb3J0ICJQYWdlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCA4NTgwNzgxMjE0MWRlNTY5
MzU0OWQ0M2UxYTY0OGI0ZWM4OWI5NmRhLi43MjJmODQ4NTM5NWUxZTgyM2E2MTlmMzg1OTM2NWY0
MDRmNzQ4ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRv
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgogc3RhdGljIFJl
dGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IHNlbGVjdGlvbkFzQXR0cmlidXRlZFN0cmluZyhj
b25zdCBGcmFtZSYgZnJhbWUpCiB7CiAgICAgYXV0byByYW5nZSA9IGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKLSAgICByZXR1cm4gcmFuZ2UgPyBhdHRyaWJ1dGVk
U3RyaW5nKCpyYW5nZSkgOiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpAIiJdKTsKKyAgICByZXR1cm4gcmFuZ2UgPyBhdHRyaWJ1dGVkU3RyaW5nKCpy
YW5nZSkuc3RyaW5nIDogYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0p
OwogfQogCiB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2Fy
ZCYgcGFzdGVib2FyZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLmgKaW5kZXggNDBiNTU4YTkwYzU2Y2U4OTJjYzgyMzRhYjBhMGIzNWNiN2E1N2M1ZS4uZGNl
YTczMGU2NzE3NzA3ODg1YmNkOWNkZDI0ZWQ2YmJmMTgxNzQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLmgKQEAgLTIzLDI1ICsyMywyMCBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNwcmFnbWEgb25jZQotCi0j
aW1wb3J0IDx3dGYvRm9yd2FyZC5oPgotCi1PQkpDX0NMQVNTIE5TQXR0cmlidXRlZFN0cmluZzsK
KyNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IFNpbXBsZVJhbmdlOwotCi1XRUJDT1JFX0VY
UE9SVCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nKGNvbnN0
IFNpbXBsZVJhbmdlJiwgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4qIGRvY3VtZW50QXR0cmlidXRl
cyA9IG51bGxwdHIpOworV0VCQ09SRV9FWFBPUlQgQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVk
U3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKICNpZiBQTEFURk9STShNQUMpCi0vLyBUaGlz
IGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBIVE1MIGNvbnZlcnNpb24gZG9lc24ndCBoYW5k
bGUgYXMgbWFueQotLy8gYWR2YW5jZWQgZmVhdHVyZXMsIHN1Y2ggYXMgdGFibGVzLCBidXQgaXQg
ZG9lcyB1c2UgVGV4dEl0ZXJhdG9yIHNvIHRoZQorLy8gVGhpcyBhbHRlcm5hdGUgaW1wbGVtZW50
YXRpb24gb2YgSFRNTCBjb252ZXJzaW9uIGRvZXNuJ3QgaGFuZGxlIGFzIG1hbnkgYWR2YW5jZWQg
ZmVhdHVyZXMsCisvLyBzdWNoIGFzIHRhYmxlcywgYW5kIGRvZXNuJ3QgcHJvZHVjZSBkb2N1bWVu
dCBhdHRyaWJ1dGVzLCBidXQgaXQgZG9lcyB1c2UgVGV4dEl0ZXJhdG9yIHNvCiAvLyB0ZXh0IG9m
ZnNldHMgd2lsbCBleGFjdGx5IG1hdGNoIHBsYWluIHRleHQgYW5kIG90aGVyIGVkaXRpbmcgbWFj
aGluZXJ5LgogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gYW5kIHRoZSBvbmUgYWJvdmUgc2hvdWxk
IGJlIG1lcmdlZC4KIGVudW0gY2xhc3MgSW5jbHVkZUltYWdlcyB7IFllcywgTm8gfTsKLVdFQkNP
UkVfRVhQT1JUIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGVkaXRpbmdBdHRyaWJ1dGVk
U3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiwgSW5jbHVkZUltYWdlcyA9IEluY2x1ZGVJbWFnZXM6
Olllcyk7CitXRUJDT1JFX0VYUE9SVCBBdHRyaWJ1dGVkU3RyaW5nIGVkaXRpbmdBdHRyaWJ1dGVk
U3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiwgSW5jbHVkZUltYWdlcyA9IEluY2x1ZGVJbWFnZXM6
Olllcyk7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGYxZmNhNGViNmViNGFiMTAy
YTgxMTJmNzFjYzJlNTIxZjE0MzI4ZDcuLjljY2U1MmUwZWZhMTY0YjcwMDNmODE5YWI4MWRmOTc4
OTNjZWQxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KQEAgLTI3OSw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFRNTENvbnZl
cnRlcihjb25zdCBTaW1wbGVSYW5nZSYpOwogICAgIH5IVE1MQ29udmVydGVyKCk7CiAKLSAgICBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBjb252ZXJ0KFJldGFpblB0cjxOU0RpY3Rpb25h
cnk+KiBkb2N1bWVudEF0dHJpYnV0ZXMgPSBudWxscHRyKTsKKyAgICBBdHRyaWJ1dGVkU3RyaW5n
IGNvbnZlcnQoKTsKIAogcHJpdmF0ZToKICAgICBQb3NpdGlvbiBtX3N0YXJ0OwpAQCAtMzk3LDEw
ICszOTcsMTAgQEAgSFRNTENvbnZlcnRlcjo6fkhUTUxDb252ZXJ0ZXIoKQogICAgIFtfd3JpdGlu
Z0RpcmVjdGlvbkFycmF5IHJlbGVhc2VdOwogfQogCi1SZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3Ry
aW5nPiBIVE1MQ29udmVydGVyOjpjb252ZXJ0KFJldGFpblB0cjxOU0RpY3Rpb25hcnk+KiBkb2N1
bWVudEF0dHJpYnV0ZXMpCitBdHRyaWJ1dGVkU3RyaW5nIEhUTUxDb252ZXJ0ZXI6OmNvbnZlcnQo
KQogewogICAgIGlmIChjb21wYXJlUG9zaXRpb25zKG1fc3RhcnQsIG1fZW5kKSA+IDApCi0gICAg
ICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBOb2RlKiBjb21tb25B
bmNlc3RvckNvbnRhaW5lciA9IF9jYWNoZXMtPmNhY2hlQW5jZXN0b3JzT2ZTdGFydFRvQmVDb252
ZXJ0ZWQobV9zdGFydCwgbV9lbmQpOwogICAgIEFTU0VSVChjb21tb25BbmNlc3RvckNvbnRhaW5l
cik7CkBAIC00MTgsMTAgKzQxOCw3IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IEhU
TUxDb252ZXJ0ZXI6OmNvbnZlcnQoUmV0YWluUHRyPE5TRGljdGlvbmFyeT4qIGRvCiAgICAgaWYg
KF9kb21SYW5nZVN0YXJ0SW5kZXggPiAwICYmIF9kb21SYW5nZVN0YXJ0SW5kZXggPD0gW19hdHRy
U3RyIGxlbmd0aF0pCiAgICAgICAgIFtfYXR0clN0ciBkZWxldGVDaGFyYWN0ZXJzSW5SYW5nZTpO
U01ha2VSYW5nZSgwLCBfZG9tUmFuZ2VTdGFydEluZGV4KV07CiAKLSAgICBpZiAoZG9jdW1lbnRB
dHRyaWJ1dGVzKQotICAgICAgICAqZG9jdW1lbnRBdHRyaWJ1dGVzID0gX2RvY3VtZW50QXR0cnM7
Ci0KLSAgICByZXR1cm4gX2F0dHJTdHI7CisgICAgcmV0dXJuIHsgV1RGTW92ZShfYXR0clN0ciks
IFdURk1vdmUoX2RvY3VtZW50QXR0cnMpIH07CiB9CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTIzNjgsNjkgKzIzNjUsNTggQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVy
PiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyBtb3JlIEhUTUwgZmVh
dHVyZXMgdGhhbiB0aGUgZWRpdGluZyB2YXJpYW50IGJlbG93LCBzdWNoIGFzIHRhYmxlcy4KLVJl
dGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlLCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiogZG9jdW1lbnRBdHRyaWJ1dGVz
KQorQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiBy
YW5nZSkKIHsKLSAgICByZXR1cm4gSFRNTENvbnZlcnRlciB7IHJhbmdlIH0uY29udmVydChkb2N1
bWVudEF0dHJpYnV0ZXMpOworICAgIHJldHVybiBIVE1MQ29udmVydGVyIHsgcmFuZ2UgfS5jb252
ZXJ0KCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCiAKIC8vIFRoaXMgZnVuY3Rpb24gdXNlcyBU
ZXh0SXRlcmF0b3IsIHdoaWNoIG1ha2VzIG9mZnNldHMgaW4gaXRzIHJlc3VsdCBjb21wYXRpYmxl
IHdpdGggSFRNTCBlZGl0aW5nLgotUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gZWRpdGlu
Z0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBJbmNsdWRlSW1hZ2Vz
IGluY2x1ZGVJbWFnZXMpCitBdHRyaWJ1dGVkU3RyaW5nIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5n
KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgSW5jbHVkZUltYWdlcyBpbmNsdWRlSW1hZ2VzKQog
ewotICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVk
Rm9udE1hbmFnZXJdOwotICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtb
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07CisgICAgYXV0byBmb250TWFu
YWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKKyAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byBhdHRycyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CiAgICAgTlNVSW50ZWdlciBzdHJpbmdMZW5ndGggPSAwOwotICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBhdHRycyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7Ci0KICAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSk7ICFpdC5hdEVu
ZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgU2ltcGxlUmFuZ2UgY3VycmVudFRleHRSYW5n
ZSA9IGl0LnJhbmdlKCk7Ci0gICAgICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyID0gY3VycmVudFRl
eHRSYW5nZS5zdGFydC5jb250YWluZXI7Ci0gICAgICAgIE5vZGUmIGVuZENvbnRhaW5lciA9IGN1
cnJlbnRUZXh0UmFuZ2UuZW5kLmNvbnRhaW5lcjsKLSAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0g
Y3VycmVudFRleHRSYW5nZS5zdGFydC5vZmZzZXQ7Ci0gICAgICAgIGludCBlbmRPZmZzZXQgPSBj
dXJyZW50VGV4dFJhbmdlLmVuZC5vZmZzZXQ7Ci0KLSAgICAgICAgaWYgKGluY2x1ZGVJbWFnZXMg
PT0gSW5jbHVkZUltYWdlczo6WWVzKSB7Ci0gICAgICAgICAgICBpZiAoJnN0YXJ0Q29udGFpbmVy
ID09ICZlbmRDb250YWluZXIgJiYgKHN0YXJ0T2Zmc2V0ID09IGVuZE9mZnNldCAtIDEpKSB7Ci0g
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IHN0YXJ0Q29udGFpbmVyLnRyYXZlcnNlVG9DaGls
ZEF0KHN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVu
dD4obm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+
IGZpbGVXcmFwcGVyID0gZmlsZVdyYXBwZXJGb3JFbGVtZW50KGRvd25jYXN0PEhUTUxJbWFnZUVs
ZW1lbnQ+KCpub2RlKSk7Ci0gICAgICAgICAgICAgICAgICAgIE5TVGV4dEF0dGFjaG1lbnQgKmF0
dGFjaG1lbnQgPSBbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6
ZmlsZVdyYXBwZXIuZ2V0KCldOwotICAgICAgICAgICAgICAgICAgICBbc3RyaW5nIGFwcGVuZEF0
dHJpYnV0ZWRTdHJpbmc6W05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0
dGFjaG1lbnQ6YXR0YWNobWVudF1dOwotICAgICAgICAgICAgICAgICAgICBbYXR0YWNobWVudCBy
ZWxlYXNlXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgIGF1dG8g
bm9kZSA9IGl0Lm5vZGUoKTsKKworICAgICAgICBpZiAoaW5jbHVkZUltYWdlcyA9PSBJbmNsdWRl
SW1hZ2VzOjpZZXMgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgICAg
IGF1dG8gZmlsZVdyYXBwZXIgPSBmaWxlV3JhcHBlckZvckVsZW1lbnQoZG93bmNhc3Q8SFRNTElt
YWdlRWxlbWVudD4oKm5vZGUpKTsKKyAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGFkb3B0
TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOmZpbGVXcmFw
cGVyLmdldCgpXSk7CisgICAgICAgICAgICBbc3RyaW5nIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6
W05TQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0YWNo
bWVudC5nZXQoKV1dOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IGN1cnJlbnRUZXh0TGVuZ3Ro
ID0gaXQudGV4dCgpLmxlbmd0aCgpOworICAgICAgICBhdXRvIGN1cnJlbnRUZXh0TGVuZ3RoID0g
aXQudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBpZiAoIWN1cnJlbnRUZXh0TGVuZ3RoKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0
YXJ0Q29udGFpbmVyLnJlbmRlcmVyKCk7CisgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5y
ZW5kZXJlcigpOwogICAgICAgICBBU1NFUlQocmVuZGVyZXIpOwogICAgICAgICBpZiAoIXJlbmRl
cmVyKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOworICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVy
LT5zdHlsZSgpOwogICAgICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAm
IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCi0gICAgICAgICAgICBbYXR0cnMuZ2V0KCkgc2V0
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpOU1VuZGVybGluZVN0eWxlU2luZ2xl
XSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOworICAgICAgICAgICAgW2F0
dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6TlNVbmRlcmxpbmVTdHls
ZVNpbmdsZV0gZm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAg
aWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvbjo6TGlu
ZVRocm91Z2gpCi0gICAgICAgICAgICBbYXR0cnMuZ2V0KCkgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoSW50ZWdlcjpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNTdHJpa2V0
aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZvcktl
eTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOwogICAgICAgICBpZiAoYXV0byBm
b250ID0gc3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgpKQotICAg
ICAgICAgICAgW2F0dHJzLmdldCgpIHNldE9iamVjdDp0b05TRm9udChmb250KSBmb3JLZXk6TlNG
b250QXR0cmlidXRlTmFtZV07CisgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OnRvTlNGb250
KGZvbnQpIGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgW2F0dHJzLmdldCgpIHNldE9iamVjdDpbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6V2Vi
RGVmYXVsdEZvbnQoKSB0b1NpemU6c3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLnBs
YXRmb3JtRGF0YSgpLnNpemUoKV0gZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOworICAgICAg
ICAgICAgW2F0dHJzIHNldE9iamVjdDpbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6V2ViRGVmYXVs
dEZvbnQoKSB0b1NpemU6c3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLnBsYXRmb3Jt
RGF0YSgpLnNpemUoKV0gZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwogCiAgICAgICAgIENv
bG9yIGZvcmVncm91bmRDb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xv
ckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICAgICAgaWYgKGZvcmVncm91bmRDb2xvci5p
c1Zpc2libGUoKSkKLSAgICAgICAgICAgIFthdHRycy5nZXQoKSBzZXRPYmplY3Q6bnNDb2xvcihm
b3JlZ3JvdW5kQ29sb3IpIGZvcktleTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwor
ICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpuc0NvbG9yKGZvcmVncm91bmRDb2xvcikgZm9y
S2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIFthdHRycy5nZXQoKSByZW1vdmVPYmplY3RGb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JB
dHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAgIFthdHRycyByZW1vdmVPYmplY3RGb3JLZXk6TlNG
b3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKIAogICAgICAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3IgPSBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmlz
aWJsZSgpKQotICAgICAgICAgICAgW2F0dHJzLmdldCgpIHNldE9iamVjdDpuc0NvbG9yKGJhY2tn
cm91bmRDb2xvcikgZm9yS2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CisgICAg
ICAgICAgICBbYXR0cnMgc2V0T2JqZWN0Om5zQ29sb3IoYmFja2dyb3VuZENvbG9yKSBmb3JLZXk6
TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgW2F0dHJzLmdldCgpIHJlbW92ZU9iamVjdEZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWVdOworICAgICAgICAgICAgW2F0dHJzIHJlbW92ZU9iamVjdEZvcktleTpOU0JhY2tn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4g
dGV4dDsKICAgICAgICAgaWYgKHN0eWxlLm5ic3BNb2RlKCkgPT0gTkJTUE1vZGU6Ok5vcm1hbCkK
QEAgLTI0NDMsNyArMjQyOSw3IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGVkaXRp
bmdBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwKICAgICAgICAgc3Ry
aW5nTGVuZ3RoICs9IGN1cnJlbnRUZXh0TGVuZ3RoOwogICAgIH0KIAotICAgIHJldHVybiBbc3Ry
aW5nIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHN0cmluZyksIG5pbCB9Owog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBi
N2QyOWNkNGJhZDk1MGQzYWJkN2RmNzllOTBmNTM0NjRjMzY4ODQ5Li4zZjI5YzRlMjNlMmY2Y2Rm
NWQ0NjQyZjJkYzE4ODQ2YzU3ZTMyZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCkBAIC0zOCw3ICszOCw2IEBACiAjaW1wb3J0ICJFZGl0aW5nLmgiCiAjaW1wb3J0
ICJFZGl0b3JDbGllbnQuaCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJIVE1MQ29udmVy
dGVyLmgiCiAjaW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMu
aCIKICNpbXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCmluZGV4IDIyMzhmMTNiNzYy
NmI0ZWE3MzRlYjYyYmFkNDQwNGQwZjgzZWIyNWYuLjU1N2IwMjI5OTY5YTg1MWFlYWM5MWY4MmFm
Mzc4YzZlN2Y0ODFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Rp
Y3Rpb25hcnlMb29rdXBMZWdhY3kubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9ydCAiRm9j
dXNDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVTZWxlY3Rp
b24uaCIKLSNpbXBvcnQgIkhUTUxDb252ZXJ0ZXIuaCIKICNpbXBvcnQgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJhbmdlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmY2MTZhOTQ0OWMwZmQ5Y2FjM2QzMTBjM2E3Nzc3
ZTBkNmRiY2ZkMy4uZmQyZmNiZTIwZjdlODg0MTcyMTBlZGNiOWM1MTZkMTExOTYxODMwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNTAsNyArNTAsNiBAQAog
I2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgotI2ltcG9ydCAiU2ltcGxl
UmFuZ2UuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgogI2ltcG9ydCAiV2ViQ29udGVu
dFJlYWRlci5oIgogI2ltcG9ydCAiV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgiCkBAIC0x
ODgsMTAgKzE4NywxMCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZAogICAgICAgICByZXR1cm4g
c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAKICAgICBpZiAocGFzdGVib2FyZFR5cGUg
PT0gU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGRh
dGFJblJURkRGb3JtYXQoYXR0cmlidXRlZFN0cmluZygqYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgp
KS5nZXQoKSk7CisgICAgICAgIHJldHVybiBkYXRhSW5SVEZERm9ybWF0KGF0dHJpYnV0ZWRTdHJp
bmcoKmFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKSkuc3RyaW5nLmdldCgpKTsKIAogICAgIGlmIChw
YXN0ZWJvYXJkVHlwZSA9PSBTdHJpbmcobGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSkpIHsKLSAg
ICAgICAgYXV0byBzdHJpbmcgPSBhdHRyaWJ1dGVkU3RyaW5nKCphZGp1c3RlZFNlbGVjdGlvblJh
bmdlKCkpOworICAgICAgICBhdXRvIHN0cmluZyA9IGF0dHJpYnV0ZWRTdHJpbmcoKmFkanVzdGVk
U2VsZWN0aW9uUmFuZ2UoKSkuc3RyaW5nOwogICAgICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMg
c3RyaXBwaW5nIG5lZWRlZCBoZXJlLCBidXQgbm90IGluIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkPwogICAgICAgICBpZiAoW3N0cmluZyBjb250YWluc0F0dGFjaG1lbnRzXSkKICAgICAgICAg
ICAgIHN0cmluZyA9IGF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0
ZXJzKHN0cmluZy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpp
bmRleCBlNjc1OTAwZTQxMGIzOWQyN2U5MDg2MjY2ZGU1M2U1ZmRlNDZjMWZkLi5iYmY0MmY2ZmFk
ZGY3ZTQ0YmZhNTc4NzdhYWIzYjRkOGQ1Njg5NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0KQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3Jh
ZwogI2lmICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
IDwgMTAxNDAwKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiBz
dGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcG9saWN5UHJvcGVydGllcyhjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKIHsKLSAgICBzdGF0aWMgTlNVUkwg
KmVtcHR5VVJMID0gW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXTsKKyAgICBzdGF0
aWMgTlNVUkwgKmVtcHR5VVJMID0gW1tOU1VSTCBhbGxvY10gaW5pdF07CiAgICAgTlNEaWN0aW9u
YXJ5ICpwb2xpY3lQcm9wZXJ0aWVzID0gQHsKICAgICAgICAgQCJfa0NGSFRUUENvb2tpZVBvbGlj
eVByb3BlcnR5U2l0ZUZvckNvb2tpZXMiOiBzYW1lU2l0ZUluZm8uaXNTYW1lU2l0ZSA/IHVybCA6
IGVtcHR5VVJMLAogICAgICAgICBAIl9rQ0ZIVFRQQ29va2llUG9saWN5UHJvcGVydHlJc1RvcExl
dmVsTmF2aWdhdGlvbiI6IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpzYW1lU2l0ZUluZm8uaXNU
b3BTaXRlXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDM2NTM4MmRmODEwMGI4ZTM0
ZGFjYTg5NTQ5MjA3Y2VjMTMzYTQzZTYuLmNjNWRiMGU5OTRlYzc1ZDk5YWJkZDExYzE3ODU3Mzdm
OTJmODg3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMTQ2LDcgKzE0Niw3IEBA
IHN0YXRpYyBOU1VSTCAqc2l0ZUZvckNvb2tpZXMoUmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURp
c3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOCiAgICAgY2FzZSBSZXNvdXJjZVJlcXVlc3Q6OlNhbWVT
aXRlRGlzcG9zaXRpb246OlNhbWVTaXRlOgogICAgICAgICByZXR1cm4gdXJsOwogICAgIGNhc2Ug
UmVzb3VyY2VSZXF1ZXN0OjpTYW1lU2l0ZURpc3Bvc2l0aW9uOjpDcm9zc1NpdGU6Ci0gICAgICAg
IHN0YXRpYyBOU1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpA
IiJdOworICAgICAgICBzdGF0aWMgTlNVUkwgKmVtcHR5VVJMID0gW1tOU1VSTCBhbGxvY10gaW5p
dF07CiAgICAgICAgIHJldHVybiBlbXB0eVVSTDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQppbmRleCA3ZWEzODdkYzlhN2RkMjRkYTgyZDM3NWNlMTg0YWZiMWZmMGNhNzI4Li5jNjg4MGM4
OTYzOTEzYjFkYmVlYTU4YTY1OGI0OWZjMTYyODQ4OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
QEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUYXNrV2l0aEZpcnN0UGFydHlG
b3JTYW1lU2l0ZUNvb2tpZXMoTlNVUkxTZXNzaW9uRGF0YVRhc2sqIHRhcwogICAgIGlmIChyZXF1
ZXN0LmlzU2FtZVNpdGVVbnNwZWNpZmllZCgpKQogICAgICAgICByZXR1cm47CiAjaWYgSEFWRShG
T1VOREFUSU9OX1dJVEhfU0FNRV9TSVRFX0NPT0tJRV9TVVBQT1JUKQotICAgIHN0YXRpYyBOU1VS
TCAqZW1wdHlVUkwgPSBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdOworICAgIHN0
YXRpYyBOU1VSTCAqZW1wdHlVUkwgPSBbW05TVVJMIGFsbG9jXSBpbml0XTsKICAgICB0YXNrLl9z
aXRlRm9yQ29va2llcyA9IHJlcXVlc3QuaXNTYW1lU2l0ZSgpID8gdGFzay5jdXJyZW50UmVxdWVz
dC5VUkwgOiBlbXB0eVVSTDsKICAgICB0YXNrLl9pc1RvcExldmVsTmF2aWdhdGlvbiA9IHJlcXVl
c3QuaXNUb3BTaXRlKCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCAyNjk2NWM3YTVkYjQ0
Y2I1ODFhMjViMWY5NjMzMjlmMmZmYzFjY2FjLi5hMDVkZjBhOTQ0ZjkyODY5MGIyMzQ1OGRmMTQx
Y2M4ZjMwNmJiNmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9y
dCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ29j
b2EuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KQEAgLTQ0LDYgKzQ1LDIyIEBACiBuYW1l
c3BhY2UgSVBDIHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCit2b2lkIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJiBhdHRyaWJ1dGVkU3RyaW5nKQoreworICAg
IGVuY29kZXIgPDwgYXR0cmlidXRlZFN0cmluZy5zdHJpbmcgPDwgYXR0cmlidXRlZFN0cmluZy5k
b2N1bWVudEF0dHJpYnV0ZXM7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJp
bmc+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJp
YnV0ZWRTdHJpbmc7CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBhdHRyaWJ1dGVkU3Ry
aW5nKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBSZXRhaW5QdHI8TlNEaWN0
aW9uYXJ5PiBkb2N1bWVudEF0dHJpYnV0ZXM7CisgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVy
LCBkb2N1bWVudEF0dHJpYnV0ZXMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiB7IHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwgV1RGTW92ZShkb2N1bWVudEF0
dHJpYnV0ZXMpIH0gfTsKK30KKwogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKIHN0YXRpYyBib29s
IGZpbmlzaERlY29kaW5nKERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1l
bnRFZGl0aW5nQ29udGV4dC5oCmluZGV4IDlhMjRhNGQyMDAxNDIwMzM2ZDU2YmNiMzk5Yzk4ZGQz
NTQ3MWViNGQuLjA5MWY0MzI2Y2UyNjkwZTIwZGU2ODk4NzlhNmNiM2JjODZhNTJkZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0LmgKQEAgLTI4LDcg
KzI4LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKLSNpbmNsdWRlICJBdHRyaWJ1dGVkU3RyaW5nLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
R3JhbnVsYXJpdHkuaD4KQEAgLTYzLDExICs2MywxMSBAQCBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3Qgewogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQgewogICAgIFVJ
V0tEb2N1bWVudENvbnRleHQgKnRvUGxhdGZvcm1Db250ZXh0KE9wdGlvblNldDxXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0OjpPcHRpb25zPik7CiAKLSAgICBBdHRyaWJ1dGVk
U3RyaW5nIGNvbnRleHRCZWZvcmU7Ci0gICAgQXR0cmlidXRlZFN0cmluZyBzZWxlY3RlZFRleHQ7
Ci0gICAgQXR0cmlidXRlZFN0cmluZyBjb250ZXh0QWZ0ZXI7Ci0gICAgQXR0cmlidXRlZFN0cmlu
ZyBtYXJrZWRUZXh0OwotICAgIEF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVkVGV4dDsKKyAgICBX
ZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIGNvbnRleHRCZWZvcmU7CisgICAgV2ViQ29yZTo6QXR0
cmlidXRlZFN0cmluZyBzZWxlY3RlZFRleHQ7CisgICAgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmlu
ZyBjb250ZXh0QWZ0ZXI7CisgICAgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyBtYXJrZWRUZXh0
OworICAgIFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVkVGV4dDsKIAogICAgIHN0
cnVjdCBSYW5nZSB7CiAgICAgICAgIHVpbnQ2NF90IGxvY2F0aW9uIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KaW5kZXggNWY1YzM3NGE5
ODk2YWJlZWRiYjMwNWZhNGUwOGU0Nzg4NzJjYjk4NS4uMTlmZTdhODMxYmEzNTkzNDExMTNiYzIw
YjdmNTBkNjE0Mjc4NGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1l
bnRFZGl0aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVk
aXRpbmdDb250ZXh0Lm1tCkBAIC0xMzEsMzEgKzEzMSwzMSBAQCBPcHRpb25hbDxXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHQ+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDbwogewogICAgIFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCBjb250ZXh0OwogCi0g
ICAgT3B0aW9uYWw8V2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nPiBjb250ZXh0QmVmb3JlOworICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGNvbnRleHRCZWZvcmU7CiAgICAg
ZGVjb2RlciA+PiBjb250ZXh0QmVmb3JlOwogICAgIGlmICghY29udGV4dEJlZm9yZSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBjb250ZXh0LmNvbnRleHRCZWZvcmUgPSAqY29u
dGV4dEJlZm9yZTsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6QXR0cmlidXRlZFN0cmluZz4gc2Vs
ZWN0ZWRUZXh0OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IHNlbGVj
dGVkVGV4dDsKICAgICBkZWNvZGVyID4+IHNlbGVjdGVkVGV4dDsKICAgICBpZiAoIXNlbGVjdGVk
VGV4dCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBjb250ZXh0LnNlbGVjdGVk
VGV4dCA9ICpzZWxlY3RlZFRleHQ7CiAKLSAgICBPcHRpb25hbDxXZWJLaXQ6OkF0dHJpYnV0ZWRT
dHJpbmc+IGNvbnRleHRBZnRlcjsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3Ry
aW5nPiBjb250ZXh0QWZ0ZXI7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0QWZ0ZXI7CiAgICAgaWYg
KCFjb250ZXh0QWZ0ZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgY29udGV4
dC5jb250ZXh0QWZ0ZXIgPSAqY29udGV4dEFmdGVyOwogCi0gICAgT3B0aW9uYWw8V2ViS2l0OjpB
dHRyaWJ1dGVkU3RyaW5nPiBtYXJrZWRUZXh0OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJp
YnV0ZWRTdHJpbmc+IG1hcmtlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBtYXJrZWRUZXh0OwogICAg
IGlmICghbWFya2VkVGV4dCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBjb250
ZXh0Lm1hcmtlZFRleHQgPSAqbWFya2VkVGV4dDsKIAotICAgIE9wdGlvbmFsPFdlYktpdDo6QXR0
cmlidXRlZFN0cmluZz4gYW5ub3RhdGVkVGV4dDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRy
aWJ1dGVkU3RyaW5nPiBhbm5vdGF0ZWRUZXh0OwogICAgIGRlY29kZXIgPj4gYW5ub3RhdGVkVGV4
dDsKICAgICBpZiAoIWFubm90YXRlZFRleHQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDZi
ZWNiZjcwZTJhYjI0ZWJmOTE2ZTcwZThhMzkzY2FlMGYyNzg0MTEuLjFkMzZiZWY0MTlmNmVmMmJm
YTdiYzhmYWRhZmI0MDMxYWVmYTFiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTYsNiArMTE2LDcgQEAgY2xhc3MgVGV4dENoZWNraW5n
UmVxdWVzdERhdGE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJTdHls
ZVNoZWV0OwogCitzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBDYWNoZVF1ZXJ5T3B0
aW9uczsKIHN0cnVjdCBDaGFyYWN0ZXJSYW5nZTsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGlu
ZTsKQEAgLTIwOSw2ICsyMTAsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmlu
Zz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXR0
cmlidXRlZFN0cmluZyYpOworICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucz4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpD
YWNoZVF1ZXJ5T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0F0dHJpYnV0ZWRTdHJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdHRyaWJ1dGVk
U3RyaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZDZiMDEwMjYxYWQzMDhh
OGFlNjdhMjNkYTI4ZWZmNjNhYjczNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F0dHJpYnV0ZWRTdHJpbmcu
aAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi1PQkpDX0NMQVNTIE5TQXR0cmlidXRlZFN0cmluZzsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nIHsKLSAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiBzdHJpbmc7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZG9jdW1lbnRB
dHRyaWJ1dGVzOwotCi0gICAgQXR0cmlidXRlZFN0cmluZygpID0gZGVmYXVsdDsKLQotI2lmIGRl
ZmluZWQoX19PQkpDX18pCi0gICAgQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcg
KmF0dHJpYnV0ZWRTdHJpbmcsIE5TRGljdGlvbmFyeSAqZG9jdW1lbnRBdHRyaWJ1dGVzID0gbmls
KQotICAgICAgICA6IHN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nKQotICAgICAgICAsIGRvY3VtZW50
QXR0cmlidXRlcyhkb2N1bWVudEF0dHJpYnV0ZXMpCi0gICAgewotICAgIH0KLQotICAgIEF0dHJp
YnV0ZWRTdHJpbmcoUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mJiBhdHRyaWJ1dGVkU3Ry
aW5nLCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYmIGRvY3VtZW50QXR0cmlidXRlcyA9IHsgfSkK
LSAgICAgICAgOiBzdHJpbmcoV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSkKLSAgICAgICAgLCBk
b2N1bWVudEF0dHJpYnV0ZXMoV1RGTW92ZShkb2N1bWVudEF0dHJpYnV0ZXMpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBvcGVyYXRvciBOU0F0dHJpYnV0ZWRTdHJpbmcgKigpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gc3RyaW5nLmdldCgpOwotICAgIH0KLSNlbmRpZgotfTsKLQotfQotCi1u
YW1lc3BhY2UgSVBDIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6
OkF0dHJpYnV0ZWRTdHJpbmc+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFdlYktpdDo6QXR0cmlidXRlZFN0cmluZyYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJL
aXQ6OkF0dHJpYnV0ZWRTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXR0cmlidXRlZFN0cmluZy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3RyaW5nLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwZjJlOTJkYjY1NGU0MDhjN2EwMmYzNmJlNDU2NzhiMjM5YTcwMzQwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3RyaW5nLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQXR0cmli
dXRlZFN0cmluZy5oIgotCi0jaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCi0jaW1wb3J0
ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0KLW5hbWVzcGFjZSBJUEMgewotCi12
b2lkIEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYktpdDo6QXR0cmlidXRlZFN0cmluZyYgYXR0cmlidXRlZFN0
cmluZykKLXsKLSAgICBlbmNvZGVyIDw8IGF0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nIDw8IGF0dHJp
YnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzOwotfQotCi1PcHRpb25hbDxXZWJLaXQ6OkF0
dHJpYnV0ZWRTdHJpbmc+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0
cmluZz4gYXR0cmlidXRlZFN0cmluZzsKLSAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGF0
dHJpYnV0ZWRTdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIFJldGFp
blB0cjxOU0RpY3Rpb25hcnk+IGRvY3VtZW50QXR0cmlidXRlczsKLSAgICBpZiAoIUlQQzo6ZGVj
b2RlKGRlY29kZXIsIGRvY3VtZW50QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpLCBXVEZNb3Zl
KGRvY3VtZW50QXR0cmlidXRlcykgfSB9OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMWRlNzdlMzQ0MzQ0OWQwNDliYjI5YjRiZjVhZGJmNjk4ZDE4YWE3MS4uYmJjYjAyZWI1MzQ3
Y2YzYWFiZmZjZjNlZmI0YTM0MmFiOWFhMjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
MTg4LDcgKzE4OCw2IEBAIFNoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcAog
U2hhcmVkL2lvcy9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNJT1MubW0KIFNoYXJlZC9pb3Mv
V2ViVG91Y2hFdmVudElPUy5jcHAKIAotU2hhcmVkL21hYy9BdHRyaWJ1dGVkU3RyaW5nLm1tCiBT
aGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KIFNoYXJlZC9tYWMvQ29kZVNpZ25pbmcu
bW0KIFNoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGJmMzYxMmJmNzg4YmU5MTM3MzNhYmRl
YzEzM2Q5ZTk4ZmIwZTdmZjMuLjJkM2E3OTA0MzQ0N2U3ZGZlYjRhNThkMzY5NWI1NWE1ZDkxZmFh
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtMzAsNyArMzAsNiBAQAogI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgogI2ltcG9y
dCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgotI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiQ29jb2FJbWFn
ZS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAi
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgpAQCAtMTE2LDYgKzExNSw3IEBA
CiAjaW1wb3J0ICJfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCIKICNpbXBvcnQgIl9XS1Zpc2l0
ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9FbGVtZW50Q29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0K
aW5kZXggYWQ0YjYxZWMzOTQ4YjA0NmY3MzNkY2JlOTg3ZmJhZDk0ZjBlMzFmZi4uZmQ2YmVlMjUx
YmU5YWE0YmI4NjVhZDM1NDE3MmYwMGRkMjVhZmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoUExBVEZPUk1fRFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCiAK
LSNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIlRleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwODlhNGJh
Yzc1Y2ZhYTUzZWVlN2NiOGY5MzgzMjFjMWJlZTJkOTE0Li40YzU1Y2VhNjQ4NzJkMGE5MmQyNjhi
ZGJhYTFkZWU0NGEyODc5MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbXBvcnQgIkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQgIkFw
cEtpdFNQSS5oIgotI2ltcG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiQ29sb3JT
cGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9udElu
Zm8uaCIKQEAgLTgyLDYgKzgxLDcgQEAKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BY3Rpdml0eVN0
YXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgpAQCAtNDk1MSwxNiArNDk1
MSwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRS
YW5nZShOU1JhbmdlIHByb3Bvc2VkUmFuZ2UsIHZvaQogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlclB0ciBjb3B5XSk7CiAKICAgICBMT0coVGV4
dElucHV0LCAiYXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZTooJXUsICV1KSIsIHByb3Bvc2Vk
UmFuZ2UubG9jYXRpb24sIHByb3Bvc2VkUmFuZ2UubGVuZ3RoKTsKLSAgICBtX3BhZ2UtPmF0dHJp
YnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHByb3Bvc2VkUmFuZ2UsIFtjb21w
bGV0aW9uSGFuZGxlcl0oY29uc3QgQXR0cmlidXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0
aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICBtX3BhZ2UtPmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KHByb3Bvc2VkUmFuZ2UsIFtjb21wbGV0aW9uSGFuZGxlcl0oY29uc3QgV2ViQ29yZTo6QXR0cmli
dXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyQmxvY2spKE5TQXR0cmlidXRlZFN0cmluZyAqLCBOU1JhbmdlKSA9ICh2b2lkIChe
KShOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgTlNSYW5nZSkpY29tcGxldGlvbkhhbmRsZXIuZ2V0KCk7
CiAgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLi4uYXR0cmlidXRlZFN1YnN0cmlu
Z0Zyb21SYW5nZSBmYWlsZWQuIik7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2Nr
KDAsIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBz
dHJpbmc7Ci0gICAgICAgIExPRyhUZXh0SW5wdXQsICIgICAgLT4gYXR0cmlidXRlZFN1YnN0cmlu
Z0Zyb21SYW5nZSByZXR1cm5lZCAlQCIsIFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10pOwotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlckJsb2NrKFtbYXR0cmlidXRlZFN0cmluZyByZXRhaW5dIGF1
dG9yZWxlYXNlXSwgYWN0dWFsUmFuZ2UpOworICAgICAgICBMT0coVGV4dElucHV0LCAiICAgIC0+
IGF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UgcmV0dXJuZWQgJUAiLCBzdHJpbmcuc3RyaW5n
LmdldCgpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhzdHJpbmcuc3RyaW5nLmdl
dCgpLCBhY3R1YWxSYW5nZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDIzZTA0ODE4ZjVlODI3ZTNhODc5MzI1NGEyYjFlMmYyNGNk
OWNjYTEuLjM1MGMyMjY4ZDM2YzQzODczNmJkODhiOGVkNTViNmQzN2M0MGFjNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjAwLDcgKzIwMCw2IEBACiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkF0dHJpYnV0ZWRTdHJpbmcu
aCIKICNpbmNsdWRlICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEuaCIKQEAgLTIwOCw2ICsyMDcsNyBAQAogI2luY2x1ZGUgIlZlcnNp
b25DaGVja3MuaCIKICNpbmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcE9i
c2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93Lmg+CiAjaW5j
bHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KQEAgLTQxMTUsMTAgKzQxMTUsMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXND
aGlsZEZyYW1lcyBpbmNsdWQKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdl
UHJveHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgQXR0cmlidXRlZFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihBdHRyaWJ1dGVkU3RyaW5nKCkpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGYxOTcxNmFmZmNmY2U2OWJiZTgwYjkxNjk0YjM5ZTEwZGM1
MGY1OGQuLjhkZjQ2NDBiZmE1ODFjNjk2MTMwOTcxZDNiY2E3N2ZmZDBmNjA4YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMzIsNiArMjMyLDcgQEAgZW51bSBj
bGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBib29sOwogZW51bSBjbGFzcyBXcml0
aW5nRGlyZWN0aW9uIDogdWludDhfdDsKIAogc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7Citz
dHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
Owogc3RydWN0IENvbXBvc2l0aW9uSGlnaGxpZ2h0Owogc3RydWN0IENvbnRlbnRSdWxlTGlzdFJl
c3VsdHM7CkBAIC0yNTMsNyArMjU0LDcgQEAgc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0
cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZT4gY2xhc3MgUmVjdEVkZ2VzOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNz
IFJlY3RFZGdlczsKIHVzaW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKIH0K
IApAQCAtMzIzLDcgKzMyNCw2IEBAIGNsYXNzIFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZl
cjsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCi1zdHJ1
Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHM7CiBz
dHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKQEAgLTM5
NSw3ICszOTUsNyBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiY+IEFwcGxpY2F0aQogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShNQUMpCi10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBBdHRyaWJ1dGVkU3RyaW5n
JiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gQXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpBdHRyaWJ1
dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gQXR0cmlidXRlZFN0cmluZ0ZvckNoYXJh
Y3RlclJhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBGb250SW5m
byYsIGRvdWJsZSwgYm9vbD4gRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2s7CiAjZW5kaWYKIApAQCAt
ODgxLDcgKzg4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9u
dENoYW5nZXMmJik7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBhdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2Um
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rpb24oRnVuY3Rp
b248dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKQEAgLTExMDMsNyArMTEwMyw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJp
bmdJbmNsdWRlc0NoaWxkRnJhbWVzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQg
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOworICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0
ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVk
U3RyaW5nJik+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAg
ICAgdm9pZCBnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwpAQCAtMjA3OSw3ICsyMDc5LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgcmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJh
Y2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNr
SUQpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxi
YWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYzQ2ZmNiYjViNWEyNjg3ZmRkNzhjYTFkNTBm
MDFlODI0OTQ5YzFkYi4uMmVlZTFiMGE5NmVlMGFhOWZiZGJlMDI4YzFhNTZjMWViOGI4OWVjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMTc1LDcgKzE3NSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgQXBw
bGljYXRpb25NYW5pZmVzdENhbGxiYWNrKE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFu
aWZlc3Q+IG1hbmlmZXN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgog
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VD
YWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZywgc3RydWN0IFdl
YktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyAgICBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1
Y3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyBzdHJpbmcsIHN0cnVjdCBXZWJLaXQ6OkVkaXRp
bmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
Rm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6Rm9udEluZm8gZm9udEluZm8s
IGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgogICAgIEZvbnRBdHRyaWJ1dGVzQ2FsbGJh
Y2soc3RydWN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KaW5kZXggYTdjM2RmZTU1YjE4MmI0NDhlOGM3NzE2MDBkY2MxMGU4MmIy
ODJjZi4uYzA1OTQwYzgyODdiMGNlNTE5MTAwODg0NWQ0MDg2ZTg0MTQ4MmE5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yOSw3ICsy
OSw2IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2lt
cG9ydCAiQXR0cmlidXRlZFN0cmluZy5oIgogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNp
bXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKQEAgLTUwLDYg
KzQ5LDcgQEAKICNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKICNpbXBvcnQgIldl
YlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0IDxX
ZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0
ZXJuYXRpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EcmFnSXRlbS5oPgpAQCAtMTg2LDEwICsxODYsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxl
KGlzU2Nyb2xsYWJsZSksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmF0
dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5n
ZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNv
bnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCit2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgRnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihBdHRyaWJ1dGVkU3RyaW5nKCks
IEVkaXRpbmdSYW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbih7IH0sIEVkaXRpbmdSYW5nZSgpLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTk4LDcgKzE5OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBj
YWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmli
dXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmlu
ZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyYgc3RyaW5nLCBj
b25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgTUVTU0FHRV9DSEVDSyhhY3R1YWxSYW5nZS5pc1ZhbGlkKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NWQ4YzgyZWEy
MTUyMDI3Y2FkOWVkMDkxZGExNTdiMzkzMDMwYTI0Li4xOGFjOTlmNDhjNTljMDBmN2Y2MWQ1Y2Y1
ODMxOGRjMzNmZmUzY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE3OTYsNyArMTc5Niw2IEBACiAJCUUxOEU2OTE4MTY5QjY2N0Iw
MDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBT
ZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLzsgfTsKIAkJRTE5NTgyRDMxNTNDQkZENzAwQjYw
ODc1IC8qIFBERktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxOTU4MkQyMTUzQ0JGRDcwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLmgg
Ki87IH07CiAJCUUxOUJEQTg2MTkzNjY1RTMwMEI5N0Y1NyAvKiBjb20uYXBwbGUuYXBwc3RvcmUu
Q29kZVJlZGVlbWVyTmV0c2NhcGVQbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJv
ZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QkRBODQxOTM2NUY0
QjAwQjk3RjU3IC8qIGNvbS5hcHBsZS5hcHBzdG9yZS5Db2RlUmVkZWVtZXJOZXRzY2FwZVBsdWdp
bi5zYiAqLzsgfTsKLQkJRTFBMzE3MzIxMzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMx
NzMxMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi87IH07CiAJCUUxQUVB
MjJGMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQUVBMjJEMTQ2ODdC
REIwMDgwNDU2OSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCAqLzsgfTsKIAkJRTFC
Nzg0NzExNjNGMjQ2OTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODQ3MDE2M0YyNDY5
MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKIAkJRTFDQzFCOTAx
MkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5m
by5oICovOyB9OwpAQCAtNTI3NSw4ICs1Mjc0LDYgQEAKIAkJRTE5NjdFMzcxNTBBQjVFMjAwQzcz
MTY5IC8qIGNvbS5hcHBsZS5XZWJQcm9jZXNzLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJRTE5QkRBODQxOTM2NUY0QjAwQjk3RjU3IC8qIGNvbS5hcHBsZS5hcHBzdG9yZS5Db2RlUmVk
ZWVtZXJOZXRzY2FwZVBsdWdpbi5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUu
YXBwc3RvcmUuQ29kZVJlZGVlbWVyTmV0c2NhcGVQbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxOUJEQTg4MTkzNjg2QTQwMEI5N0Y1NyAvKiBTYW5kYm94VXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hVdGlsaXRpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBMzE3MzExMzRDRUE2QzAwN0M5QTRGIC8q
IEF0dHJpYnV0ZWRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0
cmlidXRlZFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUEzMTczNDEz
NENFQTgwMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF0dHJpYnV0ZWRTdHJpbmcubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQUVBMjJEMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGdWxs
S2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
QUVBMjJFMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Z1bGxLZXlib2FyZEFj
Y2Vzc1dhdGNoZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQjc4NDcwMTYz
RjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTM5OCw4ICs5Mzk1LDYgQEAKIAkJQkMxMTFCNUExMTJGNjI4
MjAwMzM3QkFCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJRTFBMzE3MzExMzRDRUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCAq
LywKLQkJCQlFMUEzMTczNDEzNENFQTgwMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5tbSAq
LywKIAkJCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5t
bSAqLywKIAkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywK
IAkJCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCkBAIC0x
MDcxOCw3ICsxMDcxMyw2IEBACiAJCQkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5j
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUFGQTYzNEYyMzRGN0M2NDAwRkZBODY0IC8q
IEFzeW5jUmV2YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VFOTY2RDExMkZBRjU3
MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFBMzE3MzIxMzRD
RUE2QzAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MkY1ODk3MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIw
OTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgKaW5kZXggZjQ4ZjBiNjcxYWQ4ZmJm
MTQ5MjU4YjY4YWM3Nzc5YjBkNTc1NDcxMy4uYWQ5YmY4Y2M1MzU0YmViMGI2NzQ2YmRlMDc0YzAz
ODRhZGVmNzM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVDS0lO
RykKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCkBAIC0zOSw2ICszOCw3IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEF0dHJpYnV0ZWRTdHJpbmc7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiB9
CiAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQ
cm94eShXZWJQYWdlJik7CiAgICAgflRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSgpOwogCi0g
ICAgc3RhdGljIEF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0
aW9ucyhjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb24mKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZyBhbm5v
dGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFdlYkNvcmU6OlZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiYpOwogCiBwcml2YXRlOgogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAg
T3B0aW9uYWw8UmFuZ2VBbmRPZmZzZXQ+IHJhbmdlQW5kT2Zmc2V0UmVsYXRpdmVUb1NlbGVjdGlv
bihpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgbGVuZ3RoKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFu
ZGxlcnMuCi0gICAgdm9pZCByZXBsYWNlUmVsYXRpdmVUb1NlbGVjdGlvbihjb25zdCBBdHRyaWJ1
dGVkU3RyaW5nJiwgaW50NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCwgdWlu
dDY0X3QgcmVsYXRpdmVSZXBsYWNlbWVudExvY2F0aW9uLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxh
Y2VtZW50TGVuZ3RoKTsKKyAgICB2b2lkIHJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmLCBpbnQ2NF90IHNlbGVjdGlvbk9mZnNldCwgdWlu
dDY0X3QgbGVuZ3RoLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHVpbnQ2
NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgpOwogICAgIHZvaWQgcmVtb3ZlQW5ub3RhdGlv
blJlbGF0aXZlVG9TZWxlY3Rpb24oY29uc3QgU3RyaW5nJiBhbm5vdGF0aW9uTmFtZSwgaW50NjRf
dCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCk7CiAKICAgICBXZWJQYWdlJiBtX3Bh
Z2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggYmM1ZDUyYmVkYTM5OTdlMmRlNWNhZDBkNDBlY2Y3MjM5NTAwODllZi4uMGNj
ZWIwMDIwMjM3MzExNjc5MjM2Mjg0MWQzYzczZTE2MjcwN2M5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMs
NyBAQAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVDS0lORykKIAogbWVzc2Fn
ZXMgLT4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIFJl
cGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcg
YW5ub3RhdGVkU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvbk9mZnNldCwgdWludDY0X3QgbGVuZ3Ro
LCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TG9jYXRpb24sIHVpbnQ2NF90IHJlbGF0aXZl
UmVwbGFjZW1lbnRMZW5ndGgpCisgICAgUmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24oc3RydWN0
IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgYW5ub3RhdGVkU3RyaW5nLCBpbnQ2NF90IHNlbGVj
dGlvbk9mZnNldCwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50
TG9jYXRpb24sIHVpbnQ2NF90IHJlbGF0aXZlUmVwbGFjZW1lbnRMZW5ndGgpCiAKICAgICBSZW1v
dmVBbm5vdGF0aW9uUmVsYXRpdmVUb1NlbGVjdGlvbihTdHJpbmcgYW5ub3RhdGlvbk5hbWUsIGlu
dDY0X3Qgc2VsZWN0aW9uT2Zmc2V0LCB1aW50NjRfdCBsZW5ndGgpCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KaW5kZXggYTVlZTdlMzg5NWQ1MDhmYmM5OGVkMzhl
ODE4NzI5NGVjMjZjN2RhMi4uNzNmNTAyMzM1OGNkYmU1NWI3MzMyYzY2OGUzM2E2N2RkZDc4Mzk5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4
dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQpAQCAtOTMsNyAr
OTMsNyBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5kT2Zm
c2V0PiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveAogICAgIHJldHVybiB7IHsgY3JlYXRlTGl2
ZVJhbmdlKHJlc29sdmVDaGFyYWN0ZXJSYW5nZShzY29wZSwgYWRqdXN0ZWRTZWxlY3Rpb25DaGFy
YWN0ZXJSYW5nZSkpLCBhZGp1c3RlZFNlbGVjdGlvbkNoYXJhY3RlclJhbmdlLmxvY2F0aW9uIH0g
fTsKIH0KIAotdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2
ZVRvU2VsZWN0aW9uKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIGFubm90YXRlZFN0cmluZywgaW50
NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QgcmVsYXRpdmVS
ZXBsYWNlbWVudExvY2F0aW9uLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKQor
dm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmIGFubm90YXRlZFN0cmluZywgaW50
NjRfdCBzZWxlY3Rpb25PZmZzZXQsIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QgcmVsYXRpdmVS
ZXBsYWNlbWVudExvY2F0aW9uLCB1aW50NjRfdCByZWxhdGl2ZVJlcGxhY2VtZW50TGVuZ3RoKQog
ewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZVNlbGVjdGlvbiYgZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS5zZWxlY3Rpb24oKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFRleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQW5ub3RhdGlvblJlbGF0aXZlVG9TZWxlY3Rpb24o
Y29uc3QgU3RyaQogICAgIH0sIHR5cGVzKTsKIH0KIAotQXR0cmlidXRlZFN0cmluZyBUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHk6OmFubm90YXRlZFN1YnN0cmluZ0JldHdlZW5Qb3NpdGlvbnMo
Y29uc3QgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QgV2ViQ29yZTo6Vmlz
aWJsZVBvc2l0aW9uJiBlbmQpCitXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIFRleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eTo6YW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucyhjb25z
dCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb24mIGVuZCkKIHsKICAgICBhdXRvIHN0YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRhcnlQ
b2ludChzdGFydCk7CiAgICAgYXV0byBlbmRCb3VuZGFyeSA9IG1ha2VCb3VuZGFyeVBvaW50KGVu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW0KaW5kZXggMzI0NDE4NmM5ZDdhNjY1MDE3M2I4MWUyZWRmNjE4YmUwM2Rl
N2NhZi4uNjQzMGZlNTgyZGU4OTg3ZTlkZjcwYWY3MzE4MjMzYjkyZmY1MzU2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2Nv
YS5tbQpAQCAtMjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQ
YWdlLmgiCiAKLSNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkluc2VydFRl
eHRPcHRpb25zLmgiCiAjaW1wb3J0ICJMb2FkUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiUGx1Z2lu
Vmlldy5oIgpAQCAtNTEsNyArNTAsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVuZGVyRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9TaW1wbGVSYW5nZS5oPgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKQEAgLTE0Niw3ICsxNDQsNyBAQCBEaWN0aW9uYXJ5UG9w
dXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUs
IFJhbmdlJiByYQogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9IG9wdGlvbnM7CiAK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gZWRpdGluZ0F0
dHJpYnV0ZWRTdHJpbmcocmFuZ2UsIEluY2x1ZGVJbWFnZXM6Ok5vKTsKKyAgICBhdXRvIGF0dHJp
YnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZyhyYW5nZSwgSW5jbHVkZUltYWdl
czo6Tm8pLnN0cmluZzsKICAgICBhdXRvIHNjYWxlZEF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6W2F0dHJp
YnV0ZWRTdHJpbmcgc3RyaW5nXV0pOwogICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0g
W05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwogICAgIFthdHRyaWJ1dGVkU3RyaW5n
IGVudW1lcmF0ZUF0dHJpYnV0ZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3Ry
aW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzLCBOU1JhbmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CkBAIC0yMjQsMTcgKzIyMiw5IEBAIFdl
YlBheW1lbnRDb29yZGluYXRvciogV2ViUGFnZTo6cGF5bWVudENvb3JkaW5hdG9yKCkKIH0KICNl
bmRpZgogCi12b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXR0cmlidXRlZFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvKiBkb2N1bWVudEVsZW1lbnQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGlmICghZG9j
dW1lbnRFbGVtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkb2N1bWVudEF0
dHJpYnV0ZXM7Ci0gICAgYXV0byBzdHJpbmcgPSBhdHRyaWJ1dGVkU3RyaW5nKHJhbmdlT2ZDb250
ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgJmRvY3VtZW50QXR0cmlidXRlcyk7Ci0gICAgY29tcGxl
dGlvbkhhbmRsZXIoeyBXVEZNb3ZlKHN0cmluZyksIFdURk1vdmUoZG9jdW1lbnRBdHRyaWJ1dGVz
KSB9KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihhdHRyaWJ1dGVkU3RyaW5nKG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cygqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSkpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnNldFJlbW90ZU9iamVjdFJlZ2lzdHJ5KFdlYlJlbW90ZU9iamVj
dFJlZ2lzdHJ5KiByZWdpc3RyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAwMGM0NzY5NWRlMjg2ZTM2M2IzMGIzNGE4OTI3Y2U2YmE3ZGU4OTQ5Li43
MTk0MGUxOTRkYTRlNzRjOGE3ODVjMjMxNjMwNmFjMmNlNjIwMmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMDUsNiArMjA1LDcgQEAgZW51bSBj
bGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFRleHRJbmRp
Y2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgV3JpdGlu
Z0RpcmVjdGlvbiA6IHVpbnQ4X3Q7CiAKK3N0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0
IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiBzdHJ1Y3QgQ29tcG9zaXRpb25IaWdobGlnaHQ7
CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CkBAIC0yNzksNyArMjgwLDYgQEAgZW51bSBG
aW5kT3B0aW9ucyA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBEcmFnQ29udHJvbGxlckFjdGlvbiA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSA6IHVpbnQ4
X3Q7CiAKLXN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owogc3RydWN0IERvY3VtZW50RWRp
dGluZ0NvbnRleHQ7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBn
ZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMsIENh
bGxiYWNrSUQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0
dHJpYnV0ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBdHRyaWJ1dGVkU3Ry
aW5nJik+JiYpOworICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nJik+JiYpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKE1IVE1MKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc01IVE1MRGF0
YShDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ3MDM4YTA3MDViOGQyNDc4ODdjOTQ5OTlkODU1
NjZiMWExZDZlZDUuLjZkMDZjZDNlODk3ODIwZjc3ZWNiYzAzMjU3MmYyYjczNmEwMjU3ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtMjAwLDcgKzIwMCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAg
R2V0Q29udGVudHNBc1N0cmluZyhlbnVtOmJvb2wgV2ViS2l0OjpDb250ZW50QXNTdHJpbmdJbmNs
dWRlc0NoaWxkRnJhbWVzIGluQ2hpbGRGcmFtZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIEdldEFsbEZyYW1lcygpIC0+IChzdHJ1Y3QgV2ViS2l0OjpGcmFtZVRyZWVOb2Rl
RGF0YSBtYWluRnJhbWUpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgR2V0Q29udGVu
dHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAoc3RydWN0IFdlYktpdDo6QXR0cmlidXRlZFN0cmlu
ZyByZXN1bHQpIEFzeW5jCisgICAgR2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSAtPiAo
c3RydWN0IFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0KSBBc3luYwogI2VuZGlmCiAj
aWYgRU5BQkxFKE1IVE1MKQogICAgIEdldENvbnRlbnRzQXNNSFRNTERhdGEoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGI2OWE2NGE5NWZkNzNiNWI0OWViOTliYzVjODM3
ZDQyNGUzMTYwYzcuLmZhNzNiNjFhNzlkNjM2MTU5MGQwOTJiNmE0YTU5NjlmMTJmNTcxNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC00MjYyLDIyICs0MjYyLDIyIEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50
RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBhdXRvIG1ha2VTdHJpbmcgPSBbXSAoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBzdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmQpIC0+IFJldGFpblB0cjxO
U0F0dHJpYnV0ZWRTdHJpbmc+IHsKKyAgICBhdXRvIG1ha2VTdHJpbmcgPSBbXSAoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmQpIC0+IEF0dHJp
YnV0ZWRTdHJpbmcgewogICAgICAgICBhdXRvIHN0YXJ0Qm91bmRhcnkgPSBtYWtlQm91bmRhcnlQ
b2ludChzdGFydC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICAgICAgYXV0byBlbmRCb3VuZGFyeSA9
IG1ha2VCb3VuZGFyeVBvaW50KGVuZC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICAgICAgaWYgKCFz
dGFydEJvdW5kYXJ5IHx8ICFlbmRCb3VuZGFyeSB8fCAqc3RhcnRCb3VuZGFyeSA9PSAqZW5kQm91
bmRhcnkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJldHVybiBlZGl0aW5nLW9mZnNldC1jb21w
YXRpYmxlIGF0dHJpYnV0ZWQgc3RyaW5ncyBpZiB0aGF0IG9wdGlvbiBpcyByZXF1ZXN0ZWQuCi0g
ICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpXZWJDb3JlOjpwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoeyBXVEZNb3Zl
KCpzdGFydEJvdW5kYXJ5KSwgV1RGTW92ZSgqZW5kQm91bmRhcnkpIH0pXSk7CisgICAgICAgIHJl
dHVybiB7IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5n
OldlYkNvcmU6OnBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSh7IFdURk1vdmUoKnN0YXJ0
Qm91bmRhcnkpLCBXVEZNb3ZlKCplbmRCb3VuZGFyeSkgfSldKSwgbmlsIH07CiAgICAgfTsKIAot
ICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9IG1ha2VTdHJpbmcoY29udGV4dEJlZm9yZVN0YXJ0
LCBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pLmdldCgpOwotICAgIGNvbnRleHQu
c2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rp
b24sIGVuZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24pLmdldCgpOwotICAgIGNvbnRleHQu
Y29udGV4dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdlT2ZJbnRlcmVzdEluU2VsZWN0aW9u
LCBjb250ZXh0QWZ0ZXJFbmQpLmdldCgpOworICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9IG1h
a2VTdHJpbmcoY29udGV4dEJlZm9yZVN0YXJ0LCBzdGFydE9mUmFuZ2VPZkludGVyZXN0SW5TZWxl
Y3Rpb24pOworICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gbWFrZVN0cmluZyhzdGFydE9mUmFu
Z2VPZkludGVyZXN0SW5TZWxlY3Rpb24sIGVuZE9mUmFuZ2VPZkludGVyZXN0SW5TZWxlY3Rpb24p
OworICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gbWFrZVN0cmluZyhlbmRPZlJhbmdlT2ZJbnRl
cmVzdEluU2VsZWN0aW9uLCBjb250ZXh0QWZ0ZXJFbmQpOwogICAgIGlmIChjb21wb3NpdGlvblJh
bmdlICYmIHJhbmdlc092ZXJsYXAocmFuZ2VPZkludGVyZXN0LmdldCgpLCBjb21wb3NpdGlvblJh
bmdlLmdldCgpKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY29tcG9zaXRpb25TdGFydChj
b21wb3NpdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwogICAgICAgICBWaXNpYmxlUG9zaXRp
b24gY29tcG9zaXRpb25FbmQoY29tcG9zaXRpb25SYW5nZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAg
ICAgIGNvbnRleHQubWFya2VkVGV4dCA9IG1ha2VTdHJpbmcoY29tcG9zaXRpb25TdGFydCwgY29t
cG9zaXRpb25FbmQpLmdldCgpOworICAgICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSBtYWtlU3Ry
aW5nKGNvbXBvc2l0aW9uU3RhcnQsIGNvbXBvc2l0aW9uRW5kKTsKICAgICAgICAgY29udGV4dC5z
ZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0LmxvY2F0aW9uID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRp
b25zKHN0YXJ0T2ZSYW5nZU9mSW50ZXJlc3RJblNlbGVjdGlvbiwgY29tcG9zaXRpb25TdGFydCk7
CiAgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dC5sZW5ndGggPSBbY29u
dGV4dC5zZWxlY3RlZFRleHQuc3RyaW5nIGxlbmd0aF07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA5YmQ3MzFl
MjIyYzA5MzY5N2JiMTgzOGUxODY1NjI4Yjk4ZjIwYTlkLi4wNzNmYzFlOWU1ZDEwMDQ5YjM5MzJm
OTc1YzU5MGVkNzNlYjc2MDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgUExBVEZP
Uk0oTUFDKQogCi0jaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgiCiAjaW1wb3J0ICJDb250ZXh0
TWVudUNvbnRleHREYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJF
ZGl0aW5nUmFuZ2UuaCIKQEAgLTMzOSw3ICszMzgsNyBAQCB2b2lkIFdlYlBhZ2U6OmF0dHJpYnV0
ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgZWRp
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0g
ZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlLCBJbmNsdWRlSW1hZ2VzOjpObyk7CisgICAg
YXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlLCBJ
bmNsdWRlSW1hZ2VzOjpObykuc3RyaW5nOwogCiAgICAgLy8gV2ViQ29yZTo6ZWRpdGluZ0F0dHJp
YnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKSBpbnNpc3RzIG9uIGluc2VydGluZyBhIHRyYWlsaW5nCiAg
ICAgLy8gd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgd2hpY2ggYnJlYWtzIHRo
ZSBBVE9LIGlucHV0IG1ldGhvZC4gIDxyZGFyOi8vcHJvYmxlbS81NDAwNTUxPgpAQCAtMzU0LDEx
ICszNTMsMTEgQEAgdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXQKICAgICBBU1NFUlQocmFuZ2VUb1Nl
bmQuaXNWYWxpZCgpKTsKICAgICBpZiAoIXJhbmdlVG9TZW5kLmlzVmFsaWQoKSkgewogICAgICAg
ICAvLyBTZW5kIGFuIGVtcHR5IEVkaXRpbmdSYW5nZSBhcyBhIGxhc3QgcmVzb3J0IGZvciA8cmRh
cjovL3Byb2JsZW0vMjcwNzgwODk+LgotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGF0dHJpYnV0ZWRT
dHJpbmcuZ2V0KCksIEVkaXRpbmdSYW5nZSgpLCBjYWxsYmFja0lEKSk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdl
Q2FsbGJhY2soeyBXVEZNb3ZlKGF0dHJpYnV0ZWRTdHJpbmcpLCBuaWwgfSwgRWRpdGluZ1Jhbmdl
KCksIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2Fs
bGJhY2soYXR0cmlidXRlZFN0cmluZy5nZXQoKSwgcmFuZ2VUb1NlbmQsIGNhbGxiYWNrSUQpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFy
YWN0ZXJSYW5nZUNhbGxiYWNrKHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwgbmlsIH0sIHJh
bmdlVG9TZW5kLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Zm9udEF0U2VsZWN0
aW9uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTgxMCw3ICs4MDksNyBAQCB2b2lkIFdlYlBh
Z2U6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9u
LCBjb25zdCBWZWN0bwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gYXR0cmlidXRlZFNlbGVjdGlvbiA9IGF0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKTsKKyAgICBh
dXRvIGF0dHJpYnV0ZWRTZWxlY3Rpb24gPSBhdHRyaWJ1dGVkU3RyaW5nKCpyYW5nZSkuc3RyaW5n
OwogICAgIGlmICghYXR0cmlidXRlZFNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCmluZGV4IGQ2MTRlYjkzMTRi
MGY5ZjZkNTM1ZmZkMTcxY2YzOWE5MzliMGFmYjMuLjI2MGIxYTJhZTdmMTA0YWQ5YjNjNWViYzcz
OTVmYTAyZmQyNGM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyLm1tCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9u
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmFuZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TU2hhcmluZ1NlcnZpY2VTUEkuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01MSw3ICs1MCw3IEBAIHZvaWQgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6Omhh
bmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlCiAgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBhdHRyaWJ1dGVkU2VsZWN0aW9uID0gYXR0
cmlidXRlZFN0cmluZygqcmFuZ2UpOworICAgIGF1dG8gYXR0cmlidXRlZFNlbGVjdGlvbiA9IGF0
dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKS5zdHJpbmc7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU2VsZWN0
aW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggZWYzZDRkNDNmOGIz
ODdlZTA0ODQ2NWZlODU2MjNiYjRmY2RjYThlMy4uM2NiZmU3NmZmZDFmNzViZmZkMjg3YWE1Y2I3
MWIyZjRkMTRlY2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTI2OSw5ICsyNjksOSBAQCAtIChO
U0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkVGV4dAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5n
ICopYXR0cmlidXRlZFN0cmluZ0Zyb206KERPTU5vZGUgKilzdGFydE5vZGUgc3RhcnRPZmZzZXQ6
KGludClzdGFydE9mZnNldCB0bzooRE9NTm9kZSAqKWVuZE5vZGUgZW5kT2Zmc2V0OihpbnQpZW5k
T2Zmc2V0CiB7CiAgICAgaWYgKCFzdGFydE5vZGUgfHwgIWVuZE5vZGUpCi0gICAgICAgIHJldHVy
biBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0gYXV0b3Jl
bGVhc2VdOworICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CiAgICAgYXV0byByYW5nZSA9IFNpbXBsZVJhbmdlIHsgeyAqY29yZShz
dGFydE5vZGUpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpIH0sIHsgKmNvcmUo
ZW5kTm9kZSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpIH0gfTsKLSAgICByZXR1
cm4gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcocmFuZ2UpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKHJhbmdlKS5zdHJpbmcuYXV0b3JlbGVhc2UoKTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQppbmRleCBlMzkxMWQ3NWE4YTY3ZTU4OTA0YzE0NDlmNDZlOWRlMTFjMTc0NjJlLi43
MWIwMmQxYjUzZGVkYjllMmZiMzUwOWU1NTdmMTQ1Nzk5NzQzMjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYzMDksNyArNjMwOSw3
IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKXRleHRTdG9yYWdlCiAgICAgTE9HKFRleHRJbnB1
dCwgInRleHRTdG9yYWdlIC0+IFwiJUBcIiIsIHJlc3VsdCA/IFtyZXN1bHQgc3RyaW5nXSA6IEAi
Iik7CiAgICAgCiAgICAgLy8gV2UgaGF2ZSB0byByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIHJhdGhl
ciB0aGFuIG51bGwgdG8gcHJldmVudCBUU00gZnJvbSBjYWxsaW5nIC1zdHJpbmcKLSAgICByZXR1
cm4gcmVzdWx0ID8gcmVzdWx0IDogW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpAIiJdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0IDog
W1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiB9CiAKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCkBAIC02NDMwLDcgKzY0MzAsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAg
ICBhdXRvIHJlc3VsdCA9IGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKCpyYW5nZSk7CisgICAgYXV0
byByZXN1bHQgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZygqcmFuZ2UpLnN0cmluZzsKICAgICAK
ICAgICAvLyBXZWJDb3JlOjplZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSgpIGluc2lz
dHMgb24gaW5zZXJ0aW5nIGEgdHJhaWxpbmcKICAgICAvLyB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQg
b2YgdGhlIHN0cmluZyB3aGljaCBicmVha3MgdGhlIEFUT0sgaW5wdXQgbWV0aG9kLiAgPHJkYXI6
Ly9wcm9ibGVtLzU0MDA1NTE+CkBAIC03MDAzLDcgKzcwMDMsNyBAQCAtIChOU0F0dHJpYnV0ZWRT
dHJpbmcgKilfYXR0cmlidXRlZFN0cmluZ0Zyb21ET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZQog
I2lmICFMT0dfRElTQUJMRUQKICAgICBkb3VibGUgc3RhcnQgPSBDRkFic29sdXRlVGltZUdldEN1
cnJlbnQoKTsKICNlbmRpZgotICAgIGF1dG8gcmVzdWx0ID0gYXR0cmlidXRlZFN0cmluZygqY29y
ZShyYW5nZSkpLmF1dG9yZWxlYXNlKCk7CisgICAgYXV0byByZXN1bHQgPSBhdHRyaWJ1dGVkU3Ry
aW5nKCpjb3JlKHJhbmdlKSkuc3RyaW5nLmF1dG9yZWxlYXNlKCk7CiAjaWYgIUxPR19ESVNBQkxF
RAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIC0gc3Rh
cnQ7CiAgICAgTE9HKFRpbWluZywgImNyZWF0aW5nIGF0dHJpYnV0ZWQgc3RyaW5nIGZyb20gc2Vs
ZWN0aW9uIHRvb2sgJWYgc2Vjb25kcy4iLCBkdXJhdGlvbik7CkBAIC03MDE0LDMwICs3MDE0LDMw
IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKV9hdHRyaWJ1dGVkU3RyaW5nRnJvbURPTVJhbmdl
OihET01SYW5nZSAqKXJhbmdlCiAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilfbGVnYWN5QXR0cmli
dXRlZFN0cmluZ0Zyb206KERPTU5vZGUgKilzdGFydENvbnRhaW5lciBvZmZzZXQ6KGludClzdGFy
dE9mZnNldCB0bzooRE9NTm9kZSAqKWVuZENvbnRhaW5lciBvZmZzZXQ6KGludCllbmRPZmZzZXQK
IHsKICAgICBpZiAoIXN0YXJ0Q29udGFpbmVyIHx8ICFlbmRDb250YWluZXIpCi0gICAgICAgIHJl
dHVybiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0gYXV0
b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CiAgICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmcoV2ViQ29yZTo6
U2ltcGxlUmFuZ2UgeyB7ICpjb3JlKHN0YXJ0Q29udGFpbmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0YXJ0T2Zmc2V0KSB9LAotICAgICAgICB7ICpjb3JlKGVuZENvbnRhaW5lciksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihlbmRPZmZzZXQpIH0gfSkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAg
eyAqY29yZShlbmRDb250YWluZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kT2Zmc2V0KSB9
IH0pLnN0cmluZy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilh
dHRyaWJ1dGVkU3RyaW5nCiB7CiAgICAgRE9NRG9jdW1lbnQgKmRvY3VtZW50ID0gW1tzZWxmIF9m
cmFtZV0gRE9NRG9jdW1lbnRdOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBb
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0gYXV0b3JlbGVh
c2VdOworICAgICAgICByZXR1cm4gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSBh
dXRvcmVsZWFzZV07CiAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IFtzZWxmIF9hdHRy
aWJ1dGVkU3RyaW5nRnJvbURPTVJhbmdlOltkb2N1bWVudCBfZG9jdW1lbnRSYW5nZV1dKQogICAg
ICAgICByZXR1cm4gYXR0cmlidXRlZFN0cmluZzsKLSAgICByZXR1cm4gZWRpdGluZ0F0dHJpYnV0
ZWRTdHJpbmcobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpjb3JlKGRvY3VtZW50KSkp
LmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqY29yZShkb2N1bWVudCkpKS5zdHJpbmcuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNBdHRyaWJ1dGVkU3RyaW5nICopc2VsZWN0ZWRBdHRyaWJ1dGVk
U3RyaW5nCiB7Ci0gICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0
cmluZyA9IFtzZWxmIF9hdHRyaWJ1dGVkU3RyaW5nRnJvbURPTVJhbmdlOltzZWxmIF9zZWxlY3Rl
ZFJhbmdlXV07CisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gcmV0YWluUHRyKFtzZWxmIF9h
dHRyaWJ1dGVkU3RyaW5nRnJvbURPTVJhbmdlOltzZWxmIF9zZWxlY3RlZFJhbmdlXV0pOwogICAg
IGlmICghYXR0cmlidXRlZFN0cmluZykgewogICAgICAgICBhdXRvKiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pOwogICAgICAgICBpZiAoY29yZUZyYW1lKSB7CiAgICAgICAgICAgICBh
dXRvIHJhbmdlID0gY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6
ZWRSYW5nZSgpOwogICAgICAgICAgICAgaWYgKHJhbmdlKQotICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZygqcmFuZ2UpOworICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZygqcmFuZ2Up
LnN0cmluZzsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVkU3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggODU5Njg0ODk1ZWNjMzcwYjJi
ZGEwOGIwMTI5NTE2ZWI2NDgyNmFkMC4uYjU1ZDE1NWFkYzI3ZGM0MjVmYWRmZDM3NDcyYTYyZGQ1
NzlhZjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtNTIwLDcgKzUyMCw3
IEBAICsgKFdlYkNvcmU6OkRpY3Rpb25hcnlQb3B1cEluZm8pX2RpY3Rpb25hcnlQb3B1cEluZm9G
b3JSYW5nZTooY29uc3QgV2ViQ29yZTo6U2ltCiAgICAgcG9wdXBJbmZvLm9yaWdpbiA9IE5TTWFr
ZVBvaW50KHJhbmdlUmVjdC54KCksIHJhbmdlUmVjdC55KCkgKyBzY2FsZWREZXNjZW50KTsKICAg
ICBwb3B1cEluZm8ub3B0aW9ucyA9IGxvb2t1cE9wdGlvbnM7CiAKLSAgICBhdXRvIGF0dHJpYnV0
ZWRTdHJpbmcgPSBlZGl0aW5nQXR0cmlidXRlZFN0cmluZyhyYW5nZSwgV2ViQ29yZTo6SW5jbHVk
ZUltYWdlczo6Tm8pOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGVkaXRpbmdBdHRyaWJ1
dGVkU3RyaW5nKHJhbmdlLCBXZWJDb3JlOjpJbmNsdWRlSW1hZ2VzOjpObykuc3RyaW5nOwogICAg
IGF1dG8gc2NhbGVkQXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbYXR0cmlidXRlZFN0cmluZyBzdHJpbmdd
XSk7CiAgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBbTlNGb250TWFuYWdlciBzaGFy
ZWRGb250TWFuYWdlcl07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>