<?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>208568</bug_id>
          
          <creation_ts>2020-03-04 01:51:19 -0800</creation_ts>
          <short_desc>Export NowPlaying commands to GPUProcess when media playing in GPUProcess is enabled</short_desc>
          <delta_ts>2020-03-05 03:54:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1625458</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 01:51:19 -0800</bug_when>
    <thetext>Export NowPlaying commands to GPUProcess when media playing inGPUProcess is enabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625459</commentid>
    <comment_count>1</comment_count>
      <attachid>392395</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 02:13:07 -0800</bug_when>
    <thetext>Created attachment 392395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625460</commentid>
    <comment_count>2</comment_count>
      <attachid>392396</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 02:16:13 -0800</bug_when>
    <thetext>Created attachment 392396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625482</commentid>
    <comment_count>3</comment_count>
      <attachid>392402</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 05:41:24 -0800</bug_when>
    <thetext>Created attachment 392402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625486</commentid>
    <comment_count>4</comment_count>
      <attachid>392404</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 06:16:09 -0800</bug_when>
    <thetext>Created attachment 392404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625489</commentid>
    <comment_count>5</comment_count>
      <attachid>392407</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 06:27:06 -0800</bug_when>
    <thetext>Created attachment 392407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625493</commentid>
    <comment_count>6</comment_count>
      <attachid>392409</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 06:44:18 -0800</bug_when>
    <thetext>Created attachment 392409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625632</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-04 11:07:36 -0800</bug_when>
    <thetext>Crashes should go away with https://bugs.webkit.org/show_bug.cgi?id=208578</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625685</commentid>
    <comment_count>8</comment_count>
      <attachid>392409</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-04 12:08:09 -0800</bug_when>
    <thetext>Comment on attachment 392409
Patch

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

r=me once the bots are happy

&gt; Source/WebCore/html/MediaElementSession.cpp:993
&gt; +    double currentTime = std::isfinite(m_element.currentTime()) &amp;&amp; m_element.supportsSeeking() ? m_element.currentTime() : MediaPlayer::invalidTime();

Nit: m_element.currentTime() can be fairly expensive, so it would be good to cache it in a local instead of calling twice.

&gt; Source/WebCore/html/MediaElementSession.cpp:995
&gt; +    return NowPlayingInfo { m_element.mediaSessionTitle(), m_element.sourceApplicationIdentifier(), duration, currentTime, m_element.supportsSeeking(), m_element.mediaSessionUniqueIdentifier(), isPlaying, allowsNowPlayingControlsVisibility };

May as well also have a local for m_element.supportsSeeking() since it is used three times.

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:242
&gt; +    double rate =  nowPlayingInfo.isPlaying ? 1 : 0;

Nit: two spaces after &apos;=&apos;

&gt; Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm:276
&gt; +    // FIXME: Fix this layering violation.

!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626002</commentid>
    <comment_count>9</comment_count>
      <attachid>392551</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-05 02:24:13 -0800</bug_when>
    <thetext>Created attachment 392551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626010</commentid>
    <comment_count>10</comment_count>
      <attachid>392554</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-05 03:08:19 -0800</bug_when>
    <thetext>Created attachment 392554
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626011</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-05 03:08:57 -0800</bug_when>
    <thetext>Moved the bits from bug 208578 here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626013</commentid>
    <comment_count>12</comment_count>
      <attachid>392554</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-05 03:53:42 -0800</bug_when>
    <thetext>Comment on attachment 392554
Patch for landing

Clearing flags on attachment: 392554

Committed r257913: &lt;https://trac.webkit.org/changeset/257913&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626014</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-05 03:53:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626015</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-05 03:54:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/60079072&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392395</attachid>
            <date>2020-03-04 02:13:07 -0800</date>
            <delta_ts>2020-03-04 02:16:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208568-20200304111305.patch</filename>
            <type>text/plain</type>
            <size>38385</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBlNmFhMmQzMDliZTYz
NTBiYzJjNGFlZGI1NjhjODliMzJmMWMwZi4uYjkwZmVhZGZjNmU5MTU5NGJiZjI3NGYxZDc2Njc5
OTJmMGZmZjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTAzLTA0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgTm93UGxheWluZyBnZXR0ZXJz
IHNpbmNlIG9ubHkgSFRNTE1lZGlhRWxlbWVudCBpcyBlbGlnaWJsZS4KKyAgICAgICAgTGV0IEhU
TUxNZWRpYUVsZW1lbnQgZ2VuZXJhdGUgaXRzIG93biBOb3dQbGF5aW5nSW5mbyB3aGVuIHJlcXVl
c3RlZCBieSB0aGUgc2Vzc2lvbiBtYW5hZ2VyLgorICAgICAgICBVc2UgcGxhdGZvcm0gc3RyYXRl
Z2llcyB0byBhYnN0cmFjdCBvdXQgaG93IHRvIGV4ZWN1dGUgTm93UGxheWluZyBvcmRlcnMuCisK
KyAgICAgICAgTWFudWFsbHkgdGVzdGVkLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZyk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVNlc3Npb25EdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVNlc3Npb25DdXJyZW50VGltZSBjb25zdCk6CisgICAgICAgICogaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAoTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyk6CisKIDIwMjAtMDMtMDIg
IFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiZTk1ZGMyZDIyZTE5
MGU3YzE1YmVlZDJhYjI4MmRkY2FmZWI4M2MuLjM5YjJhOTA0NmM2ZDFkYjE1ZGIwYTNiNDI2NTA2
Y2MwODhjZDc3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDMtMDQgIHlvdWVu
biBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9ydCBOb3dQbGF5aW5n
IGNvbW1hbmRzIHRvIEdQVVByb2Nlc3Mgd2hlbiBtZWRpYSBwbGF5aW5nIGluIEdQVVByb2Nlc3Mg
aXMgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4NTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXhwb3J0IE5vd1BsYXlpbmcgb3JkZXJzIHRvIEdQVSBwcm9jZXNzIHRocm91Z2ggSVBDIGlm
IEdQVVByb2Nlc3MgaXMgdHVybmVkIG9uLgorICAgICAgICBPdGhlcndpc2UgdXNlIHRoZSByZWd1
bGFyIGluIHByb2Nlc3MgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYktpdDo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFTdHJhdGVneTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU3RyYXRlZ3k6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5Lmg6CisKIDIwMjAtMDMtMDMgIHlvdWVu
biBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBVU0UoR1BVX1BS
T0NFU1MpIHRvIEVOQUJMRShHUFVfUFJPQ0VTU19GT1JfV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDg4NmRkZWE1ZjZmMDMyZTlhODgyNmVmMWRiNjAwNzRiYjY5NzcwZDIu
LjY4ZTdmZWVhYmU2M2E1MDYxMTZiODdhNmU3YjVmZWUwN2YzNjU4MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0wNCAgeW91ZW5uIGZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3J0IE5vd1BsYXlpbmcgY29tbWFu
ZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlpbmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFi
bGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
aW4tcHJvY2VzcyBub3cgcGxheWluZyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMy0wMiAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSXRl
bXMgaW4gdGhlIHRvb2xiYXIgdGFrZSB1cCB0byBtdWNoIHZlcnRpY2FsIHNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZDQ3
MDBhNjk1MDViMTYyYWJlYWMzM2FjOTI4ODJiMWRlNzAzMWU0Mi4uNGEyZTE3YjAwNzFjZmM3Zjc3
ZWY3MjZmZjJjZTVlZDdmYmUzZGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzczLDE2ICszNzMsNiBAQCBEb2N1bWVudElk
ZW50aWZpZXIgQXVkaW9Db250ZXh0Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QK
ICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDogRG9jdW1lbnRJ
ZGVudGlmaWVyIHsgfTsKIH0KIAotU3RyaW5nIEF1ZGlvQ29udGV4dDo6c291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5k
b2N1bWVudCgpOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5m
cmFtZSgpIDogbnVsbHB0cikgewotICAgICAgICBpZiAoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdv
cmtpbmdDb250ZXh0ID0gZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkpCi0gICAg
ICAgICAgICByZXR1cm4gbmV0d29ya2luZ0NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpOwotICAgIH0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQogYm9vbCBBdWRp
b0NvbnRleHQ6OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWRvY3VtZW50KCkg
fHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50
KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAwNjhlYTZkYzRhZDAwZTQ4NWI0Mjgz
YzIxNjUxY2NhNTY3NzY1MWRlLi4xNjMyYTg4M2ZkZjc1ZmM3NTBjZjdmMTBjODA2YTI1MjVkYTdm
YjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKQEAgLTM1NSw3ICszNTUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90
ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFu
ZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQq
KSBvdmVycmlkZSB7IH0KICAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5
YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBzb3VyY2VBcHBsaWNh
dGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblByb2R1Y2VBdWRp
bygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzU3VzcGVuZGVkKCkg
Y29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkZjAyM2ViZDRlZGRiZjY5MzQwNTcyMzY5N2FkZTliZjUzOTY4
NTg5Li5mYTg5ZWM1ZmE2ZjM3YmY5MjVlZDMyYzE4NjQ5YzNhYTkzMzFlNTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDg1
LDYgKzEwODUsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJl
YW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
M0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQx
MkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8q
IFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0MTZGRDI1RjI0MEZBNEU1MDA2NjYxRDggLyogTm93UGxheWlu
Z0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkZEMjVEMjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNzI1M0FCMTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50
LmggKi87IH07CkBAIC03MzY3LDYgKzczNjgsNyBAQAogCQk0MTZENzU5RjIwQzY0NDEzMDBEMDJE
MkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJS
ZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJS
ZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGRDI1RDI0
MEVFMUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTm93UGxheWluZ0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcy
NTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NzczLDYgKzI4Nzc1LDcgQEAKIAkJCQlGRDMxNjA2QjEy
QjAyNkY3MDBDMUEzNTkgLyogSFJURlBhbm5lci5oICovLAogCQkJCUZEQjE3MDAzMTRBMkJBQjIw
MEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwICovLAogCQkJCUZEQjE3MDA0MTRB
MkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCAqLywKKwkJCQk0MTZGRDI1
RDI0MEVFMUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLywKIAkJCQlGRDMxNjA2QzEy
QjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmNwcCAqLywKIAkJCQlGRDMxNjA2RDEyQjAyNkY3MDBD
MUEzNTkgLyogUGFubmVyLmggKi8sCiAJCQkJQ0RFNjY3QTExRTRCQkE0RDAwRTgxNTRBIC8qIFBs
YXRmb3JtQXVkaW9EYXRhLmggKi8sCkBAIC0zMTY2NCw2ICszMTY2Nyw3IEBACiAJCQkJN0NDMkRE
RkIxRUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxRkU2REZBMTUwMDRDMkEwMDA0RUJDNCAvKiBOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFF
QSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RkQyNUYyNDBGQTRF
NTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQw
QjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
OTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEy
MTlCM0IwRENBODdBQjAwNDBFM0EwIC8qIG5wZnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgzMzJiYzU3NjA0MmI0
NmE3MzA1OTFiZTVkNGMwMWEzMjZkZmE1ZDIuLjAwNDU3ZTllZGQyMmRhZjdmNTJkYjRlODJhMmMx
OTRhYmMzYzE3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNs
dWRlICJNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2luY2x1ZGUgIlBPREludGVydmFsVHJl
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKQEAgLTYzNCw2
ICs2MzUsMjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIG1f
bWVkaWFTZXNzaW9uID0gbnVsbHB0cjsKICAgICBzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyVXBkYXRlKCk7CiB9CisKK09wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBIVE1MTWVkaWFFbGVt
ZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZygpCit7CisgICAgYXV0byBlbGVtZW50
ID0gYmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihNZWRp
YUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Tm93UGxheWluZyk7Cisg
ICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogcGFnZSA9
IGVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpOworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSA9IHBhZ2UgJiYgIXBhZ2UtPmlzVmlzaWJsZUFuZEFjdGl2ZSgpOwor
ICAgIGJvb2wgaXNQbGF5aW5nID0gZWxlbWVudC0+bWVkaWFTZXNzaW9uKCkuc3RhdGUoKSA9PSBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZzsKKyAgICBkb3VibGUgZHVyYXRpb24gPSBlbGVt
ZW50LT5zdXBwb3J0c1NlZWtpbmcoKSA/IGVsZW1lbnQtPmR1cmF0aW9uKCkgOiBNZWRpYVBsYXll
cjo6aW52YWxpZFRpbWUoKTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgPSBzdGQ6OmlzZmluaXRl
KGVsZW1lbnQtPmN1cnJlbnRUaW1lKCkpICYmIGVsZW1lbnQtPnN1cHBvcnRzU2Vla2luZygpID8g
ZWxlbWVudC0+Y3VycmVudFRpbWUoKSA6IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOworCisg
ICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgZWxlbWVudC0+dGl0bGUoKSwgZWxlbWVudC0+c291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgZWxlbWVu
dC0+c3VwcG9ydHNTZWVraW5nKCksIGVsZW1lbnQtPm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZp
ZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07Cit9
CisKIFJlZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFF
bGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Np
b246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2UpCiB7CiAgICAgVmVjdG9yPE1lZGlh
RWxlbWVudFNlc3Npb25JbmZvPiBjYW5kaWRhdGVTZXNzaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDUxMTRjYTIyZjAzYWMyMWZmNzUyYTFmZDU2NjEwNjMz
ODQwODBkMy4uZWFhZTU4OTQwZTc3ZTY2NjljYzI2MTI0NmRhNzViMmYxNWJiNzNkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTkwLDYgKzkwLDcgQEAgY2xhc3Mg
TWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbjsKIGNsYXNzIE1lZGlhU291
cmNlOwogY2xhc3MgTWVkaWFTdHJlYW07CitzdHJ1Y3QgTm93UGxheWluZ0luZm87CiBjbGFzcyBS
ZW5kZXJNZWRpYTsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwpAQCAtMTYxLDYgKzE2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSGFzaFNl
dDxIVE1MTWVkaWFFbGVtZW50Kj4mIGFsbE1lZGlhRWxlbWVudHMoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gYmVzdE1lZGlhRWxlbWVudEZv
clNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5
YmFja0NvbnRyb2xzUHVycG9zZSk7CisgICAgc3RhdGljIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZv
PiBiZXN0TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXdpbmQoZG91YmxlIHRpbWVEZWx0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXR1cm5Ub1JlYWx0aW1lKCkgb3ZlcnJpZGU7CkBAIC03MzUsNyArNzM3LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgbWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpIG92ZXJy
aWRlOwogCi0gICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdDsK
ICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKTsgfQogICAg
IFZlY3RvcjxTdHJpbmc+IG1lZGlhUGxheWVyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3Mo
KSBjb25zdCBvdmVycmlkZTsKIApAQCAtODgyLDEwICs4ODQsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1lQXV0b3BsYXlp
bmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVz
dW1lKSBvdmVycmlkZTsKLSAgICB1aW50NjRfdCBtZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVy
KCkgY29uc3QgZmluYWw7Ci0gICAgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZHVyYXRpb24oKTsgfQotICAgIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGlt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KKyAgICB1aW50NjRf
dCBtZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU3RyaW5nIG1lZGlh
U2Vzc2lvblRpdGxlKCkgY29uc3Q7CisgICAgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZHVyYXRpb24oKTsgfQorICAgIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJy
ZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KICAgICBib29sIGNhblJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA4YjIzZjRhODc1OWQxZDJkYWI4ZDM4ZjU0
MzIyMzg1ODhlNDA3YTljLi4zZDY4MGE3MTFjZmU0ZDEyMTlkMTgyYWFmMThhNjNlZjViNzViYTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTk3
NywxMiArOTc3LDYgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVJc01haW5Db250
ZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pc01haW5Db250ZW50OwogfQogCi1ib29sIE1lZGlh
RWxlbWVudFNlc3Npb246OmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25z
dAotewotICAgIGF1dG8gcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBy
ZXR1cm4gcGFnZSAmJiAhcGFnZS0+aXNWaXNpYmxlQW5kQWN0aXZlKCk7Ci19Ci0KIGJvb2wgTWVk
aWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVk
aW8oKSBjb25zdAogewogICAgIGF1dG8gcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggMWYyZDM0
Zjk1M2YzNTJlMDk1MjFiODNkMThlMmJkNmMxYzI5NjYyMy4uYzE3YmU1MzQ3YTMwOWU3NjI3Zjc2
N2M4MWNmNjkyODdiODA2YjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKQEAgLTE0OSw3ICsxNDksNiBAQCBwdWJsaWM6CiAgICAgTW9ub3RvbmljVGltZSBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSgpIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd3NQ
bGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpIGNvbnN0OwotICAgIGJvb2wgYWxs
b3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
c3RhdGljIGJvb2wgaXNNZWRpYUVsZW1lbnRTZXNzaW9uTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBl
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaAppbmRleCA2MGE1
ODQ3YzhjZWMxMGI3OWI3NDlhNmZhZjg1MDNkMTZhMTk5Yjk1Li44OTc0NWJiODNhMjMzNmQ0MjFl
MTY3MGU4NzMwYmZiN2FjNzQ2ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJh
dGVneS5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlv
RGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CiBjbGFzcyBDRE1GYWN0b3J5Owor
c3RydWN0IE5vd1BsYXlpbmdJbmZvOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVN0cmF0
ZWd5IHsKIHB1YmxpYzoKQEAgLTQyLDYgKzQzLDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0
b3I8Q0RNRmFjdG9yeSo+JikgPSAwOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
dmlydHVhbCB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0
IE5vd1BsYXlpbmdJbmZvJikgPSAwOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IH5NZWRpYVN0cmF0ZWd5KCkgPSBkZWZhdWx0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCAwNzgyMWU3
YjhhZDc1ZWI5NjFhOGUzNzFmNzJjZjQ3NjY3OTEyNjdlLi4zNDZlMGRiMTk5ZWQ1YzI0MGI5NGQ3
ZmQxZDMxNGI0YmJjZTNkOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0yNzUsMjggKzI3NSw2IEBAIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OnByZXNl
bnRhdGlvblR5cGUoKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudC5wcmVzZW50YXRpb25UeXBl
KCk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi11aW50NjRfdCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6dW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlh
U2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKTsKLX0KLQotU3RyaW5nIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblRp
dGxlKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZHVyYXRpb24oKSBjb25z
dAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25EdXJhdGlvbigpOwotfQotCi1k
b3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKTsKLX0KLSNlbmRpZgotICAg
IAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZHMoKTsKQEAgLTMxNCwxMSArMjkyLDYgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9jbGllbnQuc3VwcG9y
dHNTZWVraW5nKCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c291cmNlQXBw
bGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQuc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci19Ci0KIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246
OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQuaXNTdXNwZW5kZWQo
KTsKQEAgLTM2NywyOCArMzQwLDYgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUHJv
ZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgbV9tYW5hZ2VyLT5zZXNzaW9uQ2FuUHJvZHVjZUF1ZGlv
Q2hhbmdlZCgpOwogfQogCi0jaWYgRU5BQkxFKFZJREVPKQotdWludDY0X3QgUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdAotewot
ICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1l
ZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLWRv
dWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24oKSBj
b25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLX0KLQotZG91
YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25DdXJyZW50VGltZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwotfQotI2Vu
ZGlmCi0KIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudENoYXJhY3RlcmlzdGljc0No
YW5nZWQoKQogewogICAgIG1fbWFuYWdlci0+Y2xpZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgq
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaAppbmRleCBhOGQxOGJlNGVhYmFlOWVjODBmZjVkZWY0ZmI3YmNhOWRhNjU3
MDdhLi43Mjk1NGU0Yzk2MDY2OTg2ZTQ5YzI4ZDRjMGY3MzQxMDU1OWZhZmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgK
QEAgLTExMywxMyArMTEzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQnVm
ZmVyaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUJ1ZmZlcmluZygpIHsgfQogICAg
IAotI2lmIEVOQUJMRShWSURFTykKLSAgICB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGR1cmF0aW9uKCkgY29u
c3Q7Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIHR5cGVk
ZWYgdW5pb24gewogICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgfSBSZW1vdGVDb21tYW5k
QXJndW1lbnQ7CkBAIC0xNzQsOCArMTY3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgeyB9CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGFsbG93c05vd1BsYXlp
bmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgYm9v
bCBoYXNQbGF5ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc1Bs
YXllZFNpbmNlTGFzdEludGVycnVwdGlvbjsgfQogICAgIHZvaWQgY2xlYXJIYXNQbGF5ZWRTaW5j
ZUxhc3RJbnRlcnJ1cHRpb24oKSB7IG1faGFzUGxheWVkU2luY2VMYXN0SW50ZXJydXB0aW9uID0g
ZmFsc2U7IH0KIApAQCAtMjM1LDEzICsyMjYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHN1c3BlbmRQbGF5YmFjaygpID0gMDsKIAotI2lmIEVOQUJMRShWSURFTykKLSAgICB2aXJ0
dWFsIHVpbnQ2NF90IG1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZG91
YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUgbWVk
aWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdDsKLSNlbmRpZgotICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNl
c3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNTZWVraW5nKCkgY29uc3QgPSAwOwpAQCAtMjYxLDcgKzI0NSw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgdmlydHVhbCBEb2N1bWVudElkZW50aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRl
bnRpZmllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTWVkaWFTdHJl
YW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5oCmluZGV4IGFiMDliNzk4NWQ3N2ZjNmE3NjBjMDRjNzc5ZWE3NzJlZWE1NzY0ZDAuLmQ3
MjU3YzA2OWZiM2U0NmU2YTI3OWYxMzVhZTY2ZjkzMjRhY2VhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5oCkBAIC0zNSw2ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RydWN0IE5vd1BsYXlpbmdJbmZvOworCiBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EK
ICAgICA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIKICAgICAsIHByaXZhdGUg
UmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50CkBAIC01NSw2ICs1Nyw5IEBAIHB1YmxpYzoKICAg
ICBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uOyB9CiAgICAgdm9pZCBw
cmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoKSBmaW5hbDsKIAorICAgIHN0
YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICBzdGF0
aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBzY2hlZHVsZVVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVOb3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4
IGViMTlhOWJmOWMwMzM4YWFhYjNlNzhmYjM2OGIwNzcyNjVlMWQxZDguLjczZDI0YzRlNGE4MTE3
MGVhZTA3ZjU5OTNlY2IwZmFiZGYxNTBiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0KQEAgLTMzLDcgKzMzLDEwIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KIApAQCAtMjA0LDEyICsyMDcsNjggQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCkKICAgICBzY2hlZHVsZVVwZGF0ZU5v
d1BsYXlpbmdJbmZvKCk7CiB9CiAKLVBsYXRmb3JtTWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKQordm9pZCBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKQogewotICAgIGlmIChhdXRvIGVs
ZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQ
dXJwb3NlOjpOb3dQbGF5aW5nKSkKLSAgICAgICAgcmV0dXJuICZlbGVtZW50LT5tZWRpYVNlc3Np
b24oKTsKKyAgICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ1Zpc2liaWxpdHkoKSkKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNp
YmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBNUk5vd1BsYXlpbmdDbGllbnRW
aXNpYmlsaXR5TmV2ZXJWaXNpYmxlKTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIE1STWVk
aWFSZW1vdGVTZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNhdGlvbihmYWxzZSk7CisgICAgTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKG51bGxwdHIpOworICAgIE1STWVkaWFSZW1vdGVTZXRO
b3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1vdGVH
ZXRMb2NhbE9yaWdpbigpLCBrTVJQbGF5YmFja1N0YXRlU3RvcHBlZCwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJyb3IgZXJyb3IpIHsKKyNpZiBMT0dfRElTQUJM
RUQKKyAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdB
cHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oc3RvcHBlZCkgZmFpbGVkIHdpdGggZXJy
b3IgIiwgZXJyb3IpOworI2VuZGlmCisgICAgfSk7Cit9CisKK3ZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYgbm93UGxheWluZ0luZm8pCit7CisgICAgaWYgKHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKQorICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Q2FuQmVO
b3dQbGF5aW5nQXBwbGljYXRpb24odHJ1ZSk7CisKKyAgICBhdXRvIGluZm8gPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworCisgICAgaWYgKCFub3dQbGF5aW5nSW5mby50aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9UaXRsZSwgbm93UGxheWluZ0luZm8udGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisK
KyAgICBpZiAoc3RkOjppc2Zpbml0ZShub3dQbGF5aW5nSW5mby5kdXJhdGlvbikgJiYgbm93UGxh
eWluZ0luZm8uZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKKyAgICAg
ICAgYXV0byBjZkR1cmF0aW9uID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmbm93UGxheWluZ0luZm8uZHVyYXRpb24pKTsK
KyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVO
b3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBjZkR1cmF0aW9uLmdldCgpKTsKKyAgICB9CisKKyAgICBk
b3VibGUgcmF0ZSA9ICBub3dQbGF5aW5nSW5mby5pc1BsYXlpbmcgPyAxIDogMDsKKyAgICBhdXRv
IGNmUmF0ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVyRG91YmxlVHlwZSwgJnJhdGUpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBjZlJhdGUu
Z2V0KCkpOworCisgICAgYXV0byBsYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRp
ZmllciA9IG5vd1BsYXlpbmdJbmZvLnVuaXF1ZUlkZW50aWZpZXI7CisgICAgYXV0byBjZklkZW50
aWZpZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckxvbmdMb25nVHlwZSwgJmxhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlm
aWVyKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIGNmSWRlbnRpZmllci5nZXQoKSk7CisK
KyAgICBpZiAoc3RkOjppc2Zpbml0ZShub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkgJiYgbm93
UGxheWluZ0luZm8uY3VycmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkgJiYg
bm93UGxheWluZ0luZm8uc3VwcG9ydHNTZWVraW5nKSB7CisgICAgICAgIGF1dG8gY2ZDdXJyZW50
VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmN1cnJlbnRUaW1lKSk7CisgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGNh
bkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKCkgJiYg
IW5vd1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5pc0VtcHR5KCkpCisg
ICAgICAgIE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0
TG9jYWxPcmlnaW4oKSwgbm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVy
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisgICAgTVJQbGF5YmFja1N0YXRlIHBsYXliYWNr
U3RhdGUgPSAobm93UGxheWluZ0luZm8uaXNQbGF5aW5nKSA/IGtNUlBsYXliYWNrU3RhdGVQbGF5
aW5nIDoga01SUGxheWJhY2tTdGF0ZVBhdXNlZDsKKyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9j
YWxPcmlnaW4oKSwgcGxheWJhY2tTdGF0ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihN
Uk1lZGlhUmVtb3RlRXJyb3IgZXJyb3IpIHsKKyNpZiBMT0dfRElTQUJMRUQKKyAgICAgICAgVU5V
U0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisgICAgICAgIFdURkxvZ0Fsd2F5cygiTVJNZWRpYVJl
bW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4ocGxheWlu
ZykgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOworI2VuZGlmCisgICAgfSk7CisgICAgTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKGluZm8uZ2V0KCkpOworCisgICAgaWYgKGNhbkxv
YWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpIHsK
KyAgICAgICAgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gbm93UGxh
eWluZ0luZm8uYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA/IE1STm93UGxheWlu
Z0NsaWVudFZpc2liaWxpdHlBbHdheXNWaXNpYmxlIDogTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJp
bGl0eU5ldmVyVmlzaWJsZTsKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNp
YmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCB2aXNpYmlsaXR5KTsKKyAgICB9
CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5m
bygpCkBAIC0yMjAsOTQgKzI3OSw0NSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
dXBkYXRlTm93UGxheWluZ0luZm8oKQogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiAKLSAgICBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24gPSB0aGlz
LT5ub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uKCk7Ci0KLSAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJjdXJyZW50U2Vzc2lvbjogIiwgY3VycmVudFNlc3Npb24gPyBjdXJyZW50U2Vzc2lv
bi0+bG9nSWRlbnRpZmllcigpIDogbnVsbHB0cik7Ci0KLSAgICBpZiAoIWN1cnJlbnRTZXNzaW9u
KSB7Ci0gICAgICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXROb3dQ
bGF5aW5nVmlzaWJpbGl0eSgpKQotICAgICAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlp
bmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBNUk5vd1BsYXlpbmdD
bGllbnRWaXNpYmlsaXR5TmV2ZXJWaXNpYmxlKTsKKyAgICAvLyBGSVhNRTogRml4IHRoaXMgbGF5
ZXJpbmcgdmlvbGF0aW9uLgorICAgIGF1dG8gbm93UGxheWluZ0luZm8gPSBIVE1MTWVkaWFFbGVt
ZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZygpOwogCisgICAgaWYgKCFub3dQbGF5
aW5nSW5mbykgewogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJjbGVhcmluZyBu
b3cgcGxheWluZyBpbmZvIik7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0
cmF0ZWd5KCkuY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogCi0gICAgICAgIE1STWVkaWFSZW1vdGVT
ZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNhdGlvbihmYWxzZSk7CiAgICAgICAgIG1fcmVnaXN0ZXJl
ZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uID0gZmFsc2U7Ci0KLSAgICAgICAgTVJNZWRpYVJlbW90
ZVNldE5vd1BsYXlpbmdJbmZvKG51bGxwdHIpOwogICAgICAgICBtX25vd1BsYXlpbmdBY3RpdmUg
PSBmYWxzZTsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IGVtcHR5U3Ry
aW5nKCk7CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24gPSBOQU47CiAg
ICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRWxhcHNlZFRpbWUgPSBOQU47CiAgICAgICAg
IG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSAwOwotICAgICAg
ICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9y
aWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwga01SUGxheWJhY2tTdGF0ZVN0b3Bw
ZWQsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9y
KSB7Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwot
I2Vsc2UKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxh
eWJhY2tTdGF0ZUZvck9yaWdpbihzdG9wcGVkKSBmYWlsZWQgd2l0aCBlcnJvciAiLCBlcnJvcik7
Ci0jZW5kaWYKLSAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIiLCBub3dQbGF5aW5nSW5mby0+dGl0
bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0luZm8tPmlzUGxheWluZywgIiwgZHVy
YXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24sICIsIG5vdyA9ICIsIG5vd1BsYXlp
bmdJbmZvLT5jdXJyZW50VGltZSk7CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFT
dHJhdGVneSgpLnNldE5vd1BsYXlpbmdJbmZvKCFtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbiwgKm5vd1BsYXlpbmdJbmZvKTsKKwogICAgIGlmICghbV9yZWdpc3RlcmVkQXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24pIHsKICAgICAgICAgbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBw
bGljYXRpb24gPSB0cnVlOwogICAgICAgICBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
SWZOZWNlc3NhcnkoKTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNldENhbkJlTm93UGxheWluZ0Fw
cGxpY2F0aW9uKHRydWUpOwogICAgIH0KIAotICAgIFN0cmluZyB0aXRsZSA9IGN1cnJlbnRTZXNz
aW9uLT50aXRsZSgpOwotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGN1cnJlbnRTZXNzaW9uLT5zdXBw
b3J0c1NlZWtpbmcoKSA/IGN1cnJlbnRTZXNzaW9uLT5kdXJhdGlvbigpIDogTWVkaWFQbGF5ZXI6
OmludmFsaWRUaW1lKCk7Ci0gICAgZG91YmxlIHJhdGUgPSBjdXJyZW50U2Vzc2lvbi0+c3RhdGUo
KSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyA/IDEgOiAwOwotICAgIGF1dG8gaW5m
byA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCA0LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7Ci0KLSAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvVGl0bGUsIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotICAgICAgICBtX2xhc3RV
cGRhdGVkTm93UGxheWluZ1RpdGxlID0gdGl0bGU7Ci0gICAgfQorICAgIGlmICghbm93UGxheWlu
Z0luZm8tPnRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdU
aXRsZSA9IG5vd1BsYXlpbmdJbmZvLT50aXRsZTsKIAotICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1
cmF0aW9uKSAmJiBkdXJhdGlvbiAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkgewotICAg
ICAgICBhdXRvIGNmRHVyYXRpb24gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZkdXJhdGlvbikpOwotICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
RHVyYXRpb24sIGNmRHVyYXRpb24uZ2V0KCkpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG5vd1Bs
YXlpbmdJbmZvLT5kdXJhdGlvbjsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgJiYg
ZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpCiAgICAgICAgIG1fbGFzdFVw
ZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24gPSBkdXJhdGlvbjsKLSAgICB9CiAKLSAgICBhdXRvIGNm
UmF0ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJnJhdGUpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBjZlJhdGUuZ2V0
KCkpOworICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSBu
b3dQbGF5aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllcjsKIAotICAgIG1fbGFzdFVwZGF0ZWROb3dQ
bGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSBjdXJyZW50U2Vzc2lvbi0+dW5pcXVlSWRlbnRp
ZmllcigpOwotICAgIGF1dG8gY2ZJZGVudGlmaWVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJMb25nTG9uZ1R5cGUsICZtX2xhc3RVcGRhdGVk
Tm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZp
ZXIsIGNmSWRlbnRpZmllci5nZXQoKSk7Ci0KLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBjdXJy
ZW50U2Vzc2lvbi0+Y3VycmVudFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShjdXJyZW50
VGltZSkgJiYgY3VycmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkgJiYgY3Vy
cmVudFNlc3Npb24tPnN1cHBvcnRzU2Vla2luZygpKSB7Ci0gICAgICAgIGF1dG8gY2ZDdXJyZW50
VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJmN1cnJlbnRUaW1lKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwg
Y2ZDdXJyZW50VGltZS5nZXQoKSk7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gbm93UGxheWlu
Z0luZm8tPmN1cnJlbnRUaW1lOworICAgIGlmIChzdGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSAm
JiBjdXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSAmJiBub3dQbGF5aW5n
SW5mby0+c3VwcG9ydHNTZWVraW5nKQogICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0Vs
YXBzZWRUaW1lID0gY3VycmVudFRpbWU7Ci0gICAgfQotCi0gICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAidGl0bGUgPSBcIiIsIHRpdGxlLCAiXCIsIHJhdGUgPSAiLCByYXRlLCAiLCBkdXJh
dGlvbiA9ICIsIGR1cmF0aW9uLCAiLCBub3cgPSAiLCBjdXJyZW50VGltZSk7CiAKLSAgICBTdHJp
bmcgcGFyZW50QXBwbGljYXRpb24gPSBjdXJyZW50U2Vzc2lvbi0+c291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyKCk7Ci0gICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNl
dFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIXBhcmVudEFwcGxpY2F0aW9uLmlzRW1wdHkoKSkKLSAg
ICAgICAgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKE1STWVkaWFSZW1vdGVHZXRM
b2NhbE9yaWdpbigpLCBwYXJlbnRBcHBsaWNhdGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
LQotICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IGN1cnJlbnRTZXNzaW9uLT5hbGxvd3NOb3dQbGF5
aW5nQ29udHJvbHNWaXNpYmlsaXR5KCk7Ci0gICAgTVJQbGF5YmFja1N0YXRlIHBsYXliYWNrU3Rh
dGUgPSAoY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBs
YXlpbmcpID8ga01SUGxheWJhY2tTdGF0ZVBsYXlpbmcgOiBrTVJQbGF5YmFja1N0YXRlUGF1c2Vk
OwotICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRl
Rm9yT3JpZ2luKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBwbGF5YmFja1N0YXRlLCBk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgewot
I2lmIExPR19ESVNBQkxFRAotICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotI2Vsc2UKLSAg
ICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlp
bmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4ocGxheWluZykgZmFpbGVkIHdpdGgg
ZXJyb3IgIiwgZXJyb3IpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgTVJNZWRpYVJlbW90ZVNldE5v
d1BsYXlpbmdJbmZvKGluZm8uZ2V0KCkpOwotCi0gICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVf
TVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpIHsKLSAgICAgICAgTVJOb3dQ
bGF5aW5nQ2xpZW50VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gY3VycmVudFNlc3Npb24tPmFsbG93
c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSA/IE1STm93UGxheWluZ0NsaWVudFZpc2li
aWxpdHlBbHdheXNWaXNpYmxlIDogTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlz
aWJsZTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVk
aWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCB2aXNpYmlsaXR5KTsKLSAgICB9CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogI2VuZGlmIC8vIFVTRShNRURJQVJFTU9URSkKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4MjdjOWEwZjYxZGNmMjViLi5iOGEy
ZDMwNjIwOGEzZTk0NGMyNzA3YmQwMjAzMDdjNjZmYmRiYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02
MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogCkBAIC0y
MTMsNiArMjE0LDE4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNF
RChmb3VuZCwgZm91bmQpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQoreworICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpOworfQorCit2b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5
aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykKK3sK
KyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKHNldEFzTm93
UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyk7Cit9CisjZW5kaWYKKwogYm9vbCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA3NDcxNWM4MGM1
NDViZWFmZWMzZjZiN2UwOTg0ZWNhNTBjYmEyNjY5Li5lNGM5MTI1NTlmZjk2MDQ1ZTAwNGIwZTBl
OWQzMmJmMzBhNDBjNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEwMyw2ICsxMDMsMTAgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBjbGVhck5v
d1BsYXlpbmdJbmZvKCk7CisgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93
UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYpOworI2Vu
ZGlmCiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2Uo
SVBDOjpDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDkzMmMwMTIyZGUwODFlZGU5YmI5ZWZiNTZmOWJjNTI1OWJhNGQ3MDQuLjhkOTFjZTJiY2RiZGFl
Y2ZjMjU3MTAzY2RhY2U2OTY1NGNjNDhkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5k
KFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAgIHZvaWQgU2V0
Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdl
YkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKTsKKyNlbmRpZgogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKaW5kZXggMmFhZTVlNTQ0NTEw
ODQ3OWJkM2NkMzM5YWZhNmJmNmQyZGRhYmNmNi4uYzg2NmJhMDA5N2Y0MzMwYjg3YWJmMTM2YzA1
ZWZhMTI4N2IyYTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lP
Q2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm93
UGxheWluZ0luZm8uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU1LDQgKzU3LDMwIEBA
IHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNv
cmU6OkNETUZhY3RvcnkqPiYgZmFjdG9yCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKK3sKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisgICAgaWYgKG1fdXNlR1BVUHJvY2VzcykgeworICAgICAgICBh
dXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNz
YWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xlYXJOb3dQbGF5aW5nSW5mbyB7IH0s
IDApOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJh
dGVneTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwg
Y29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mIG5vd1BsYXlpbmdJbmZvKQoreworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIGF1
dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3Nh
Z2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXROb3dQbGF5aW5nSW5mbyB7IHNldEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyB9LCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93
UGxheWluZ0luZm8oc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKaW5kZXggNGZhYjBl
OTQ0ZmMxNGU2ODQzNzllMzAwODE2M2JlMTYyZGQ4OWI0ZC4uNmRlZmUzYjE1NDljNDRkNDVmYTQx
ZTU5NTI2M2Y0YjdlMDcxYzIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIHJlZ2lzdGVyQ0RNRmFj
dG9yaWVzKFZlY3RvcjxXZWJDb3JlOjpDRE1GYWN0b3J5Kj4mKSBvdmVycmlkZTsKICNlbmRpZgor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpIGZpbmFs
OworICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNh
dGlvbiwgY29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mKSBmaW5hbDsKKyNlbmRpZgogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBiOTA5ZWNjNDM5YmNkM2M2ZjZk
YTgwNDFjNmVmMjkzZmYzNDY2OTZmLi43MzE5ZTY4ZDU3ZGQ4YmVlNTMzMTMzMTRjNjI4MGRlZWY3
YzI5MmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3Iu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhU3RyYXRlZ3kuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Bhc3RlYm9hcmRJdGVtSW5mby5oPgpAQCAtODAsNiArODEsMTUgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMo
ZmFjdG9yaWVzKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8o
KSBmaW5hbAorICAgIHsKKyAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpjbGVhck5v
d1BsYXlpbmdJbmZvKCk7CisgICAgfQorCisgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29s
IHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYgbm93UGxh
eWluZ0luZm8pIGZpbmFsCisgICAgeworICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6
OnNldE5vd1BsYXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5n
SW5mbyk7CisgICAgfQogfTsKIAogTWVkaWFTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392396</attachid>
            <date>2020-03-04 02:16:13 -0800</date>
            <delta_ts>2020-03-04 05:41:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208568-20200304111610.patch</filename>
            <type>text/plain</type>
            <size>41994</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBlNmFhMmQzMDliZTYz
NTBiYzJjNGFlZGI1NjhjODliMzJmMWMwZi4uNDU2NDNjNzEwZDcwZTgwYmNjODgwNGFkNDExMDNk
NzE5Y2FjMzRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAzLTA0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgTm93UGxheWluZyBnZXR0ZXJz
IHNpbmNlIG9ubHkgSFRNTE1lZGlhRWxlbWVudCBpcyBlbGlnaWJsZS4KKyAgICAgICAgTGV0IEhU
TUxNZWRpYUVsZW1lbnQgZ2VuZXJhdGUgaXRzIG93biBOb3dQbGF5aW5nSW5mbyB3aGVuIHJlcXVl
c3RlZCBieSB0aGUgc2Vzc2lvbiBtYW5hZ2VyLgorICAgICAgICBVc2UgcGxhdGZvcm0gc3RyYXRl
Z2llcyB0byBhYnN0cmFjdCBvdXQgaG93IHRvIGV4ZWN1dGUgTm93UGxheWluZyBvcmRlcnMuCisK
KyAgICAgICAgTWFudWFsbHkgdGVzdGVkLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZyk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVNlc3Npb25EdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVNlc3Npb25DdXJyZW50VGltZSBjb25zdCk6CisgICAgICAgICogaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Y29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKE1lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAoTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbyk6CisKIDIwMjAtMDMtMDIgIFJvYiBC
dWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiZTk1ZGMyZDIyZTE5MGU3YzE1
YmVlZDJhYjI4MmRkY2FmZWI4M2MuLjM5YjJhOTA0NmM2ZDFkYjE1ZGIwYTNiNDI2NTA2Y2MwODhj
ZDc3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDMtMDQgIHlvdWVubiBmYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9ydCBOb3dQbGF5aW5nIGNvbW1h
bmRzIHRvIEdQVVByb2Nlc3Mgd2hlbiBtZWRpYSBwbGF5aW5nIGluIEdQVVByb2Nlc3MgaXMgZW5h
YmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhw
b3J0IE5vd1BsYXlpbmcgb3JkZXJzIHRvIEdQVSBwcm9jZXNzIHRocm91Z2ggSVBDIGlmIEdQVVBy
b2Nlc3MgaXMgdHVybmVkIG9uLgorICAgICAgICBPdGhlcndpc2UgdXNlIHRoZSByZWd1bGFyIGlu
IHByb2Nlc3MgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFTdHJhdGVneTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk1lZGlhU3RyYXRlZ3k6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5Lmg6CisKIDIwMjAtMDMtMDMgIHlvdWVubiBmYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBVU0UoR1BVX1BST0NFU1Mp
IHRvIEVOQUJMRShHUFVfUFJPQ0VTU19GT1JfV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IDg4NmRkZWE1ZjZmMDMyZTlhODgyNmVmMWRiNjAwNzRiYjY5NzcwZDIuLjY4ZTdm
ZWVhYmU2M2E1MDYxMTZiODdhNmU3YjVmZWUwN2YzNjU4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0wNCAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3J0IE5vd1BsYXlpbmcgY29tbWFuZHMgdG8g
R1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlpbmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFibGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaW4tcHJv
Y2VzcyBub3cgcGxheWluZyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMy0wMiAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSXRlbXMgaW4g
dGhlIHRvb2xiYXIgdGFrZSB1cCB0byBtdWNoIHZlcnRpY2FsIHNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZDQ3MDBhNjk1
MDViMTYyYWJlYWMzM2FjOTI4ODJiMWRlNzAzMWU0Mi4uNGEyZTE3YjAwNzFjZmM3Zjc3ZWY3MjZm
ZjJjZTVlZDdmYmUzZGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzczLDE2ICszNzMsNiBAQCBEb2N1bWVudElkZW50aWZp
ZXIgQXVkaW9Db250ZXh0Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QKICAgICBy
ZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDogRG9jdW1lbnRJZGVudGlm
aWVyIHsgfTsKIH0KIAotU3RyaW5nIEF1ZGlvQ29udGV4dDo6c291cmNlQXBwbGljYXRpb25JZGVu
dGlmaWVyKCkgY29uc3QKLXsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFtZSgp
IDogbnVsbHB0cikgewotICAgICAgICBpZiAoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdD
b250ZXh0ID0gZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gbmV0d29ya2luZ0NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigp
OwotICAgIH0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQogYm9vbCBBdWRpb0NvbnRl
eHQ6OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9j
dW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFj
dGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAwNjhlYTZkYzRhZDAwZTQ4NWI0MjgzYzIxNjUx
Y2NhNTY3NzY1MWRlLi4xNjMyYTg4M2ZkZjc1ZmM3NTBjZjdmMTBjODA2YTI1MjVkYTdmYjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAg
LTM1NSw3ICszNTUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUs
IGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVy
cmlkZSB7IH0KICAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jl
c3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklk
ZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3Qg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBkZjAyM2ViZDRlZGRiZjY5MzQwNTcyMzY5N2FkZTliZjUzOTY4NTg5Li5m
YTg5ZWM1ZmE2ZjM3YmY5MjVlZDMyYzE4NjQ5YzNhYTkzMzFlNTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDg1LDYgKzEw
ODUsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1JbnRl
cm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYx
QkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAw
QTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRh
YmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0MTZGRDI1RjI0MEZBNEU1MDA2NjYxRDggLyogTm93UGxheWluZ0luZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkZEMjVE
MjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNzI1M0FCMTM1NEJCQkMwMDM2MEYyQSAv
KiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi87
IH07CkBAIC03MzY3LDYgKzczNjgsNyBAQAogCQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMgLyog
TmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRp
bmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBvcnRp
bmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGRDI1RDI0MEVFMUFF
MDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTm93UGxheWluZ0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3
MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBOTEz
NTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI4NzczLDYgKzI4Nzc1LDcgQEAKIAkJCQlGRDMxNjA2QjEyQjAyNkY3
MDBDMUEzNTkgLyogSFJURlBhbm5lci5oICovLAogCQkJCUZEQjE3MDAzMTRBMkJBQjIwMEEyQjVE
OSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwICovLAogCQkJCUZEQjE3MDA0MTRBMkJBQjIw
MEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCAqLywKKwkJCQk0MTZGRDI1RDI0MEVF
MUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLywKIAkJCQlGRDMxNjA2QzEyQjAyNkY3
MDBDMUEzNTkgLyogUGFubmVyLmNwcCAqLywKIAkJCQlGRDMxNjA2RDEyQjAyNkY3MDBDMUEzNTkg
LyogUGFubmVyLmggKi8sCiAJCQkJQ0RFNjY3QTExRTRCQkE0RDAwRTgxNTRBIC8qIFBsYXRmb3Jt
QXVkaW9EYXRhLmggKi8sCkBAIC0zMTY2NCw2ICszMTY2Nyw3IEBACiAJCQkJN0NDMkRERkIxRUM5
NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxRkU2REZBMTUwMDRDMkEwMDA0RUJDNCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBO
b3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RkQyNUYyNDBGQTRFNTAwNjY2
MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQwQjBEN0Uy
QjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTI3RkQy
MTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMTlCM0Iw
RENBODdBQjAwNDBFM0EwIC8qIG5wZnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDgzMzJiYzU3NjA0MmI0NmE3MzA1
OTFiZTVkNGMwMWEzMjZkZmE1ZDIuLjAwNDU3ZTllZGQyMmRhZjdmNTJkYjRlODJhMmMxOTRhYmMz
YzE3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzIs
NiArNzIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJN
ZWRpYVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNp
bmNsdWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2luY2x1ZGUgIlBPREludGVydmFsVHJlZS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKQEAgLTYzNCw2ICs2MzUs
MjIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIG1fbWVkaWFT
ZXNzaW9uID0gbnVsbHB0cjsKICAgICBzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBk
YXRlKCk7CiB9CisKK09wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBIVE1MTWVkaWFFbGVtZW50Ojpi
ZXN0TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZygpCit7CisgICAgYXV0byBlbGVtZW50ID0gYmVz
dE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihNZWRpYUVsZW1l
bnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Tm93UGxheWluZyk7CisgICAgaWYg
KCFlbGVtZW50KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogcGFnZSA9IGVsZW1l
bnQtPmRvY3VtZW50KCkucGFnZSgpOworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
VmlzaWJpbGl0eSA9IHBhZ2UgJiYgIXBhZ2UtPmlzVmlzaWJsZUFuZEFjdGl2ZSgpOworICAgIGJv
b2wgaXNQbGF5aW5nID0gZWxlbWVudC0+bWVkaWFTZXNzaW9uKCkuc3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UGxheWluZzsKKyAgICBkb3VibGUgZHVyYXRpb24gPSBlbGVtZW50LT5z
dXBwb3J0c1NlZWtpbmcoKSA/IGVsZW1lbnQtPmR1cmF0aW9uKCkgOiBNZWRpYVBsYXllcjo6aW52
YWxpZFRpbWUoKTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgPSBzdGQ6OmlzZmluaXRlKGVsZW1l
bnQtPmN1cnJlbnRUaW1lKCkpICYmIGVsZW1lbnQtPnN1cHBvcnRzU2Vla2luZygpID8gZWxlbWVu
dC0+Y3VycmVudFRpbWUoKSA6IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOworCisgICAgcmV0
dXJuIE5vd1BsYXlpbmdJbmZvIHsgZWxlbWVudC0+dGl0bGUoKSwgZWxlbWVudC0+c291cmNlQXBw
bGljYXRpb25JZGVudGlmaWVyKCksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgZWxlbWVudC0+c3Vw
cG9ydHNTZWVraW5nKCksIGVsZW1lbnQtPm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwg
aXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07Cit9CisKIFJl
ZlB0cjxIVE1MTWVkaWFFbGVtZW50PiBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50
Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246OlBs
YXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2UpCiB7CiAgICAgVmVjdG9yPE1lZGlhRWxlbWVu
dFNlc3Npb25JbmZvPiBjYW5kaWRhdGVTZXNzaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggZDUxMTRjYTIyZjAzYWMyMWZmNzUyYTFmZDU2NjEwNjMzODQwODBk
My4uZWFhZTU4OTQwZTc3ZTY2NjljYzI2MTI0NmRhNzViMmYxNWJiNzNkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTkwLDYgKzkwLDcgQEAgY2xhc3MgTWVkaWFS
ZXNvdXJjZUxvYWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbjsKIGNsYXNzIE1lZGlhU291cmNlOwog
Y2xhc3MgTWVkaWFTdHJlYW07CitzdHJ1Y3QgTm93UGxheWluZ0luZm87CiBjbGFzcyBSZW5kZXJN
ZWRpYTsKIGNsYXNzIFNjcmlwdENvbnRyb2xsZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpAQCAtMTYxLDYgKzE2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4mIGFsbE1lZGlhRWxlbWVudHMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gYmVzdE1lZGlhRWxlbWVudEZvclNob3dp
bmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0Nv
bnRyb2xzUHVycG9zZSk7CisgICAgc3RhdGljIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBiZXN0
TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXdpbmQoZG91YmxlIHRpbWVEZWx0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXR1cm5U
b1JlYWx0aW1lKCkgb3ZlcnJpZGU7CkBAIC03MzUsNyArNzM3LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgbWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdlZCgpIG92ZXJyaWRlOwog
Ci0gICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBT
dHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKTsgfQogICAgIFZlY3Rv
cjxTdHJpbmc+IG1lZGlhUGxheWVyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKSBjb25z
dCBvdmVycmlkZTsKIApAQCAtODgyLDEwICs4ODQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1
c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1lQXV0b3BsYXlpbmcoKSBv
dmVycmlkZTsKICAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBv
dmVycmlkZTsKLSAgICB1aW50NjRfdCBtZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCkgY29u
c3QgZmluYWw7Ci0gICAgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZHVyYXRpb24oKTsgfQotICAgIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KKyAgICB1aW50NjRfdCBtZWRp
YVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU3RyaW5nIG1lZGlhU2Vzc2lv
blRpdGxlKCkgY29uc3Q7CisgICAgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gZHVyYXRpb24oKTsgfQorICAgIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KICAgICBib29sIGNhblJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkT3ZlcnJp
ZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50
ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA4YjIzZjRhODc1OWQxZDJkYWI4ZDM4ZjU0MzIyMzg1
ODhlNDA3YTljLi4zZDY4MGE3MTFjZmU0ZDEyMTlkMTgyYWFmMThhNjNlZjViNzViYTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTk3NywxMiAr
OTc3LDYgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVJc01haW5Db250ZW50KCkg
Y29uc3QKICAgICByZXR1cm4gbV9pc01haW5Db250ZW50OwogfQogCi1ib29sIE1lZGlhRWxlbWVu
dFNlc3Npb246OmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25zdAotewot
ICAgIGF1dG8gcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKLSAgICByZXR1cm4g
cGFnZSAmJiAhcGFnZS0+aXNWaXNpYmxlQW5kQWN0aXZlKCk7Ci19Ci0KIGJvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBj
b25zdAogewogICAgIGF1dG8gcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggMWYyZDM0Zjk1M2Yz
NTJlMDk1MjFiODNkMThlMmJkNmMxYzI5NjYyMy4uYzE3YmU1MzQ3YTMwOWU3NjI3Zjc2N2M4MWNm
NjkyODdiODA2YjllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmgKQEAgLTE0OSw3ICsxNDksNiBAQCBwdWJsaWM6CiAgICAgTW9ub3RvbmljVGltZSBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSgpIGNvbnN0OwogCiAgICAgYm9vbCBhbGxvd3NQbGF5YmFj
a0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dzTm93
UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGlj
IGJvb2wgaXNNZWRpYUVsZW1lbnRTZXNzaW9uTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaAppbmRleCA2MGE1ODQ3Yzhj
ZWMxMGI3OWI3NDlhNmZhZjg1MDNkMTZhMTk5Yjk1Li44OTc0NWJiODNhMjMzNmQ0MjFlMTY3MGU4
NzMwYmZiN2FjNzQ2ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRp
YVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5o
CkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvRGVzdGlu
YXRpb247CiBjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CiBjbGFzcyBDRE1GYWN0b3J5Oworc3RydWN0
IE5vd1BsYXlpbmdJbmZvOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBNZWRpYVN0cmF0ZWd5IHsK
IHB1YmxpYzoKQEAgLTQyLDYgKzQzLDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8Q0RN
RmFjdG9yeSo+JikgPSAwOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdmlydHVh
bCB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5v
d1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1Bs
YXlpbmdJbmZvJikgPSAwOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRp
YVN0cmF0ZWd5KCkgPSBkZWZhdWx0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Ob3dQbGF5aW5nSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4Zjc1ODJlMjM2MWQ1ZjVlYzRlNzI1
MmFkMzY5N2YyZTE0MTI4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBOb3dQbGF5aW5nSW5mbyB7CisgICAgU3RyaW5nIHRp
dGxlOworICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CisgICAgZG91Ymxl
IGR1cmF0aW9uIHsgMCB9OworICAgIGRvdWJsZSBjdXJyZW50VGltZSB7IDAgfTsKKyAgICBib29s
IHN1cHBvcnRzU2Vla2luZyB7IGZhbHNlIH07CisgICAgdWludDY0X3QgdW5pcXVlSWRlbnRpZmll
ciB7IDAgfTsKKyAgICBib29sIGlzUGxheWluZyB7IGZhbHNlIH07CisgICAgYm9vbCBhbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IHsgZmFsc2UgfTsKKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBOb3dQbGF5
aW5nSW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCB0aXRsZSA8PCBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIgPDwgZHVyYXRpb24gPDwgY3Vy
cmVudFRpbWUgPDwgc3VwcG9ydHNTZWVraW5nIDw8IHVuaXF1ZUlkZW50aWZpZXIgPDwgaXNQbGF5
aW5nIDw8IGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHk7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTm93UGxheWlu
Z0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyB0aXRsZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpdGxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgZG91YmxlIGR1cmF0aW9uOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZHVyYXRpb24p
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgZG91YmxlIGN1cnJlbnRUaW1lOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoY3VycmVudFRpbWUpKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgYm9vbCBzdXBwb3J0c1NlZWtpbmc7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdXBwb3J0
c1NlZWtpbmcpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgdWludDY0X3QgdW5pcXVlSWRl
bnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVuaXF1ZUlkZW50aWZpZXIpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYm9vbCBpc1BsYXlpbmc7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1BsYXlpbmcpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYm9vbCBhbGxv
d3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBXVEZNb3ZlKHRpdGxlKSwgV1RGTW92ZShz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpLCBkdXJhdGlvbiwgY3VycmVudFRpbWUsIHN1cHBv
cnRzU2Vla2luZywgdW5pcXVlSWRlbnRpZmllciwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQbGF5aW5n
Q29udHJvbHNWaXNpYmlsaXR5IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
LmNwcAppbmRleCAwNzgyMWU3YjhhZDc1ZWI5NjFhOGUzNzFmNzJjZjQ3NjY3OTEyNjdlLi4zNDZl
MGRiMTk5ZWQ1YzI0MGI5NGQ3ZmQxZDMxNGI0YmJjZTNkOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0y
NzUsMjggKzI3NSw2IEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVu
dC5wcmVzZW50YXRpb25UeXBlKCk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi11aW50NjRfdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKTsKLX0KLQotU3RyaW5n
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xp
ZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6ZHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25E
dXJhdGlvbigpOwotfQotCi1kb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1cnJlbnRUaW1l
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3VycmVudFRpbWUo
KTsKLX0KLSNlbmRpZgotICAgIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNh
blJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKQEAgLTMxNCwxMSArMjkyLDYgQEAgYm9v
bCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9jbGllbnQuc3VwcG9ydHNTZWVraW5nKCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9jbGllbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci19Ci0KIGJvb2wgUGxh
dGZvcm1NZWRpYVNlc3Npb246OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9j
bGllbnQuaXNTdXNwZW5kZWQoKTsKQEAgLTM2NywyOCArMzQwLDYgQEAgdm9pZCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgbV9tYW5hZ2VyLT5zZXNz
aW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwogfQogCi0jaWYgRU5BQkxFKFZJREVPKQotdWlu
dDY0X3QgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50
aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
U3RyaW5nKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFT
ZXNzaW9uRHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxp
ZFRpbWUoKTsKLX0KLQotZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNl
c3Npb25DdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZh
bGlkVGltZSgpOwotfQotI2VuZGlmCi0KIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVu
dENoYXJhY3RlcmlzdGljc0NoYW5nZWQoKQogewogICAgIG1fbWFuYWdlci0+Y2xpZW50Q2hhcmFj
dGVyaXN0aWNzQ2hhbmdlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBhOGQxOGJlNGVhYmFlOWVjODBm
ZjVkZWY0ZmI3YmNhOWRhNjU3MDdhLi43Mjk1NGU0Yzk2MDY2OTg2ZTQ5YzI4ZDRjMGY3MzQxMDU1
OWZhZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uLmgKQEAgLTExMywxMyArMTEzLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzdXNwZW5kQnVmZmVyaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUJ1
ZmZlcmluZygpIHsgfQogICAgIAotI2lmIEVOQUJMRShWSURFTykKLSAgICB1aW50NjRfdCB1bmlx
dWVJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgZG91
YmxlIGR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0j
ZW5kaWYKLQogICAgIHR5cGVkZWYgdW5pb24gewogICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAg
ICAgfSBSZW1vdGVDb21tYW5kQXJndW1lbnQ7CkBAIC0xNzQsOCArMTY3LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgeyB9CiAgICAgU3Ry
aW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBi
b29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotCiAgICAgYm9vbCBoYXNQbGF5ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24oKSBjb25z
dCB7IHJldHVybiBtX2hhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlvbjsgfQogICAgIHZvaWQg
Y2xlYXJIYXNQbGF5ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24oKSB7IG1faGFzUGxheWVkU2luY2VM
YXN0SW50ZXJydXB0aW9uID0gZmFsc2U7IH0KIApAQCAtMjM1LDEzICsyMjYsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpID0gMDsKIAotI2lmIEVOQUJM
RShWSURFTykKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IG1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZp
ZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0
OwotICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdDsKLSNlbmRpZgot
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1h
bmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3QgPSAwOwpAQCAtMjYxLDcgKzI0NSw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW4oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBEb2N1bWVudElkZW50aWZpZXIg
aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTWVkaWFTdHJlYW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCmluZGV4IGFiMDliNzk4NWQ3N2ZjNmE3NjBjMDRjNzc5
ZWE3NzJlZWE1NzY0ZDAuLmQ3MjU3YzA2OWZiM2U0NmU2YTI3OWYxMzVhZTY2ZjkzMjRhY2VhMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0zNSw2ICszNSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IE5vd1BsYXlpbmdJbmZvOworCiBjbGFzcyBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EKICAgICA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIKICAgICAsIHByaXZhdGUgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50CkBAIC01NSw2ICs1
Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uOyB9CiAgICAgdm9pZCBwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qo
KSBmaW5hbDsKIAorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyTm93UGxheWlu
Z0luZm8oKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYp
OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZVVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tCmluZGV4IGViMTlhOWJmOWMwMzM4YWFhYjNlNzhmYjM2OGIwNzcyNjVlMWQx
ZDguLjczZDI0YzRlNGE4MTE3MGVhZTA3ZjU5OTNlY2IwZmFiZGYxNTBiOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTMzLDcgKzMzLDEwIEBACiAjaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5m
by5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIApAQCAtMjA0LDEyICsyMDcsNjggQEAgdm9pZCBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCkKICAg
ICBzY2hlZHVsZVVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CiB9CiAKLVBsYXRmb3JtTWVkaWFTZXNz
aW9uKiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24o
KQordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKQog
ewotICAgIGlmIChhdXRvIGVsZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVt
ZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxlbWVudFNlc3Npb246
OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nKSkKLSAgICAgICAgcmV0dXJuICZl
bGVtZW50LT5tZWRpYVNlc3Npb24oKTsKKyAgICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1l
ZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoKSkKKyAgICAgICAgTVJNZWRpYVJlbW90
ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBN
Uk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5TmV2ZXJWaXNpYmxlKTsKIAotICAgIHJldHVybiBu
dWxscHRyOworICAgIE1STWVkaWFSZW1vdGVTZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNhdGlvbihm
YWxzZSk7CisgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKG51bGxwdHIpOworICAg
IE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3Jp
Z2luKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBrTVJQbGF5YmFja1N0YXRlU3RvcHBl
ZCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJyb3IgZXJyb3Ip
IHsKKyNpZiBMT0dfRElTQUJMRUQKKyAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNl
CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiTVJNZWRpYVJl
bW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oc3RvcHBl
ZCkgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOworI2VuZGlmCisgICAgfSk7Cit9CisKK3Zv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYgbm93UGxheWluZ0lu
Zm8pCit7CisgICAgaWYgKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKQorICAgICAgICBNUk1l
ZGlhUmVtb3RlU2V0Q2FuQmVOb3dQbGF5aW5nQXBwbGljYXRpb24odHJ1ZSk7CisKKyAgICBhdXRv
IGluZm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgNCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOworCisgICAgaWYgKCFub3dQbGF5aW5nSW5mby50aXRsZS5pc0Vt
cHR5KCkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwgbm93UGxheWluZ0luZm8udGl0bGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShub3dQbGF5aW5nSW5mby5k
dXJhdGlvbikgJiYgbm93UGxheWluZ0luZm8uZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6OmludmFs
aWRUaW1lKCkpIHsKKyAgICAgICAgYXV0byBjZkR1cmF0aW9uID0gYWRvcHRDRihDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmbm93UGxheWlu
Z0luZm8uZHVyYXRpb24pKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0aW9uLCBjZkR1cmF0aW9uLmdldCgp
KTsKKyAgICB9CisKKyAgICBkb3VibGUgcmF0ZSA9ICBub3dQbGF5aW5nSW5mby5pc1BsYXlpbmcg
PyAxIDogMDsKKyAgICBhdXRvIGNmUmF0ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJhdGUpKTsKKyAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxh
eWJhY2tSYXRlLCBjZlJhdGUuZ2V0KCkpOworCisgICAgYXV0byBsYXN0VXBkYXRlZE5vd1BsYXlp
bmdJbmZvVW5pcXVlSWRlbnRpZmllciA9IG5vd1BsYXlpbmdJbmZvLnVuaXF1ZUlkZW50aWZpZXI7
CisgICAgYXV0byBjZklkZW50aWZpZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckxvbmdMb25nVHlwZSwgJmxhc3RVcGRhdGVkTm93UGxheWlu
Z0luZm9VbmlxdWVJZGVudGlmaWVyKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIGNmSWRl
bnRpZmllci5nZXQoKSk7CisKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShub3dQbGF5aW5nSW5mby5j
dXJyZW50VGltZSkgJiYgbm93UGxheWluZ0luZm8uY3VycmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6
OmludmFsaWRUaW1lKCkgJiYgbm93UGxheWluZ0luZm8uc3VwcG9ydHNTZWVraW5nKSB7CisgICAg
ICAgIGF1dG8gY2ZDdXJyZW50VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmN1cnJlbnRU
aW1lKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7Cisg
ICAgfQorCisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVu
dEFwcGxpY2F0aW9uKCkgJiYgIW5vd1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
Zmllci5pc0VtcHR5KCkpCisgICAgICAgIE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlv
bihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgbm93UGxheWluZ0luZm8uc291cmNlQXBw
bGljYXRpb25JZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisgICAgTVJQbGF5
YmFja1N0YXRlIHBsYXliYWNrU3RhdGUgPSAobm93UGxheWluZ0luZm8uaXNQbGF5aW5nKSA/IGtN
UlBsYXliYWNrU3RhdGVQbGF5aW5nIDoga01SUGxheWJhY2tTdGF0ZVBhdXNlZDsKKyAgICBNUk1l
ZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihN
Uk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgcGxheWJhY2tTdGF0ZSwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJyb3IgZXJyb3IpIHsKKyNpZiBMT0dfRElT
QUJMRUQKKyAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisgICAgICAgIFdURkxv
Z0Fsd2F5cygiTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3Rh
dGVGb3JPcmlnaW4ocGxheWluZykgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOworI2VuZGlm
CisgICAgfSk7CisgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKGluZm8uZ2V0KCkp
OworCisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlp
bmdWaXNpYmlsaXR5KCkpIHsKKyAgICAgICAgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eSB2
aXNpYmlsaXR5ID0gbm93UGxheWluZ0luZm8uYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJp
bGl0eSA/IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHlBbHdheXNWaXNpYmxlIDogTVJOb3dQ
bGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlzaWJsZTsKKyAgICAgICAgTVJNZWRpYVJlbW90
ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCB2
aXNpYmlsaXR5KTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1
cGRhdGVOb3dQbGF5aW5nSW5mbygpCkBAIC0yMjAsOTQgKzI3OSw0NSBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogCiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAKLSAgICBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3Vy
cmVudFNlc3Npb24gPSB0aGlzLT5ub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uKCk7Ci0KLSAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJjdXJyZW50U2Vzc2lvbjogIiwgY3VycmVudFNlc3Np
b24gPyBjdXJyZW50U2Vzc2lvbi0+bG9nSWRlbnRpZmllcigpIDogbnVsbHB0cik7Ci0KLSAgICBp
ZiAoIWN1cnJlbnRTZXNzaW9uKSB7Ci0gICAgICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3RlX01S
TWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKQotICAgICAgICAgICAgTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdp
bigpLCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5TmV2ZXJWaXNpYmxlKTsKKyAgICAvLyBG
SVhNRTogRml4IHRoaXMgbGF5ZXJpbmcgdmlvbGF0aW9uLgorICAgIGF1dG8gbm93UGxheWluZ0lu
Zm8gPSBIVE1MTWVkaWFFbGVtZW50OjpiZXN0TWVkaWFFbGVtZW50Rm9yTm93UGxheWluZygpOwog
CisgICAgaWYgKCFub3dQbGF5aW5nSW5mbykgewogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJjbGVhcmluZyBub3cgcGxheWluZyBpbmZvIik7CisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogCi0gICAg
ICAgIE1STWVkaWFSZW1vdGVTZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNhdGlvbihmYWxzZSk7CiAg
ICAgICAgIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uID0gZmFsc2U7Ci0KLSAg
ICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKG51bGxwdHIpOwogICAgICAgICBt
X25vd1BsYXlpbmdBY3RpdmUgPSBmYWxzZTsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlp
bmdUaXRsZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5n
RHVyYXRpb24gPSBOQU47CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRWxhcHNlZFRp
bWUgPSBOQU47CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50
aWZpZXIgPSAwOwotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9u
UGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwga01S
UGxheWJhY2tTdGF0ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJNZWRp
YVJlbW90ZUVycm9yIGVycm9yKSB7Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBVTlVT
RURfUEFSQU0oZXJyb3IpOwotI2Vsc2UKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAg
ICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihzdG9wcGVkKSBmYWlsZWQgd2l0
aCBlcnJvciAiLCBlcnJvcik7Ci0jZW5kaWYKLSAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIiLCBu
b3dQbGF5aW5nSW5mby0+dGl0bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0luZm8t
PmlzUGxheWluZywgIiwgZHVyYXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24sICIs
IG5vdyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5jdXJyZW50VGltZSk7CisKKyAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLnNldE5vd1BsYXlpbmdJbmZvKCFtX3JlZ2lzdGVy
ZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgKm5vd1BsYXlpbmdJbmZvKTsKKwogICAgIGlmICgh
bV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pIHsKICAgICAgICAgbV9yZWdpc3Rl
cmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24gPSB0cnVlOwogICAgICAgICBwcm92aWRlUHJlc2Vu
dGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3NhcnkoKTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNl
dENhbkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKHRydWUpOwogICAgIH0KIAotICAgIFN0cmluZyB0
aXRsZSA9IGN1cnJlbnRTZXNzaW9uLT50aXRsZSgpOwotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGN1
cnJlbnRTZXNzaW9uLT5zdXBwb3J0c1NlZWtpbmcoKSA/IGN1cnJlbnRTZXNzaW9uLT5kdXJhdGlv
bigpIDogTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7Ci0gICAgZG91YmxlIHJhdGUgPSBjdXJy
ZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyA/IDEg
OiAwOwotICAgIGF1dG8gaW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci0KLSAgICBpZiAoIXRpdGxlLmlzRW1w
dHkoKSkgewotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwotICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlID0gdGl0bGU7Ci0gICAgfQor
ICAgIGlmICghbm93UGxheWluZ0luZm8tPnRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9sYXN0
VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IG5vd1BsYXlpbmdJbmZvLT50aXRsZTsKIAotICAgIGlm
IChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSAmJiBkdXJhdGlvbiAhPSBNZWRpYVBsYXllcjo6aW52
YWxpZFRpbWUoKSkgewotICAgICAgICBhdXRvIGNmRHVyYXRpb24gPSBhZG9wdENGKENGTnVtYmVy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZkdXJhdGlv
bikpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJl
bW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24sIGNmRHVyYXRpb24uZ2V0KCkpOworICAgIGRvdWJs
ZSBkdXJhdGlvbiA9IG5vd1BsYXlpbmdJbmZvLT5kdXJhdGlvbjsKKyAgICBpZiAoc3RkOjppc2Zp
bml0ZShkdXJhdGlvbikgJiYgZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkp
CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24gPSBkdXJhdGlvbjsKLSAg
ICB9CiAKLSAgICBhdXRvIGNmUmF0ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJhdGUpKTsKLSAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJh
Y2tSYXRlLCBjZlJhdGUuZ2V0KCkpOworICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1Vu
aXF1ZUlkZW50aWZpZXIgPSBub3dQbGF5aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllcjsKIAotICAg
IG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSBjdXJyZW50U2Vz
c2lvbi0+dW5pcXVlSWRlbnRpZmllcigpOwotICAgIGF1dG8gY2ZJZGVudGlmaWVyID0gYWRvcHRD
RihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJMb25nTG9uZ1R5
cGUsICZtX2xhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5n
SW5mb1VuaXF1ZUlkZW50aWZpZXIsIGNmSWRlbnRpZmllci5nZXQoKSk7Ci0KLSAgICBkb3VibGUg
Y3VycmVudFRpbWUgPSBjdXJyZW50U2Vzc2lvbi0+Y3VycmVudFRpbWUoKTsKLSAgICBpZiAoc3Rk
Ojppc2Zpbml0ZShjdXJyZW50VGltZSkgJiYgY3VycmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6Omlu
dmFsaWRUaW1lKCkgJiYgY3VycmVudFNlc3Npb24tPnN1cHBvcnRzU2Vla2luZygpKSB7Ci0gICAg
ICAgIGF1dG8gY2ZDdXJyZW50VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmN1cnJlbnRUaW1lKSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CisgICAgZG91YmxlIGN1cnJl
bnRUaW1lID0gbm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lOworICAgIGlmIChzdGQ6OmlzZmlu
aXRlKGN1cnJlbnRUaW1lKSAmJiBjdXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRp
bWUoKSAmJiBub3dQbGF5aW5nSW5mby0+c3VwcG9ydHNTZWVraW5nKQogICAgICAgICBtX2xhc3RV
cGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lID0gY3VycmVudFRpbWU7Ci0gICAgfQotCi0gICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUgPSBcIiIsIHRpdGxlLCAiXCIsIHJhdGUg
PSAiLCByYXRlLCAiLCBkdXJhdGlvbiA9ICIsIGR1cmF0aW9uLCAiLCBub3cgPSAiLCBjdXJyZW50
VGltZSk7CiAKLSAgICBTdHJpbmcgcGFyZW50QXBwbGljYXRpb24gPSBjdXJyZW50U2Vzc2lvbi0+
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci0gICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1v
dGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIXBhcmVudEFwcGxpY2F0
aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9u
KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBwYXJlbnRBcHBsaWNhdGlvbi5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKLQotICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IGN1cnJlbnRTZXNz
aW9uLT5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCk7Ci0gICAgTVJQbGF5YmFj
a1N0YXRlIHBsYXliYWNrU3RhdGUgPSAoY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZv
cm1NZWRpYVNlc3Npb246OlBsYXlpbmcpID8ga01SUGxheWJhY2tTdGF0ZVBsYXlpbmcgOiBrTVJQ
bGF5YmFja1N0YXRlUGF1c2VkOwotICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGlj
YXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigp
LCBwbGF5YmFja1N0YXRlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1v
dGVFcnJvciBlcnJvcikgewotI2lmIExPR19ESVNBQkxFRAotICAgICAgICBVTlVTRURfUEFSQU0o
ZXJyb3IpOwotI2Vsc2UKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4ocGxh
eWluZykgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAg
TVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKGluZm8uZ2V0KCkpOwotCi0gICAgaWYgKGNh
bkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkp
IHsKLSAgICAgICAgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gY3Vy
cmVudFNlc3Npb24tPmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSA/IE1STm93
UGxheWluZ0NsaWVudFZpc2liaWxpdHlBbHdheXNWaXNpYmxlIDogTVJOb3dQbGF5aW5nQ2xpZW50
VmlzaWJpbGl0eU5ldmVyVmlzaWJsZTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlp
bmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCB2aXNpYmlsaXR5KTsK
LSAgICB9CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2VuZGlmIC8vIFVTRShNRURJ
QVJFTU9URSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2YTJjODcwZjdhYWExYjBkYjAwMGVmODg4Mjdj
OWEwZjYxZGNmMjViLi5iOGEyZDMwNjIwOGEzZTk0NGMyNzA3YmQwMjAzMDdjNjZmYmRiYjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oPgogCkBAIC0yMTMsNiArMjE0LDE4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
CiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCisjaWYgUExBVEZPUk0oQ09D
T0EpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8o
KQoreworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygp
OworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZv
KGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBu
b3dQbGF5aW5nSW5mbykKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1Bs
YXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyk7Cit9
CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAppbmRleCA3NDcxNWM4MGM1NDViZWFmZWMzZjZiN2UwOTg0ZWNhNTBjYmEyNjY5Li5lNGM5MTI1
NTlmZjk2MDQ1ZTAwNGIwZTBlOWQzMmJmMzBhNDBjNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEwMyw2ICsx
MDMsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCk7CisgICAgdm9pZCBzZXROb3dQbGF5aW5n
SW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQ
bGF5aW5nSW5mbyYpOworI2VuZGlmCiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAog
ICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDkzMmMwMTIyZGUwODFlZGU5YmI5ZWZiNTZmOWJjNTI1OWJhNGQ3
MDQuLjhkOTFjZTJiY2RiZGFlY2ZjMjU3MTAzY2RhY2U2OTY1NGNjNDhkMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4gR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVh
dGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2Vu
ZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5m
bygpOworICAgIHZvaWQgU2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKTsK
KyNlbmRpZgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAK
aW5kZXggMmFhZTVlNTQ0NTEwODQ3OWJkM2NkMzM5YWZhNmJmNmQyZGRhYmNmNi4uYzg2NmJhMDA5
N2Y0MzMwYjg3YWJmMTM2YzA1ZWZhMTI4N2IyYTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCkBAIC0zMSw2
ICszMSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3Rv
cnkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTm93UGxheWluZ0luZm8uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTU1LDQgKzU3LDMwIEBAIHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJDRE1GYWN0
b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYgZmFjdG9yCiB9CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpjbGVhck5vd1BsYXlp
bmdJbmZvKCkKK3sKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgaWYgKG1fdXNlR1BVUHJv
Y2VzcykgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgICAgIGNv
bm5lY3Rpb24uc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xlYXJO
b3dQbGF5aW5nSW5mbyB7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKCk7Cit9CisK
K3ZvaWQgV2ViTWVkaWFTdHJhdGVneTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mIG5vd1BsYXlp
bmdJbmZvKQoreworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9j
ZXNzKSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29u
bmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXROb3dQ
bGF5aW5nSW5mbyB7IHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyB9
LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24s
IG5vd1BsYXlpbmdJbmZvKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0
ZWd5LmgKaW5kZXggNGZhYjBlOTQ0ZmMxNGU2ODQzNzllMzAwODE2M2JlMTYyZGQ4OWI0ZC4uNmRl
ZmUzYjE1NDljNDRkNDVmYTQxZTU5NTI2M2Y0YjdlMDcxYzIzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKQEAgLTQ1
LDYgKzQ1LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2
b2lkIHJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3RvcjxXZWJDb3JlOjpDRE1GYWN0b3J5Kj4mKSBv
dmVycmlkZTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgY2xlYXJOb3dQ
bGF5aW5nSW5mbygpIGZpbmFsOworICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mKSBm
aW5hbDsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIGJvb2wgbV91c2VH
UFVQcm9jZXNzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBi
OTA5ZWNjNDM5YmNkM2M2ZjZkYTgwNDFjNmVmMjkzZmYzNDY2OTZmLi43MzE5ZTY4ZDU3ZGQ4YmVl
NTMzMTMzMTRjNjI4MGRlZWY3YzI5MmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01l
ZGlhU3RyYXRlZ3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRJdGVtSW5mby5oPgpAQCAtODAsNiArODEsMTUg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lkIGNs
ZWFyTm93UGxheWluZ0luZm8oKSBmaW5hbAorICAgIHsKKyAgICAgICAgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKCk7CisgICAgfQorCisgICAgdm9pZCBzZXRO
b3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQ
bGF5aW5nSW5mbyYgbm93UGxheWluZ0luZm8pIGZpbmFsCisgICAgeworICAgICAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0FwcGxp
Y2F0aW9uLCBub3dQbGF5aW5nSW5mbyk7CisgICAgfQogfTsKIAogTWVkaWFTdHJhdGVneSogV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392402</attachid>
            <date>2020-03-04 05:41:24 -0800</date>
            <delta_ts>2020-03-04 06:16:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208568-20200304144122.patch</filename>
            <type>text/plain</type>
            <size>43737</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNhODhkNjVmYjEzYTYx
Y2RmNjNmNjY2OTU0MjU1MDgzN2YzOWFiOS4uZTIzYzI1YmNiNTFjOTkzYzg1NDg2ZGFiZGEyNzk5
ZDRhYjNlODcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgTm93UGxheWluZyBnZXR0ZXJz
IHNpbmNlIG9ubHkgSFRNTE1lZGlhRWxlbWVudCBpcyBlbGlnaWJsZS4KKyAgICAgICAgTGV0IE1l
ZGlhRWxlbWVudFNlc3Npb24gZ2VuZXJhdGVzIGl0cyBvd24gTm93UGxheWluZ0luZm8gd2hlbiBy
ZXF1ZXN0ZWQgYnkgdGhlIHNlc3Npb24gbWFuYWdlci4KKyAgICAgICAgVXNlIHBsYXRmb3JtIHN0
cmF0ZWdpZXMgdG8gYWJzdHJhY3Qgb3V0IGhvdyB0byBleGVjdXRlIE5vd1BsYXlpbmcgb3JkZXJz
LgorCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6
YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8gY29uc3QpOgor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L01lZGlhU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246Om5vd1BsYXlpbmdJbmZvIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbik6
CisgICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
KToKKwogMjAyMC0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JGcm9udGVuZEhvc3RgIHN1cHBv
cnQgZm9yIG1vdmluZyB0aGUgaW5zcGVjdGVkIHdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDY4ZWQ3YjNk
ZWEwNGFkZmUyNDU4MjkzMDhjMjQ4ZmFkZDhlMTMyLi5mN2I4ZDZkYjNmOTZhZmEwN2FkMzI2YzY0
ZDA5ZjNhNGE4Mzk4NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAzLTA0ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxh
eWluZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9j
ZXNzIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEV4cG9ydCBOb3dQbGF5aW5nIG9yZGVycyB0byBHUFUgcHJvY2VzcyB0aHJvdWdoIElQ
QyBpZiBHUFVQcm9jZXNzIGlzIHR1cm5lZCBvbi4KKyAgICAgICAgT3RoZXJ3aXNlIHVzZSB0aGUg
cmVndWxhciBpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICBNYWtlIHN1cmUgdG8g
c3luYyB0aGUgaGFzQXVkaW8gc3RhdGUgc28gdGhhdCBpdCBnZXRzIHNldCBwcm9wZXJseSBpbiBX
ZWJQcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xl
YXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6dXBkYXRlQ2FjaGVkU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmF0
ZWd5OjpjbGVhck5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJh
dGVneTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1dlYk1lZGlhU3RyYXRlZ3kuaDoKKwogMjAyMC0wMy0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
ciBzaG91bGQgbm90IGNyZWF0ZSBhIGNvbm5lY3Rpb24gdG8gR1BVIFByb2Nlc3MgaWYgcGFnZSBk
b2VzIG5vdCB3YW50IHJlbW90ZSByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCAxNjdmZmM3YmI1MGI5YmEzZDI1NWJmMDk3NjhiMzRhOTZkODc5NDMxLi5kODFiNjA0NmE3
Zjc4YjgwZGI3N2I1MmQwNTM1OWJjOWEyNWY5MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEV4cG9ydCBOb3dQbGF5aW5nIGNvbW1hbmRzIHRvIEdQVVBy
b2Nlc3Mgd2hlbiBtZWRpYSBwbGF5aW5nIGluIEdQVVByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGluLXByb2Nlc3Mg
bm93IHBsYXlpbmcgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5kb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApp
bmRleCBkNDcwMGE2OTUwNWIxNjJhYmVhYzMzYWM5Mjg4MmIxZGU3MDMxZTQyLi40YTJlMTdiMDA3
MWNmYzdmNzdlZjcyNmZmMmNlNWVkN2ZiZTNkYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0zNzMsMTYgKzM3Myw2IEBAIERv
Y3VtZW50SWRlbnRpZmllciBBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIo
KSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5pZGVudGlmaWVyKCkgOiBE
b2N1bWVudElkZW50aWZpZXIgeyB9OwogfQogCi1TdHJpbmcgQXVkaW9Db250ZXh0Ojpzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdAotewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9j
dW1lbnQtPmZyYW1lKCkgOiBudWxscHRyKSB7Ci0gICAgICAgIGlmIChOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnRleHQgPSBmcmFtZS0+bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQo
KSkKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3JraW5nQ29udGV4dC0+c291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyKCk7Ci0gICAgfQotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQotCiBi
b29sIEF1ZGlvQ29udGV4dDo6aXNTdXNwZW5kZWQoKSBjb25zdAogewogICAgIHJldHVybiAhZG9j
dW1lbnQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwg
ZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDA2OGVhNmRjNGFkMDBl
NDg1YjQyODNjMjE2NTFjY2E1Njc3NjUxZGUuLjE2MzJhODgzZmRmNzVmYzc1MGNmN2YxMGM4MDZh
MjUyNWRhN2ZiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaApAQCAtMzU1LDcgKzM1NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRB
cmd1bWVudCopIG92ZXJyaWRlIHsgfQogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dy
b3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlv
blR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIHNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUHJv
ZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNTdXNw
ZW5kZWQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRl
OWJmNTM5Njg1ODkuLmZhODllYzVmYTZmMzdiZjkyNWVkMzJjMTg2NDljM2FhOTMzMWU1NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwODUsNiArMTA4NSw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2
RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBC
NzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNkZEMjVGMjQwRkE0RTUwMDY2NjFEOCAvKiBO
b3dQbGF5aW5nSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RkQyNUQyNDBFRTFBRTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE3MjUzQUIxMzU0
QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyog
TWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFE
IC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwICovOyB9OwogCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyog
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQuaCAqLzsgfTsKQEAgLTczNjcsNiArNzM2OCw3IEBACiAJCTQxNkQ3NTlGMjBDNjQ0
MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8q
IFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlclJlcG9ydGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkZEMjVEMjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOb3dQbGF5aW5nSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBN
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg3NzMsNiArMjg3NzUsNyBAQAogCQkJCUZE
MzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmggKi8sCiAJCQkJRkRCMTcwMDMx
NEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgKi8sCiAJCQkJRkRC
MTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oICovLAorCQkJ
CTQxNkZEMjVEMjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oICovLAogCQkJCUZE
MzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuY3BwICovLAogCQkJCUZEMzE2MDZEMTJC
MDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCAqLywKIAkJCQlDREU2NjdBMTFFNEJCQTREMDBFODE1
NEEgLyogUGxhdGZvcm1BdWRpb0RhdGEuaCAqLywKQEAgLTMxNjY0LDYgKzMxNjY3LDcgQEAKIAkJ
CQk3Q0MyRERGQjFFQzk0MTVBMDAyN0I3NzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzFGRTZERkExNTAwNEMyQTAwMDRFQkM0IC8qIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOThFQjFGOTUxMzEzRkUw
NTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZGRDI1
RjI0MEZBNEU1MDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTIxOUIzQjBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlvbnMuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkNTExNGNhMjJm
MDNhYzIxZmY3NTJhMWZkNTY2MTA2MzM4NDA4MGQzLi4zMmE5YzViNTRmYmE2ZjRjNmZiMWY4Mjgy
MmIwOTcwNjEwZGUxZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApA
QCAtNTkyLDYgKzU5MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNp
Z25BY3RpdmUoKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKKyAg
ICB1aW50NjRfdCBtZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU3Ry
aW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Q7CisgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcigpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEluaXRpYWxpemF0aW9uKCk7CkBAIC03MzUsNyArNzM5
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJz
Q2hhbmdlZCgpIG92ZXJyaWRlOwogCi0gICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcigpOyB9CiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFQbGF5ZXJQcmVmZXJy
ZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC04ODIsMTAgKzg4
NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlc3VtZUF1dG9wbGF5aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYXlSZXN1bWVQ
bGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7Ci0gICAgdWludDY0X3QgbWVkaWFT
ZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwotICAgIFN0cmluZyBtZWRpYVNl
c3Npb25UaXRsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJh
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGR1cmF0aW9uKCk7IH0KLSAgICBkb3VibGUg
bWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50
VGltZSgpOyB9CiAgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBv
dmVycmlkZTsKICAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJp
Y3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXgg
OGIyM2Y0YTg3NTlkMWQyZGFiOGQzOGY1NDMyMjM4NTg4ZTQwN2E5Yy4uNDk4YjVhNzU1YWY3NDZl
NGU2YzE4YTcxMDI2Y2ZhYzI2OGE4MzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTFZpZGVv
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiTm93UGxheWluZ0luZm8uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXVpcmtzLmgi
CkBAIC05NzcsMTYgKzk3OCwyMSBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnVwZGF0ZUlz
TWFpbkNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lzTWFpbkNvbnRlbnQ7CiB9CiAKLWJv
b2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0
eSgpIGNvbnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BsYXliYWNrQ29udHJv
bHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3QKIHsKICAgICBhdXRvIHBhZ2UgPSBtX2VsZW1l
bnQuZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgIXBhZ2UtPmlzVmlzaWJs
ZUFuZEFjdGl2ZSgpOworICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1BsYXliYWNrQ29u
dHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCk7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdAorT3B0
aW9uYWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5vd1BsYXlpbmdJbmZv
KCkgY29uc3QKIHsKLSAgICBhdXRvIHBhZ2UgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7
Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9w
bGF5aW5nQXVkaW8oKTsKKyAgICBhdXRvKiBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50KCkucGFn
ZSgpOworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA9IHBhZ2Ug
JiYgIXBhZ2UtPmlzVmlzaWJsZUFuZEFjdGl2ZSgpOworICAgIGJvb2wgaXNQbGF5aW5nID0gc3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZzsKKyAgICBkb3VibGUgZHVyYXRp
b24gPSBtX2VsZW1lbnQuc3VwcG9ydHNTZWVraW5nKCkgPyBtX2VsZW1lbnQuZHVyYXRpb24oKSA6
IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IHN0
ZDo6aXNmaW5pdGUobV9lbGVtZW50LmN1cnJlbnRUaW1lKCkpICYmIG1fZWxlbWVudC5zdXBwb3J0
c1NlZWtpbmcoKSA/IG1fZWxlbWVudC5jdXJyZW50VGltZSgpIDogTWVkaWFQbGF5ZXI6OmludmFs
aWRUaW1lKCk7CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFT
ZXNzaW9uVGl0bGUoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBk
dXJhdGlvbiwgY3VycmVudFRpbWUsIG1fZWxlbWVudC5zdXBwb3J0c1NlZWtpbmcoKSwgbV9lbGVt
ZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQ
bGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CiB9CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhjb25zdCBNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uIGVudW1lcmF0aW9uVmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCmluZGV4IDFmMmQz
NGY5NTNmMzUyZTA5NTIxYjgzZDE4ZTJiZDZjMWMyOTY2MjMuLjFjZDJjOGEwZGM3YWVlZGQ3MWU3
ODY2ODdjODNlZmQwN2RiOTdkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oCkBAIC0xNDksNyArMTQ5LDYgQEAgcHVibGljOgogICAgIE1vbm90b25pY1RpbWUg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoKSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dz
UGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdDsKLSAgICBib29sIGFs
bG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHN0YXRpYyBib29sIGlzTWVkaWFFbGVtZW50U2Vzc2lvbk1lZGlhVHlwZShNZWRpYVR5cGUgdHlw
ZSkKICAgICB7CkBAIC0xNTgsNiArMTU3LDggQEAgcHVibGljOgogICAgICAgICAgICAgfHwgdHlw
ZSA9PSBNZWRpYVR5cGU6OlZpZGVvQXVkaW87CiAgICAgfQogCisgICAgT3B0aW9uYWw8Tm93UGxh
eWluZ0luZm8+IG5vd1BsYXlpbmdJbmZvKCkgY29uc3QgZmluYWw7CisKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhRWxlbWVudFNlc3Npb24iOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgKaW5kZXggNjBhNTg0N2M4Y2VjMTBiNzliNzQ5
YTZmYWY4NTAzZDE2YTE5OWI5NS4uODk3NDViYjgzYTIzMzZkNDIxZTE2NzBlODczMGJmYjdhYzc0
NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApAQCAtMzIsNiAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uOwogY2xh
c3MgQXVkaW9JT0NhbGxiYWNrOwogY2xhc3MgQ0RNRmFjdG9yeTsKK3N0cnVjdCBOb3dQbGF5aW5n
SW5mbzsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFTdHJhdGVneSB7CiBwdWJsaWM6CkBA
IC00Miw2ICs0MywxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYp
ID0gMDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBjbGVh
ck5vd1BsYXlpbmdJbmZvKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYp
ID0gMDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJhdGVneSgp
ID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGY3NTgyZTIzNjFkNWY1ZWM0ZTcyNTJhZDM2OTdmMmUx
NDEyODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgTm93UGxheWluZ0luZm8geworICAgIFN0cmluZyB0aXRsZTsKKyAgICBT
dHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOworICAgIGRvdWJsZSBkdXJhdGlvbiB7
IDAgfTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgeyAwIH07CisgICAgYm9vbCBzdXBwb3J0c1Nl
ZWtpbmcgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIgeyAwIH07Cisg
ICAgYm9vbCBpc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSB7IGZhbHNlIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTm93UGxheWluZ0luZm86OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwg
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8
IHN1cHBvcnRzU2Vla2luZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxv
d3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgdGl0bGU7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0aXRsZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgc291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGRvdWJs
ZSBkdXJhdGlvbjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGR1cmF0aW9uKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGRvdWJsZSBjdXJyZW50VGltZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGN1cnJlbnRUaW1lKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGJvb2wgc3Vw
cG9ydHNTZWVraW5nOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3VwcG9ydHNTZWVraW5nKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXI7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1bmlxdWVJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIGJvb2wgaXNQbGF5aW5nOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNQ
bGF5aW5nKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGJvb2wgYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93c05vd1Bs
YXlpbmdDb250cm9sc1Zpc2liaWxpdHkpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0
dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoc291cmNlQXBwbGlj
YXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcs
IHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlz
aWJpbGl0eSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXgg
MDc4MjFlN2I4YWQ3NWViOTYxYThlMzcxZjcyY2Y0NzY2NzkxMjY3ZS4uMTg1M2ExMjFjYWIyMjc2
MGYxMWYyMjkzMGRmODkyNGM3ODg1NzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yNzUsMjggKzI3Niw2IEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
UGxhdGZvcm1NZWRpYVNlc3Npb246OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAogICAgIHJldHVy
biBtX2NsaWVudC5wcmVzZW50YXRpb25UeXBlKCk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi11
aW50NjRfdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKTsKLX0K
LQotU3RyaW5nIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6ZHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRp
YVNlc3Npb25EdXJhdGlvbigpOwotfQotCi1kb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1
cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3Vy
cmVudFRpbWUoKTsKLX0KLSNlbmRpZgotICAgIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
Y2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKQEAgLTMxNCwxMSArMjkz
LDYgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jbGllbnQuc3VwcG9ydHNTZWVraW5nKCk7CiB9CiAKLVN0cmluZyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9jbGllbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci19Ci0K
IGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9jbGllbnQuaXNTdXNwZW5kZWQoKTsKQEAgLTM2NywyOCArMzQxLDYgQEAgdm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgbV9tYW5h
Z2VyLT5zZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwogfQogCi0jaWYgRU5BQkxFKFZJ
REVPKQotdWludDY0X3QgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblVu
aXF1ZUlkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgUGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dDo6bWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXll
cjo6aW52YWxpZFRpbWUoKTsKLX0KLQotZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
OjptZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpOwotfQotI2VuZGlmCi0KIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Np
b246OmNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoKQogewogICAgIG1fbWFuYWdlci0+Y2xp
ZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgqdGhpcyk7CkBAIC00MDksNiArMzYxLDExIEBAIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgUGxhdGZvcm1NZWRpYVNlc3Npb246Om1hbmFnZXIo
KQogICAgIHJldHVybiAqbV9tYW5hZ2VyOwogfQogCitPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4g
UGxhdGZvcm1NZWRpYVNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1
cm4geyB9OworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBh
OGQxOGJlNGVhYmFlOWVjODBmZjVkZWY0ZmI3YmNhOWRhNjU3MDdhLi5lMmIzOGEwMWQwYWE1YTY2
ZDM3NzkxMWVkNDAxZTUyODkwNzg5NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xh
c3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
OwogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogZW51bSBjbGFzcyBEZWxheUNh
bGxpbmdVcGRhdGVOb3dQbGF5aW5nIHsgTm8sIFllcyB9Oworc3RydWN0IE5vd1BsYXlpbmdJbmZv
OwogCiBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbgogICAgIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPgpAQCAtMTEzLDEzICsxMTQsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN1c3BlbmRCdWZmZXJpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lQnVmZmVyaW5nKCkgeyB9CiAgICAgCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIHVpbnQ2
NF90IHVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsK
LSAgICBkb3VibGUgZHVyYXRpb24oKSBjb25zdDsKLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBj
b25zdDsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgIGRvdWJsZSBhc0Rv
dWJsZTsKICAgICB9IFJlbW90ZUNvbW1hbmRBcmd1bWVudDsKQEAgLTE3NCw4ICsxNjgsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKSB7IH0K
ICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KICAgICBib29sIGhhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGxheWVkU2luY2VMYXN0SW50ZXJydXB0aW9uOyB9CiAg
ICAgdm9pZCBjbGVhckhhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlvbigpIHsgbV9oYXNQbGF5
ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24gPSBmYWxzZTsgfQogCkBAIC0xOTUsNiArMTg3LDggQEAg
cHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmdBdWRpbygpIGNvbnN0ID0g
MDsKICAgICB9OwogCisgICAgdmlydHVhbCBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbm93UGxh
eWluZ0luZm8oKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYsIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
Jik7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50OyB9CkBAIC0yMzUsMTMgKzIyOSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgPSAwOwogCi0jaWYgRU5BQkxFKFZJREVPKQotICAg
IHZpcnR1YWwgdWludDY0X3QgbWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGRvdWJs
ZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0OwotI2VuZGlmCi0gICAgCiAgICAgdmly
dHVhbCBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1NlZWtpbmcoKSBjb25zdCA9IDA7CkBAIC0yNjEsNyArMjQ4LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdPblNlY29uZFNjcmVlbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1l
bnRJZGVudGlmaWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNNZWRp
YVN0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLmgKaW5kZXggYWIwOWI3OTg1ZDc3ZmM2YTc2MGMwNGM3NzllYTc3MmVlYTU3NjRk
MC4uZDcyNTdjMDY5ZmIzZTQ2ZTZhMjc5ZjEzNWFlNjZmOTMyNGFjZWEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLmgKQEAgLTM1LDYgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdHJ1Y3QgTm93UGxheWluZ0luZm87CisKIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYQogICAgIDogcHVibGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcgogICAgICwgcHJp
dmF0ZSBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQKQEAgLTU1LDYgKzU3LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb247IH0KICAgICB2
b2lkIHByZXBhcmVUb1NlbmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgpIGZpbmFsOwogCisg
ICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAg
IHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNO
b3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJik7CisKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNjaGVkdWxlVXBkYXRlTm93UGxheWluZ0luZm8oKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0K
aW5kZXggZWIxOWE5YmY5YzAzMzhhYWFiM2U3OGZiMzY4YjA3NzI2NWUxZDFkOC4uNWQyNGQ1Y2Ri
M2FkNzExMDIwNmYzYzkxNzAzOWZhOWJmZWMwY2NjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQpAQCAtMzMsNyArMzMsMTAgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIk5vd1BsYXlpbmdJbmZvLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKICNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogCkBAIC0yMDQsOCArMjA3LDczIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjpzZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgc2NoZWR1bGVVcGRh
dGVOb3dQbGF5aW5nSW5mbygpOwogfQogCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
Y2xlYXJOb3dQbGF5aW5nSW5mbygpCit7CisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpCisgICAgICAgIE1STWVkaWFSZW1v
dGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eShNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwg
TVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlzaWJsZSk7CisKKyAgICBNUk1lZGlh
UmVtb3RlU2V0Q2FuQmVOb3dQbGF5aW5nQXBwbGljYXRpb24oZmFsc2UpOworICAgIE1STWVkaWFS
ZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhudWxscHRyKTsKKyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93
UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0
TG9jYWxPcmlnaW4oKSwga01SUGxheWJhY2tTdGF0ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7CisjaWYgTE9HX0RJU0FCTEVE
CisgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIk1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBw
bGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHN0b3BwZWQpIGZhaWxlZCB3aXRoIGVycm9y
ICIsIGVycm9yKTsKKyNlbmRpZgorICAgIH0pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
biwgY29uc3QgTm93UGxheWluZ0luZm8mIG5vd1BsYXlpbmdJbmZvKQoreworICAgIGlmIChzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbikKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNldENhbkJlTm93
UGxheWluZ0FwcGxpY2F0aW9uKHRydWUpOworCisgICAgYXV0byBpbmZvID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDQsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
KworICAgIGlmICghbm93UGxheWluZ0luZm8udGl0bGUuaXNFbXB0eSgpKQorICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
VGl0bGUsIG5vd1BsYXlpbmdJbmZvLnRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUobm93UGxheWluZ0luZm8uZHVyYXRpb24pICYmIG5vd1BsYXlp
bmdJbmZvLmR1cmF0aW9uICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CisgICAgICAg
IGF1dG8gY2ZEdXJhdGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmR1cmF0aW9uKSk7Cisg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9EdXJhdGlvbiwgY2ZEdXJhdGlvbi5nZXQoKSk7CisgICAgfQorCisgICAgZG91
YmxlIHJhdGUgPSAgbm93UGxheWluZ0luZm8uaXNQbGF5aW5nID8gMSA6IDA7CisgICAgYXV0byBj
ZlJhdGUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckRvdWJsZVR5cGUsICZyYXRlKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgY2ZSYXRlLmdl
dCgpKTsKKworICAgIGF1dG8gbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZp
ZXIgPSBub3dQbGF5aW5nSW5mby51bmlxdWVJZGVudGlmaWVyOworICAgIGF1dG8gY2ZJZGVudGlm
aWVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJMb25nTG9uZ1R5cGUsICZsYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmll
cikpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyLCBjZklkZW50aWZpZXIuZ2V0KCkpOworCisg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUobm93UGxheWluZ0luZm8uY3VycmVudFRpbWUpICYmIG5vd1Bs
YXlpbmdJbmZvLmN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpICYmIG5v
d1BsYXlpbmdJbmZvLnN1cHBvcnRzU2Vla2luZykgeworICAgICAgICBhdXRvIGNmQ3VycmVudFRp
bWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkpOworICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
RWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChjYW5M
b2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbigpICYmICFu
b3dQbGF5aW5nSW5mby5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIuaXNFbXB0eSgpKQorICAg
ICAgICBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24oTVJNZWRpYVJlbW90ZUdldExv
Y2FsT3JpZ2luKCksIG5vd1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIE1SUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0
YXRlID0gKG5vd1BsYXlpbmdJbmZvLmlzUGxheWluZykgPyBrTVJQbGF5YmFja1N0YXRlUGxheWlu
ZyA6IGtNUlBsYXliYWNrU3RhdGVQYXVzZWQ7CisgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlp
bmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExvY2Fs
T3JpZ2luKCksIHBsYXliYWNrU3RhdGUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJN
ZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7CisjaWYgTE9HX0RJU0FCTEVECisgICAgICAgIFVOVVNF
RF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIk1STWVkaWFSZW1v
dGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHBsYXlpbmcp
IGZhaWxlZCB3aXRoIGVycm9yICIsIGVycm9yKTsKKyNlbmRpZgorICAgIH0pOworICAgIE1STWVk
aWFSZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhpbmZvLmdldCgpKTsKKworICAgIGlmIChjYW5Mb2Fk
X01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKSB7Cisg
ICAgICAgIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IG5vd1BsYXlp
bmdJbmZvLmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPyBNUk5vd1BsYXlpbmdD
bGllbnRWaXNpYmlsaXR5QWx3YXlzVmlzaWJsZSA6IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxp
dHlOZXZlclZpc2libGU7CisgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJp
bGl0eShNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgdmlzaWJpbGl0eSk7CisgICAgfQor
fQorCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpub3dQ
bGF5aW5nRWxpZ2libGVTZXNzaW9uKCkKIHsKKyAgICAvLyBGSVhNRTogRml4IHRoaXMgbGF5ZXJp
bmcgdmlvbGF0aW9uLgogICAgIGlmIChhdXRvIGVsZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50Ojpi
ZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxl
bWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nKSkKICAgICAg
ICAgcmV0dXJuICZlbGVtZW50LT5tZWRpYVNlc3Npb24oKTsKIApAQCAtMjIwLDk0ICsyODgsNDgg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkK
IAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgY29uc3QgUGxhdGZvcm1N
ZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uID0gdGhpcy0+bm93UGxheWluZ0VsaWdpYmxlU2Vz
c2lvbigpOwotCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiY3VycmVudFNlc3Npb246
ICIsIGN1cnJlbnRTZXNzaW9uID8gY3VycmVudFNlc3Npb24tPmxvZ0lkZW50aWZpZXIoKSA6IG51
bGxwdHIpOwotCi0gICAgaWYgKCFjdXJyZW50U2Vzc2lvbikgewotICAgICAgICBpZiAoY2FuTG9h
ZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoKSkKLSAg
ICAgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eShNUk1lZGlhUmVt
b3RlR2V0TG9jYWxPcmlnaW4oKSwgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlz
aWJsZSk7CisgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG5vd1BsYXlpbmdJbmZvOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpKQorICAgICAg
ICBub3dQbGF5aW5nSW5mbyA9IHNlc3Npb24tPm5vd1BsYXlpbmdJbmZvKCk7CiAKKyAgICBpZiAo
IW5vd1BsYXlpbmdJbmZvKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImNs
ZWFyaW5nIG5vdyBwbGF5aW5nIGluZm8iKTsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
Pm1lZGlhU3RyYXRlZ3koKS5jbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAKLSAgICAgICAgTVJNZWRp
YVJlbW90ZVNldENhbkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKGZhbHNlKTsKICAgICAgICAgbV9y
ZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24gPSBmYWxzZTsKLQotICAgICAgICBNUk1l
ZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luZm8obnVsbHB0cik7CiAgICAgICAgIG1fbm93UGxheWlu
Z0FjdGl2ZSA9IGZhbHNlOwogICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlID0g
ZW1wdHlTdHJpbmcoKTsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdEdXJhdGlvbiA9
IE5BTjsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2VkVGltZSA9IE5BTjsK
ICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciA9IDA7
Ci0gICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0
YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBrTVJQbGF5YmFja1N0
YXRlU3RvcHBlZCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJy
b3IgZXJyb3IpIHsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShl
cnJvcik7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgIk1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGlj
YXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHN0b3BwZWQpIGZhaWxlZCB3aXRoIGVycm9yICIs
IGVycm9yKTsKLSNlbmRpZgotICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUgPSBcIiIsIG5vd1BsYXlpbmdJ
bmZvLT50aXRsZSwgIlwiLCBpc1BsYXlpbmcgPSAiLCBub3dQbGF5aW5nSW5mby0+aXNQbGF5aW5n
LCAiLCBkdXJhdGlvbiA9ICIsIG5vd1BsYXlpbmdJbmZvLT5kdXJhdGlvbiwgIiwgbm93ID0gIiwg
bm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lLCAiLCBpZCA9ICIsIG5vd1BsYXlpbmdJbmZvLT51
bmlxdWVJZGVudGlmaWVyLCAiLCByZWdpc3RlcmVkID0gIiwgbV9yZWdpc3RlcmVkQXNOb3dQbGF5
aW5nQXBwbGljYXRpb24pOworCisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRl
Z3koKS5zZXROb3dQbGF5aW5nSW5mbyghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRp
b24sICpub3dQbGF5aW5nSW5mbyk7CisKICAgICBpZiAoIW1fcmVnaXN0ZXJlZEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uKSB7CiAgICAgICAgIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uID0gdHJ1ZTsKICAgICAgICAgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVj
ZXNzYXJ5KCk7Ci0gICAgICAgIE1STWVkaWFSZW1vdGVTZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNh
dGlvbih0cnVlKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdGl0bGUgPSBjdXJyZW50U2Vzc2lvbi0+
dGl0bGUoKTsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBjdXJyZW50U2Vzc2lvbi0+c3VwcG9ydHNT
ZWVraW5nKCkgPyBjdXJyZW50U2Vzc2lvbi0+ZHVyYXRpb24oKSA6IE1lZGlhUGxheWVyOjppbnZh
bGlkVGltZSgpOwotICAgIGRvdWJsZSByYXRlID0gY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcgPyAxIDogMDsKLSAgICBhdXRvIGluZm8gPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworICAgIGlmICghbm93UGxheWluZ0luZm8tPnRpdGxlLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IG5vd1BsYXlpbmdJbmZvLT50aXRs
ZTsKIAotICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwgdGl0
bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0gICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5
aW5nVGl0bGUgPSB0aXRsZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlv
bikgJiYgZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKLSAgICAgICAg
YXV0byBjZkR1cmF0aW9uID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmZHVyYXRpb24pKTsKLSAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0
aW9uLCBjZkR1cmF0aW9uLmdldCgpKTsKKyAgICBkb3VibGUgZHVyYXRpb24gPSBub3dQbGF5aW5n
SW5mby0+ZHVyYXRpb247CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pICYmIGR1cmF0
aW9uICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKQogICAgICAgICBtX2xhc3RVcGRhdGVk
Tm93UGxheWluZ0R1cmF0aW9uID0gZHVyYXRpb247Ci0gICAgfQogCi0gICAgYXV0byBjZlJhdGUg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRv
dWJsZVR5cGUsICZyYXRlKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgY2ZSYXRlLmdldCgpKTsK
KyAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyID0gbm93UGxh
eWluZ0luZm8tPnVuaXF1ZUlkZW50aWZpZXI7CiAKLSAgICBtX2xhc3RVcGRhdGVkTm93UGxheWlu
Z0luZm9VbmlxdWVJZGVudGlmaWVyID0gY3VycmVudFNlc3Npb24tPnVuaXF1ZUlkZW50aWZpZXIo
KTsKLSAgICBhdXRvIGNmSWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyTG9uZ0xvbmdUeXBlLCAmbV9sYXN0VXBkYXRlZE5vd1Bs
YXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcikpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyLCBj
ZklkZW50aWZpZXIuZ2V0KCkpOwotCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gY3VycmVudFNl
c3Npb24tPmN1cnJlbnRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUp
ICYmIGN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpICYmIGN1cnJlbnRT
ZXNzaW9uLT5zdXBwb3J0c1NlZWtpbmcoKSkgewotICAgICAgICBhdXRvIGNmQ3VycmVudFRpbWUg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRv
dWJsZVR5cGUsICZjdXJyZW50VGltZSkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3Vy
cmVudFRpbWUuZ2V0KCkpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG5vd1BsYXlpbmdJbmZv
LT5jdXJyZW50VGltZTsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgJiYgY3Vy
cmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkgJiYgbm93UGxheWluZ0luZm8t
PnN1cHBvcnRzU2Vla2luZykKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2Vk
VGltZSA9IGN1cnJlbnRUaW1lOwotICAgIH0KLQotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgInRpdGxlID0gXCIiLCB0aXRsZSwgIlwiLCByYXRlID0gIiwgcmF0ZSwgIiwgZHVyYXRpb24g
PSAiLCBkdXJhdGlvbiwgIiwgbm93ID0gIiwgY3VycmVudFRpbWUpOwogCi0gICAgU3RyaW5nIHBh
cmVudEFwcGxpY2F0aW9uID0gY3VycmVudFNlc3Npb24tPnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpOwotICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXRQYXJl
bnRBcHBsaWNhdGlvbigpICYmICFwYXJlbnRBcHBsaWNhdGlvbi5pc0VtcHR5KCkpCi0gICAgICAg
IE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxP
cmlnaW4oKSwgcGFyZW50QXBwbGljYXRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0KLSAg
ICBtX25vd1BsYXlpbmdBY3RpdmUgPSBjdXJyZW50U2Vzc2lvbi0+YWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSgpOwotICAgIE1SUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlID0g
KGN1cnJlbnRTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5n
KSA/IGtNUlBsYXliYWNrU3RhdGVQbGF5aW5nIDoga01SUGxheWJhY2tTdGF0ZVBhdXNlZDsKLSAg
ICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9y
aWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgcGxheWJhY2tTdGF0ZSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJyb3IgZXJyb3IpIHsKLSNpZiBM
T0dfRElTQUJMRUQKLSAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbHNlCi0gICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIk1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBw
bGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHBsYXlpbmcpIGZhaWxlZCB3aXRoIGVycm9y
ICIsIGVycm9yKTsKLSNlbmRpZgotICAgIH0pOwotICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5
aW5nSW5mbyhpbmZvLmdldCgpKTsKKyAgICBtX25vd1BsYXlpbmdBY3RpdmUgPSBub3dQbGF5aW5n
SW5mby0+YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsKIAotICAgIGlmIChjYW5M
b2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKSB7
Ci0gICAgICAgIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IGN1cnJl
bnRTZXNzaW9uLT5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCkgPyBNUk5vd1Bs
YXlpbmdDbGllbnRWaXNpYmlsaXR5QWx3YXlzVmlzaWJsZSA6IE1STm93UGxheWluZ0NsaWVudFZp
c2liaWxpdHlOZXZlclZpc2libGU7Ci0gICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5n
VmlzaWJpbGl0eShNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgdmlzaWJpbGl0eSk7Ci0g
ICAgfQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICNlbmRpZiAvLyBVU0UoTUVESUFS
RU1PVEUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmEyYzg3MGY3YWFhMWIwZGIwMDBlZjg4ODI3Yzlh
MGY2MWRjZjI1Yi4uYjhhMmQzMDYyMDhhM2U5NDRjMjcwN2JkMDIwMzA3YzY2ZmJkYmI0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaD4KIApAQCAtMjEzLDYgKzIxNCwxOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQog
ICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09B
KQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkK
K3sKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsK
K30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXROb3dQbGF5aW5nSW5mbyhi
b29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYgbm93
UGxheWluZ0luZm8pCit7CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5
aW5nSW5mbyhzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgbm93UGxheWluZ0luZm8pOworfQor
I2VuZGlmCisKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggNzQ3MTVjODBjNTQ1YmVhZmVjM2Y2YjdlMDk4NGVjYTUwY2JhMjY2OS4uZTRjOTEyNTU5
ZmY5NjA0NWUwMDRiMGUwZTlkMzJiZjMwYTQwYzQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDMsNiArMTAz
LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0Jh
Y2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAgIHZvaWQgc2V0Tm93UGxheWluZ0lu
Zm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm93UGxh
eWluZ0luZm8mKTsKKyNlbmRpZgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAg
ICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA5MzJjMDEyMmRlMDgxZWRlOWJiOWVmYjU2ZjliYzUyNTliYTRkNzA0
Li44ZDkxY2UyYmNkYmRhZWNmYzI1NzEwM2NkYWNlNjk2NTRjYzQ4ZDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRl
UmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQo
V2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcikKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8o
KTsKKyAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5mbyk7Cisj
ZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAppbmRleCBjOWQyZWU0NDViZDVlNmE5NGFhNDhkNThiOWUwNDIxM2JjNWFmMmUwLi4yNjJhNGJk
ODllMjk3OWRkNDczN2Q4NWM0NTAzZjZkNmNiZjM0ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBA
IC02NzQsNiArNjc0LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNo
ZWRTdGF0ZSgpCiAgICAgbV9jYWNoZWRTdGF0ZS5yZWFkeVN0YXRlID0gbV9wbGF5ZXItPnJlYWR5
U3RhdGUoKTsKICAgICBtX2NhY2hlZFN0YXRlLnBhdXNlZCA9IG1fcGxheWVyLT5wYXVzZWQoKTsK
ICAgICBtX2NhY2hlZFN0YXRlLmxvYWRpbmdQcm9ncmVzc2VkID0gbV9wbGF5ZXItPmRpZExvYWRp
bmdQcm9ncmVzcygpOworICAgIG1fY2FjaGVkU3RhdGUuaGFzQXVkaW8gPSBtX3BsYXllci0+aGFz
QXVkaW8oKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkQ2hhbmdlZCkgewogICAgICAgICBtX2J1ZmZl
cmVkQ2hhbmdlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKaW5kZXggMmFhZTVlNTQ0NTEwODQ3OWJk
M2NkMzM5YWZhNmJmNmQyZGRhYmNmNi4uYzg2NmJhMDA5N2Y0MzMwYjg3YWJmMTM2YzA1ZWZhMTI4
N2IyYTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9X
ZWJNZWRpYVN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJh
Y2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z0luZm8uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU1LDQgKzU3LDMwIEBAIHZvaWQg
V2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNE
TUZhY3RvcnkqPiYgZmFjdG9yCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQordm9p
ZCBXZWJNZWRpYVN0cmF0ZWd5OjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKK3sKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgaWYgKG1fdXNlR1BVUHJvY2VzcykgeworICAgICAgICBhdXRvJiBj
b25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCk7CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChNZXNzYWdlczo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xlYXJOb3dQbGF5aW5nSW5mbyB7IH0sIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFTdHJhdGVneTo6
c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Tm93UGxheWluZ0luZm8mIG5vd1BsYXlpbmdJbmZvKQoreworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIGF1dG8mIGNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXROb3dQbGF5aW5nSW5mbyB7IHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWlu
Z0luZm8oc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvKTsKK30KKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKaW5kZXggNGZhYjBlOTQ0ZmMx
NGU2ODQzNzllMzAwODE2M2JlMTYyZGQ4OWI0ZC4uNmRlZmUzYjE1NDljNDRkNDVmYTQxZTU5NTI2
M2Y0YjdlMDcxYzIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIHJlZ2lzdGVyQ0RNRmFjdG9yaWVz
KFZlY3RvcjxXZWJDb3JlOjpDRE1GYWN0b3J5Kj4mKSBvdmVycmlkZTsKICNlbmRpZgorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpIGZpbmFsOworICAg
IHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwg
Y29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mKSBmaW5hbDsKKyNlbmRpZgogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBiOTA5ZWNjNDM5YmNkM2M2ZjZkYTgwNDFj
NmVmMjkzZmYzNDY2OTZmLi43MzE5ZTY4ZDU3ZGQ4YmVlNTMzMTMzMTRjNjI4MGRlZWY3YzI5MmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0NETUZhY3RvcnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lZGlhU3RyYXRlZ3kuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3Rl
Ym9hcmRJdGVtSW5mby5oPgpAQCAtODAsNiArODEsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OkNETUZhY3Rvcnk6OnBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9y
aWVzKTsKICAgICB9CiAjZW5kaWYKKyAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKSBmaW5h
bAorICAgIHsKKyAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpjbGVhck5vd1BsYXlp
bmdJbmZvKCk7CisgICAgfQorCisgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYgbm93UGxheWluZ0lu
Zm8pIGZpbmFsCisgICAgeworICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5v
d1BsYXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyk7
CisgICAgfQogfTsKIAogTWVkaWFTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVh
dGVNZWRpYVN0cmF0ZWd5KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392404</attachid>
            <date>2020-03-04 06:16:09 -0800</date>
            <delta_ts>2020-03-04 06:26:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208568-20200304151606.patch</filename>
            <type>text/plain</type>
            <size>43769</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNhODhkNjVmYjEzYTYx
Y2RmNjNmNjY2OTU0MjU1MDgzN2YzOWFiOS4uZTIzYzI1YmNiNTFjOTkzYzg1NDg2ZGFiZGEyNzk5
ZDRhYjNlODcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgTm93UGxheWluZyBnZXR0ZXJz
IHNpbmNlIG9ubHkgSFRNTE1lZGlhRWxlbWVudCBpcyBlbGlnaWJsZS4KKyAgICAgICAgTGV0IE1l
ZGlhRWxlbWVudFNlc3Npb24gZ2VuZXJhdGVzIGl0cyBvd24gTm93UGxheWluZ0luZm8gd2hlbiBy
ZXF1ZXN0ZWQgYnkgdGhlIHNlc3Npb24gbWFuYWdlci4KKyAgICAgICAgVXNlIHBsYXRmb3JtIHN0
cmF0ZWdpZXMgdG8gYWJzdHJhY3Qgb3V0IGhvdyB0byBleGVjdXRlIE5vd1BsYXlpbmcgb3JkZXJz
LgorCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6
YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8gY29uc3QpOgor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L01lZGlhU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246Om5vd1BsYXlpbmdJbmZvIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbik6
CisgICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
KToKKwogMjAyMC0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogcmUtYWRkIGBJbnNwZWN0b3JGcm9udGVuZEhvc3RgIHN1cHBv
cnQgZm9yIG1vdmluZyB0aGUgaW5zcGVjdGVkIHdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDY4ZWQ3YjNk
ZWEwNGFkZmUyNDU4MjkzMDhjMjQ4ZmFkZDhlMTMyLi5mN2I4ZDZkYjNmOTZhZmEwN2FkMzI2YzY0
ZDA5ZjNhNGE4Mzk4NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAzLTA0ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxh
eWluZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9j
ZXNzIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEV4cG9ydCBOb3dQbGF5aW5nIG9yZGVycyB0byBHUFUgcHJvY2VzcyB0aHJvdWdoIElQ
QyBpZiBHUFVQcm9jZXNzIGlzIHR1cm5lZCBvbi4KKyAgICAgICAgT3RoZXJ3aXNlIHVzZSB0aGUg
cmVndWxhciBpbiBwcm9jZXNzIGltcGxlbWVudGF0aW9uLgorICAgICAgICBNYWtlIHN1cmUgdG8g
c3luYyB0aGUgaGFzQXVkaW8gc3RhdGUgc28gdGhhdCBpdCBnZXRzIHNldCBwcm9wZXJseSBpbiBX
ZWJQcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xl
YXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6dXBkYXRlQ2FjaGVkU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmF0
ZWd5OjpjbGVhck5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJh
dGVneTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1dlYk1lZGlhU3RyYXRlZ3kuaDoKKwogMjAyMC0wMy0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
ciBzaG91bGQgbm90IGNyZWF0ZSBhIGNvbm5lY3Rpb24gdG8gR1BVIFByb2Nlc3MgaWYgcGFnZSBk
b2VzIG5vdCB3YW50IHJlbW90ZSByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCAxNjdmZmM3YmI1MGI5YmEzZDI1NWJmMDk3NjhiMzRhOTZkODc5NDMxLi5kODFiNjA0NmE3
Zjc4YjgwZGI3N2I1MmQwNTM1OWJjOWEyNWY5MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEV4cG9ydCBOb3dQbGF5aW5nIGNvbW1hbmRzIHRvIEdQVVBy
b2Nlc3Mgd2hlbiBtZWRpYSBwbGF5aW5nIGluIEdQVVByb2Nlc3MgaXMgZW5hYmxlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGluLXByb2Nlc3Mg
bm93IHBsYXlpbmcgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIwMjAtMDMtMDMgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlLWFkZCBgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0YCBzdXBwb3J0IGZvciBtb3ZpbmcgdGhlIGluc3BlY3RlZCB3aW5kb3cK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApp
bmRleCBkNDcwMGE2OTUwNWIxNjJhYmVhYzMzYWM5Mjg4MmIxZGU3MDMxZTQyLi40YTJlMTdiMDA3
MWNmYzdmNzdlZjcyNmZmMmNlNWVkN2ZiZTNkYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0zNzMsMTYgKzM3Myw2IEBAIERv
Y3VtZW50SWRlbnRpZmllciBBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIo
KSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5pZGVudGlmaWVyKCkgOiBE
b2N1bWVudElkZW50aWZpZXIgeyB9OwogfQogCi1TdHJpbmcgQXVkaW9Db250ZXh0Ojpzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdAotewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9j
dW1lbnQtPmZyYW1lKCkgOiBudWxscHRyKSB7Ci0gICAgICAgIGlmIChOZXR3b3JraW5nQ29udGV4
dCogbmV0d29ya2luZ0NvbnRleHQgPSBmcmFtZS0+bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQo
KSkKLSAgICAgICAgICAgIHJldHVybiBuZXR3b3JraW5nQ29udGV4dC0+c291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyKCk7Ci0gICAgfQotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQotCiBi
b29sIEF1ZGlvQ29udGV4dDo6aXNTdXNwZW5kZWQoKSBjb25zdAogewogICAgIHJldHVybiAhZG9j
dW1lbnQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwg
ZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDA2OGVhNmRjNGFkMDBl
NDg1YjQyODNjMjE2NTFjY2E1Njc3NjUxZGUuLjE2MzJhODgzZmRmNzVmYzc1MGNmN2YxMGM4MDZh
MjUyNWRhN2ZiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaApAQCAtMzU1LDcgKzM1NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRB
cmd1bWVudCopIG92ZXJyaWRlIHsgfQogICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dy
b3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlv
blR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgU3RyaW5nIHNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUHJv
ZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNTdXNw
ZW5kZWQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRmMDIzZWJkNGVkZGJmNjkzNDA1NzIzNjk3YWRl
OWJmNTM5Njg1ODkuLmZhODllYzVmYTZmMzdiZjkyNWVkMzJjMTg2NDljM2FhOTMzMWU1NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwODUsNiArMTA4NSw3IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0
cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2
RkU5MUJCRDEyRTUwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBC
NzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNkZEMjVGMjQwRkE0RTUwMDY2NjFEOCAvKiBO
b3dQbGF5aW5nSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RkQyNUQyNDBFRTFBRTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE3MjUzQUIxMzU0
QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyog
TWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3NjEyQUYxRTNBOTk0MDAwQzNEODFE
IC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3NjEyQUIxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwICovOyB9OwogCQk0MTc2MTJCMDFFM0E5OTQwMDBDM0Q4MUQgLyog
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQuaCAqLzsgfTsKQEAgLTczNjcsNiArNzM2OCw3IEBACiAJCTQxNkQ3NTlGMjBDNjQ0
MTMwMEQwMkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8q
IFdvcmtlclJlcG9ydGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlclJlcG9ydGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NkZEMjVEMjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOb3dQbGF5aW5nSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV3JhcHBlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzI1M0E4MTM1NEJCQkMwMDM2MEYyQSAvKiBN
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xFbGVtZW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg3NzMsNiArMjg3NzUsNyBAQAogCQkJCUZE
MzE2MDZCMTJCMDI2RjcwMEMxQTM1OSAvKiBIUlRGUGFubmVyLmggKi8sCiAJCQkJRkRCMTcwMDMx
NEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgKi8sCiAJCQkJRkRC
MTcwMDQxNEEyQkFCMjAwQTJCNUQ5IC8qIE11bHRpQ2hhbm5lbFJlc2FtcGxlci5oICovLAorCQkJ
CTQxNkZEMjVEMjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oICovLAogCQkJCUZE
MzE2MDZDMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuY3BwICovLAogCQkJCUZEMzE2MDZEMTJC
MDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCAqLywKIAkJCQlDREU2NjdBMTFFNEJCQTREMDBFODE1
NEEgLyogUGxhdGZvcm1BdWRpb0RhdGEuaCAqLywKQEAgLTMxNjY0LDYgKzMxNjY3LDcgQEAKIAkJ
CQk3Q0MyRERGQjFFQzk0MTVBMDAyN0I3NzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzFGRTZERkExNTAwNEMyQTAwMDRFQkM0IC8qIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOThFQjFGOTUxMzEzRkUw
NTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZGRDI1
RjI0MEZBNEU1MDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDBCMEQ3RTJCODIwMDdDMzk4MyAvKiBOUF9qc29iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTIxOUIzQjBEQ0E4N0FCMDA0MEUzQTAgLyogbnBmdW5jdGlvbnMuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkNTExNGNhMjJm
MDNhYzIxZmY3NTJhMWZkNTY2MTA2MzM4NDA4MGQzLi4zMmE5YzViNTRmYmE2ZjRjNmZiMWY4Mjgy
MmIwOTcwNjEwZGUxZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApA
QCAtNTkyLDYgKzU5MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNp
Z25BY3RpdmUoKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CiAKKyAg
ICB1aW50NjRfdCBtZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU3Ry
aW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Q7CisgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcigpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaEluaXRpYWxpemF0aW9uKCk7CkBAIC03MzUsNyArNzM5
LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJz
Q2hhbmdlZCgpIG92ZXJyaWRlOwogCi0gICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBtZWRpYVBsYXllclNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcigpOyB9CiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFQbGF5ZXJQcmVmZXJy
ZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC04ODIsMTAgKzg4
NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlc3VtZUF1dG9wbGF5aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYXlSZXN1bWVQ
bGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7Ci0gICAgdWludDY0X3QgbWVkaWFT
ZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwotICAgIFN0cmluZyBtZWRpYVNl
c3Npb25UaXRsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJh
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGR1cmF0aW9uKCk7IH0KLSAgICBkb3VibGUg
bWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50
VGltZSgpOyB9CiAgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBv
dmVycmlkZTsKICAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJp
Y3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXgg
OGIyM2Y0YTg3NTlkMWQyZGFiOGQzOGY1NDMyMjM4NTg4ZTQwN2E5Yy4uNDk4YjVhNzU1YWY3NDZl
NGU2YzE4YTcxMDI2Y2ZhYzI2OGE4MzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTFZpZGVv
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiTm93UGxheWluZ0luZm8uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUXVpcmtzLmgi
CkBAIC05NzcsMTYgKzk3OCwyMSBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnVwZGF0ZUlz
TWFpbkNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBtX2lzTWFpbkNvbnRlbnQ7CiB9CiAKLWJv
b2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0
eSgpIGNvbnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BsYXliYWNrQ29udHJv
bHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3QKIHsKICAgICBhdXRvIHBhZ2UgPSBtX2VsZW1l
bnQuZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgIXBhZ2UtPmlzVmlzaWJs
ZUFuZEFjdGl2ZSgpOworICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1BsYXliYWNrQ29u
dHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCk7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdAorT3B0
aW9uYWw8Tm93UGxheWluZ0luZm8+IE1lZGlhRWxlbWVudFNlc3Npb246Om5vd1BsYXlpbmdJbmZv
KCkgY29uc3QKIHsKLSAgICBhdXRvIHBhZ2UgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7
Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9w
bGF5aW5nQXVkaW8oKTsKKyAgICBhdXRvKiBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50KCkucGFn
ZSgpOworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA9IHBhZ2Ug
JiYgIXBhZ2UtPmlzVmlzaWJsZUFuZEFjdGl2ZSgpOworICAgIGJvb2wgaXNQbGF5aW5nID0gc3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZzsKKyAgICBkb3VibGUgZHVyYXRp
b24gPSBtX2VsZW1lbnQuc3VwcG9ydHNTZWVraW5nKCkgPyBtX2VsZW1lbnQuZHVyYXRpb24oKSA6
IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IHN0
ZDo6aXNmaW5pdGUobV9lbGVtZW50LmN1cnJlbnRUaW1lKCkpICYmIG1fZWxlbWVudC5zdXBwb3J0
c1NlZWtpbmcoKSA/IG1fZWxlbWVudC5jdXJyZW50VGltZSgpIDogTWVkaWFQbGF5ZXI6OmludmFs
aWRUaW1lKCk7CisKKyAgICByZXR1cm4gTm93UGxheWluZ0luZm8geyBtX2VsZW1lbnQubWVkaWFT
ZXNzaW9uVGl0bGUoKSwgbV9lbGVtZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpLCBk
dXJhdGlvbiwgY3VycmVudFRpbWUsIG1fZWxlbWVudC5zdXBwb3J0c1NlZWtpbmcoKSwgbV9lbGVt
ZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSwgaXNQbGF5aW5nLCBhbGxvd3NOb3dQ
bGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IH07CiB9CiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhjb25zdCBNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uIGVudW1lcmF0aW9uVmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCmluZGV4IDFmMmQz
NGY5NTNmMzUyZTA5NTIxYjgzZDE4ZTJiZDZjMWMyOTY2MjMuLjFjZDJjOGEwZGM3YWVlZGQ3MWU3
ODY2ODdjODNlZmQwN2RiOTdkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oCkBAIC0xNDksNyArMTQ5LDYgQEAgcHVibGljOgogICAgIE1vbm90b25pY1RpbWUg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoKSBjb25zdDsKIAogICAgIGJvb2wgYWxsb3dz
UGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdDsKLSAgICBib29sIGFs
bG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHN0YXRpYyBib29sIGlzTWVkaWFFbGVtZW50U2Vzc2lvbk1lZGlhVHlwZShNZWRpYVR5cGUgdHlw
ZSkKICAgICB7CkBAIC0xNTgsNiArMTU3LDggQEAgcHVibGljOgogICAgICAgICAgICAgfHwgdHlw
ZSA9PSBNZWRpYVR5cGU6OlZpZGVvQXVkaW87CiAgICAgfQogCisgICAgT3B0aW9uYWw8Tm93UGxh
eWluZ0luZm8+IG5vd1BsYXlpbmdJbmZvKCkgY29uc3QgZmluYWw7CisKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhRWxlbWVudFNlc3Npb24iOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgKaW5kZXggNjBhNTg0N2M4Y2VjMTBiNzliNzQ5
YTZmYWY4NTAzZDE2YTE5OWI5NS4uODk3NDViYjgzYTIzMzZkNDIxZTE2NzBlODczMGJmYjdhYzc0
NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApAQCAtMzIsNiAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uOwogY2xh
c3MgQXVkaW9JT0NhbGxiYWNrOwogY2xhc3MgQ0RNRmFjdG9yeTsKK3N0cnVjdCBOb3dQbGF5aW5n
SW5mbzsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFTdHJhdGVneSB7CiBwdWJsaWM6CkBA
IC00Miw2ICs0MywxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYp
ID0gMDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZpcnR1YWwgdm9pZCBjbGVh
ck5vd1BsYXlpbmdJbmZvKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYp
ID0gMDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJhdGVneSgp
ID0gZGVmYXVsdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGY3NTgyZTIzNjFkNWY1ZWM0ZTcyNTJhZDM2OTdmMmUx
NDEyODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgTm93UGxheWluZ0luZm8geworICAgIFN0cmluZyB0aXRsZTsKKyAgICBT
dHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOworICAgIGRvdWJsZSBkdXJhdGlvbiB7
IDAgfTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgeyAwIH07CisgICAgYm9vbCBzdXBwb3J0c1Nl
ZWtpbmcgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIgeyAwIH07Cisg
ICAgYm9vbCBpc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSB7IGZhbHNlIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTm93UGxheWluZ0luZm86OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwg
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8
IHN1cHBvcnRzU2Vla2luZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxv
d3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgdGl0bGU7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0aXRsZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgc291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGRvdWJs
ZSBkdXJhdGlvbjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGR1cmF0aW9uKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGRvdWJsZSBjdXJyZW50VGltZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGN1cnJlbnRUaW1lKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGJvb2wgc3Vw
cG9ydHNTZWVraW5nOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3VwcG9ydHNTZWVraW5nKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXI7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1bmlxdWVJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIGJvb2wgaXNQbGF5aW5nOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNQ
bGF5aW5nKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGJvb2wgYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93c05vd1Bs
YXlpbmdDb250cm9sc1Zpc2liaWxpdHkpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0
dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoc291cmNlQXBwbGlj
YXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcs
IHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlz
aWJpbGl0eSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXgg
MDc4MjFlN2I4YWQ3NWViOTYxYThlMzcxZjcyY2Y0NzY2NzkxMjY3ZS4uMTg1M2ExMjFjYWIyMjc2
MGYxMWYyMjkzMGRmODkyNGM3ODg1NzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yNzUsMjggKzI3Niw2IEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
UGxhdGZvcm1NZWRpYVNlc3Npb246OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAogICAgIHJldHVy
biBtX2NsaWVudC5wcmVzZW50YXRpb25UeXBlKCk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi11
aW50NjRfdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKTsKLX0K
LQotU3RyaW5nIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6ZHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRp
YVNlc3Npb25EdXJhdGlvbigpOwotfQotCi1kb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1
cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3Vy
cmVudFRpbWUoKTsKLX0KLSNlbmRpZgotICAgIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
Y2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKQEAgLTMxNCwxMSArMjkz
LDYgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jbGllbnQuc3VwcG9ydHNTZWVraW5nKCk7CiB9CiAKLVN0cmluZyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9jbGllbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci19Ci0K
IGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9jbGllbnQuaXNTdXNwZW5kZWQoKTsKQEAgLTM2NywyOCArMzQxLDYgQEAgdm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgbV9tYW5h
Z2VyLT5zZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwogfQogCi0jaWYgRU5BQkxFKFZJ
REVPKQotdWludDY0X3QgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblVu
aXF1ZUlkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgUGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVu
dDo6bWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXll
cjo6aW52YWxpZFRpbWUoKTsKLX0KLQotZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
OjptZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpOwotfQotI2VuZGlmCi0KIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Np
b246OmNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoKQogewogICAgIG1fbWFuYWdlci0+Y2xp
ZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgqdGhpcyk7CkBAIC00MDksNiArMzYxLDExIEBAIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgUGxhdGZvcm1NZWRpYVNlc3Npb246Om1hbmFnZXIo
KQogICAgIHJldHVybiAqbV9tYW5hZ2VyOwogfQogCitPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4g
UGxhdGZvcm1NZWRpYVNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1
cm4geyB9OworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBh
OGQxOGJlNGVhYmFlOWVjODBmZjVkZWY0ZmI3YmNhOWRhNjU3MDdhLi5lMmIzOGEwMWQwYWE1YTY2
ZDM3NzkxMWVkNDAxZTUyODkwNzg5NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xh
c3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
OwogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogZW51bSBjbGFzcyBEZWxheUNh
bGxpbmdVcGRhdGVOb3dQbGF5aW5nIHsgTm8sIFllcyB9Oworc3RydWN0IE5vd1BsYXlpbmdJbmZv
OwogCiBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbgogICAgIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPgpAQCAtMTEzLDEzICsxMTQsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN1c3BlbmRCdWZmZXJpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lQnVmZmVyaW5nKCkgeyB9CiAgICAgCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIHVpbnQ2
NF90IHVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsK
LSAgICBkb3VibGUgZHVyYXRpb24oKSBjb25zdDsKLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBj
b25zdDsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgIGRvdWJsZSBhc0Rv
dWJsZTsKICAgICB9IFJlbW90ZUNvbW1hbmRBcmd1bWVudDsKQEAgLTE3NCw4ICsxNjgsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKSB7IH0K
ICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KICAgICBib29sIGhhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGxheWVkU2luY2VMYXN0SW50ZXJydXB0aW9uOyB9CiAg
ICAgdm9pZCBjbGVhckhhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlvbigpIHsgbV9oYXNQbGF5
ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24gPSBmYWxzZTsgfQogCkBAIC0xOTUsNiArMTg3LDggQEAg
cHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmdBdWRpbygpIGNvbnN0ID0g
MDsKICAgICB9OwogCisgICAgdmlydHVhbCBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbm93UGxh
eWluZ0luZm8oKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYsIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
Jik7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xpZW50OyB9CkBAIC0yMzUsMTMgKzIyOSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgPSAwOwogCi0jaWYgRU5BQkxFKFZJREVPKQotICAg
IHZpcnR1YWwgdWludDY0X3QgbWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGRvdWJs
ZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0OwotI2VuZGlmCi0gICAgCiAgICAgdmly
dHVhbCBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1NlZWtpbmcoKSBjb25zdCA9IDA7CkBAIC0yNjEsNyArMjQ4LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdPblNlY29uZFNjcmVlbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1l
bnRJZGVudGlmaWVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNNZWRp
YVN0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLmgKaW5kZXggYWIwOWI3OTg1ZDc3ZmM2YTc2MGMwNGM3NzllYTc3MmVlYTU3NjRk
MC4uZDcyNTdjMDY5ZmIzZTQ2ZTZhMjc5ZjEzNWFlNjZmOTMyNGFjZWEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hLmgKQEAgLTM1LDYgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdHJ1Y3QgTm93UGxheWluZ0luZm87CisKIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYQogICAgIDogcHVibGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcgogICAgICwgcHJp
dmF0ZSBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQKQEAgLTU1LDYgKzU3LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb247IH0KICAgICB2
b2lkIHByZXBhcmVUb1NlbmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgpIGZpbmFsOwogCisg
ICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAg
IHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNO
b3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJik7CisKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNjaGVkdWxlVXBkYXRlTm93UGxheWluZ0luZm8oKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0K
aW5kZXggZWIxOWE5YmY5YzAzMzhhYWFiM2U3OGZiMzY4YjA3NzI2NWUxZDFkOC4uNWQyNGQ1Y2Ri
M2FkNzExMDIwNmYzYzkxNzAzOWZhOWJmZWMwY2NjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbQpAQCAtMzMsNyArMzMsMTAgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIk5vd1BsYXlpbmdJbmZvLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCIKICNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbi5oPgogCkBAIC0yMDQsOCArMjA3LDczIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hOjpzZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgc2NoZWR1bGVVcGRh
dGVOb3dQbGF5aW5nSW5mbygpOwogfQogCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6
Y2xlYXJOb3dQbGF5aW5nSW5mbygpCit7CisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpCisgICAgICAgIE1STWVkaWFSZW1v
dGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eShNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwg
TVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlzaWJsZSk7CisKKyAgICBNUk1lZGlh
UmVtb3RlU2V0Q2FuQmVOb3dQbGF5aW5nQXBwbGljYXRpb24oZmFsc2UpOworICAgIE1STWVkaWFS
ZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhudWxscHRyKTsKKyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93
UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0
TG9jYWxPcmlnaW4oKSwga01SUGxheWJhY2tTdGF0ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7CisjaWYgTE9HX0RJU0FCTEVE
CisgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIk1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBw
bGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHN0b3BwZWQpIGZhaWxlZCB3aXRoIGVycm9y
ICIsIGVycm9yKTsKKyNlbmRpZgorICAgIH0pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
biwgY29uc3QgTm93UGxheWluZ0luZm8mIG5vd1BsYXlpbmdJbmZvKQoreworICAgIGlmIChzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbikKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNldENhbkJlTm93
UGxheWluZ0FwcGxpY2F0aW9uKHRydWUpOworCisgICAgYXV0byBpbmZvID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDQsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
KworICAgIGlmICghbm93UGxheWluZ0luZm8udGl0bGUuaXNFbXB0eSgpKQorICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
VGl0bGUsIG5vd1BsYXlpbmdJbmZvLnRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUobm93UGxheWluZ0luZm8uZHVyYXRpb24pICYmIG5vd1BsYXlp
bmdJbmZvLmR1cmF0aW9uICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CisgICAgICAg
IGF1dG8gY2ZEdXJhdGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmR1cmF0aW9uKSk7Cisg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9EdXJhdGlvbiwgY2ZEdXJhdGlvbi5nZXQoKSk7CisgICAgfQorCisgICAgZG91
YmxlIHJhdGUgPSAgbm93UGxheWluZ0luZm8uaXNQbGF5aW5nID8gMSA6IDA7CisgICAgYXV0byBj
ZlJhdGUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckRvdWJsZVR5cGUsICZyYXRlKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgY2ZSYXRlLmdl
dCgpKTsKKworICAgIGF1dG8gbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZp
ZXIgPSBub3dQbGF5aW5nSW5mby51bmlxdWVJZGVudGlmaWVyOworICAgIGF1dG8gY2ZJZGVudGlm
aWVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJMb25nTG9uZ1R5cGUsICZsYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmll
cikpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3Rl
Tm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyLCBjZklkZW50aWZpZXIuZ2V0KCkpOworCisg
ICAgaWYgKHN0ZDo6aXNmaW5pdGUobm93UGxheWluZ0luZm8uY3VycmVudFRpbWUpICYmIG5vd1Bs
YXlpbmdJbmZvLmN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpICYmIG5v
d1BsYXlpbmdJbmZvLnN1cHBvcnRzU2Vla2luZykgeworICAgICAgICBhdXRvIGNmQ3VycmVudFRp
bWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkpOworICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
RWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChjYW5M
b2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbigpICYmICFu
b3dQbGF5aW5nSW5mby5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIuaXNFbXB0eSgpKQorICAg
ICAgICBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24oTVJNZWRpYVJlbW90ZUdldExv
Y2FsT3JpZ2luKCksIG5vd1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIE1SUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0
YXRlID0gKG5vd1BsYXlpbmdJbmZvLmlzUGxheWluZykgPyBrTVJQbGF5YmFja1N0YXRlUGxheWlu
ZyA6IGtNUlBsYXliYWNrU3RhdGVQYXVzZWQ7CisgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlp
bmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExvY2Fs
T3JpZ2luKCksIHBsYXliYWNrU3RhdGUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJN
ZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7CisjaWYgTE9HX0RJU0FCTEVECisgICAgICAgIFVOVVNF
RF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIk1STWVkaWFSZW1v
dGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHBsYXlpbmcp
IGZhaWxlZCB3aXRoIGVycm9yICIsIGVycm9yKTsKKyNlbmRpZgorICAgIH0pOworICAgIE1STWVk
aWFSZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhpbmZvLmdldCgpKTsKKworICAgIGlmIChjYW5Mb2Fk
X01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKSB7Cisg
ICAgICAgIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IG5vd1BsYXlp
bmdJbmZvLmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPyBNUk5vd1BsYXlpbmdD
bGllbnRWaXNpYmlsaXR5QWx3YXlzVmlzaWJsZSA6IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxp
dHlOZXZlclZpc2libGU7CisgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJp
bGl0eShNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgdmlzaWJpbGl0eSk7CisgICAgfQor
fQorCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpub3dQ
bGF5aW5nRWxpZ2libGVTZXNzaW9uKCkKIHsKKyAgICAvLyBGSVhNRTogRml4IHRoaXMgbGF5ZXJp
bmcgdmlvbGF0aW9uLgogICAgIGlmIChhdXRvIGVsZW1lbnQgPSBIVE1MTWVkaWFFbGVtZW50Ojpi
ZXN0TWVkaWFFbGVtZW50Rm9yU2hvd2luZ1BsYXliYWNrQ29udHJvbHNNYW5hZ2VyKE1lZGlhRWxl
bWVudFNlc3Npb246OlBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpOb3dQbGF5aW5nKSkKICAgICAg
ICAgcmV0dXJuICZlbGVtZW50LT5tZWRpYVNlc3Npb24oKTsKIApAQCAtMjIwLDk0ICsyODgsNDgg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkK
IAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0gICAgY29uc3QgUGxhdGZvcm1N
ZWRpYVNlc3Npb24qIGN1cnJlbnRTZXNzaW9uID0gdGhpcy0+bm93UGxheWluZ0VsaWdpYmxlU2Vz
c2lvbigpOwotCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiY3VycmVudFNlc3Npb246
ICIsIGN1cnJlbnRTZXNzaW9uID8gY3VycmVudFNlc3Npb24tPmxvZ0lkZW50aWZpZXIoKSA6IG51
bGxwdHIpOwotCi0gICAgaWYgKCFjdXJyZW50U2Vzc2lvbikgewotICAgICAgICBpZiAoY2FuTG9h
ZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoKSkKLSAg
ICAgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eShNUk1lZGlhUmVt
b3RlR2V0TG9jYWxPcmlnaW4oKSwgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlz
aWJsZSk7CisgICAgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG5vd1BsYXlpbmdJbmZvOworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpKQorICAgICAg
ICBub3dQbGF5aW5nSW5mbyA9IHNlc3Npb24tPm5vd1BsYXlpbmdJbmZvKCk7CiAKKyAgICBpZiAo
IW5vd1BsYXlpbmdJbmZvKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImNs
ZWFyaW5nIG5vdyBwbGF5aW5nIGluZm8iKTsKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
Pm1lZGlhU3RyYXRlZ3koKS5jbGVhck5vd1BsYXlpbmdJbmZvKCk7CiAKLSAgICAgICAgTVJNZWRp
YVJlbW90ZVNldENhbkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKGZhbHNlKTsKICAgICAgICAgbV9y
ZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24gPSBmYWxzZTsKLQotICAgICAgICBNUk1l
ZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luZm8obnVsbHB0cik7CiAgICAgICAgIG1fbm93UGxheWlu
Z0FjdGl2ZSA9IGZhbHNlOwogICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlID0g
ZW1wdHlTdHJpbmcoKTsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdEdXJhdGlvbiA9
IE5BTjsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2VkVGltZSA9IE5BTjsK
ICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciA9IDA7
Ci0gICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0
YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBrTVJQbGF5YmFja1N0
YXRlU3RvcHBlZCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJy
b3IgZXJyb3IpIHsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShl
cnJvcik7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgIk1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGlj
YXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHN0b3BwZWQpIGZhaWxlZCB3aXRoIGVycm9yICIs
IGVycm9yKTsKLSNlbmRpZgotICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUgPSBcIiIsIG5vd1BsYXlpbmdJ
bmZvLT50aXRsZSwgIlwiLCBpc1BsYXlpbmcgPSAiLCBub3dQbGF5aW5nSW5mby0+aXNQbGF5aW5n
LCAiLCBkdXJhdGlvbiA9ICIsIG5vd1BsYXlpbmdJbmZvLT5kdXJhdGlvbiwgIiwgbm93ID0gIiwg
bm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lLCAiLCBpZCA9ICIsIG5vd1BsYXlpbmdJbmZvLT51
bmlxdWVJZGVudGlmaWVyLCAiLCByZWdpc3RlcmVkID0gIiwgbV9yZWdpc3RlcmVkQXNOb3dQbGF5
aW5nQXBwbGljYXRpb24pOworCisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRl
Z3koKS5zZXROb3dQbGF5aW5nSW5mbyghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRp
b24sICpub3dQbGF5aW5nSW5mbyk7CisKICAgICBpZiAoIW1fcmVnaXN0ZXJlZEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uKSB7CiAgICAgICAgIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uID0gdHJ1ZTsKICAgICAgICAgcHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVj
ZXNzYXJ5KCk7Ci0gICAgICAgIE1STWVkaWFSZW1vdGVTZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNh
dGlvbih0cnVlKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdGl0bGUgPSBjdXJyZW50U2Vzc2lvbi0+
dGl0bGUoKTsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBjdXJyZW50U2Vzc2lvbi0+c3VwcG9ydHNT
ZWVraW5nKCkgPyBjdXJyZW50U2Vzc2lvbi0+ZHVyYXRpb24oKSA6IE1lZGlhUGxheWVyOjppbnZh
bGlkVGltZSgpOwotICAgIGRvdWJsZSByYXRlID0gY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcgPyAxIDogMDsKLSAgICBhdXRvIGluZm8gPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworICAgIGlmICghbm93UGxheWluZ0luZm8tPnRpdGxlLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IG5vd1BsYXlpbmdJbmZvLT50aXRs
ZTsKIAotICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9UaXRsZSwgdGl0
bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0gICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5
aW5nVGl0bGUgPSB0aXRsZTsKLSAgICB9Ci0KLSAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlv
bikgJiYgZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKLSAgICAgICAg
YXV0byBjZkR1cmF0aW9uID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmZHVyYXRpb24pKTsKLSAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0R1cmF0
aW9uLCBjZkR1cmF0aW9uLmdldCgpKTsKKyAgICBkb3VibGUgZHVyYXRpb24gPSBub3dQbGF5aW5n
SW5mby0+ZHVyYXRpb247CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pICYmIGR1cmF0
aW9uICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKQogICAgICAgICBtX2xhc3RVcGRhdGVk
Tm93UGxheWluZ0R1cmF0aW9uID0gZHVyYXRpb247Ci0gICAgfQogCi0gICAgYXV0byBjZlJhdGUg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRv
dWJsZVR5cGUsICZyYXRlKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1BsYXliYWNrUmF0ZSwgY2ZSYXRlLmdldCgpKTsK
KyAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyID0gbm93UGxh
eWluZ0luZm8tPnVuaXF1ZUlkZW50aWZpZXI7CiAKLSAgICBtX2xhc3RVcGRhdGVkTm93UGxheWlu
Z0luZm9VbmlxdWVJZGVudGlmaWVyID0gY3VycmVudFNlc3Npb24tPnVuaXF1ZUlkZW50aWZpZXIo
KTsKLSAgICBhdXRvIGNmSWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyTG9uZ0xvbmdUeXBlLCAmbV9sYXN0VXBkYXRlZE5vd1Bs
YXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllcikpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyLCBj
ZklkZW50aWZpZXIuZ2V0KCkpOwotCi0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gY3VycmVudFNl
c3Npb24tPmN1cnJlbnRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUp
ICYmIGN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpICYmIGN1cnJlbnRT
ZXNzaW9uLT5zdXBwb3J0c1NlZWtpbmcoKSkgewotICAgICAgICBhdXRvIGNmQ3VycmVudFRpbWUg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRv
dWJsZVR5cGUsICZjdXJyZW50VGltZSkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3Vy
cmVudFRpbWUuZ2V0KCkpOworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG5vd1BsYXlpbmdJbmZv
LT5jdXJyZW50VGltZTsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgJiYgY3Vy
cmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkgJiYgbm93UGxheWluZ0luZm8t
PnN1cHBvcnRzU2Vla2luZykKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdFbGFwc2Vk
VGltZSA9IGN1cnJlbnRUaW1lOwotICAgIH0KLQotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgInRpdGxlID0gXCIiLCB0aXRsZSwgIlwiLCByYXRlID0gIiwgcmF0ZSwgIiwgZHVyYXRpb24g
PSAiLCBkdXJhdGlvbiwgIiwgbm93ID0gIiwgY3VycmVudFRpbWUpOwogCi0gICAgU3RyaW5nIHBh
cmVudEFwcGxpY2F0aW9uID0gY3VycmVudFNlc3Npb24tPnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpOwotICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXRQYXJl
bnRBcHBsaWNhdGlvbigpICYmICFwYXJlbnRBcHBsaWNhdGlvbi5pc0VtcHR5KCkpCi0gICAgICAg
IE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxP
cmlnaW4oKSwgcGFyZW50QXBwbGljYXRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci0KLSAg
ICBtX25vd1BsYXlpbmdBY3RpdmUgPSBjdXJyZW50U2Vzc2lvbi0+YWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSgpOwotICAgIE1SUGxheWJhY2tTdGF0ZSBwbGF5YmFja1N0YXRlID0g
KGN1cnJlbnRTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5n
KSA/IGtNUlBsYXliYWNrU3RhdGVQbGF5aW5nIDoga01SUGxheWJhY2tTdGF0ZVBhdXNlZDsKLSAg
ICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9y
aWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgcGxheWJhY2tTdGF0ZSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJyb3IgZXJyb3IpIHsKLSNpZiBM
T0dfRElTQUJMRUQKLSAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbHNlCi0gICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIk1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBw
bGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKHBsYXlpbmcpIGZhaWxlZCB3aXRoIGVycm9y
ICIsIGVycm9yKTsKLSNlbmRpZgotICAgIH0pOwotICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5
aW5nSW5mbyhpbmZvLmdldCgpKTsKKyAgICBtX25vd1BsYXlpbmdBY3RpdmUgPSBub3dQbGF5aW5n
SW5mby0+YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsKIAotICAgIGlmIChjYW5M
b2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKSB7
Ci0gICAgICAgIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IGN1cnJl
bnRTZXNzaW9uLT5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCkgPyBNUk5vd1Bs
YXlpbmdDbGllbnRWaXNpYmlsaXR5QWx3YXlzVmlzaWJsZSA6IE1STm93UGxheWluZ0NsaWVudFZp
c2liaWxpdHlOZXZlclZpc2libGU7Ci0gICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5n
VmlzaWJpbGl0eShNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgdmlzaWJpbGl0eSk7Ci0g
ICAgfQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICNlbmRpZiAvLyBVU0UoTUVESUFS
RU1PVEUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmEyYzg3MGY3YWFhMWIwZGIwMDBlZjg4ODI3Yzlh
MGY2MWRjZjI1Yi4uZTAzMzQ2YzQ1ZWFjMDFlYWIzZDZkMDA2NmE4NzQ5YzNlMDFmNzVlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtNjEsNiArNjEsMTAgQEAKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmg+CisjZW5kaWYKKwogI2lu
Y2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogCkBAIC0yMTMsNiArMjE3
LDE4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0Jh
Y2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwg
Zm91bmQpOwogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8oKQoreworICAgIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykKK3sKKyAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA3NDcxNWM4MGM1NDViZWFmZWMz
ZjZiN2UwOTg0ZWNhNTBjYmEyNjY5Li5lNGM5MTI1NTlmZjk2MDQ1ZTAwNGIwZTBlOWQzMmJmMzBh
NDBjNDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEwMyw2ICsxMDMsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJ
bmZvKCk7CisgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYpOworI2VuZGlmCiAKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25u
ZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDkzMmMwMTIy
ZGUwODFlZGU5YmI5ZWZiNTZmOWJjNTI1OWJhNGQ3MDQuLjhkOTFjZTJiY2RiZGFlY2ZjMjU3MTAz
Y2RhY2U2OTY1NGNjNDhkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw2
ICsyNSwxMCBAQAogbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rp
c3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAg
ICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAgIHZvaWQgU2V0Tm93UGxheWlu
Z0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok5v
d1BsYXlpbmdJbmZvIG5vd1BsYXlpbmdJbmZvKTsKKyNlbmRpZgogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGM5ZDJlZTQ0NWJkNWU2YTk0
YWE0OGQ1OGI5ZTA0MjEzYmM1YWYyZTAuLjI2MmE0YmQ4OWUyOTc5ZGQ0NzM3ZDg1YzQ1MDNmNmQ2
Y2JmMzRkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTY3NCw2ICs2NzQsNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OnVwZGF0ZUNhY2hlZFN0YXRlKCkKICAgICBtX2NhY2hlZFN0
YXRlLnJlYWR5U3RhdGUgPSBtX3BsYXllci0+cmVhZHlTdGF0ZSgpOwogICAgIG1fY2FjaGVkU3Rh
dGUucGF1c2VkID0gbV9wbGF5ZXItPnBhdXNlZCgpOwogICAgIG1fY2FjaGVkU3RhdGUubG9hZGlu
Z1Byb2dyZXNzZWQgPSBtX3BsYXllci0+ZGlkTG9hZGluZ1Byb2dyZXNzKCk7CisgICAgbV9jYWNo
ZWRTdGF0ZS5oYXNBdWRpbyA9IG1fcGxheWVyLT5oYXNBdWRpbygpOwogCiAgICAgaWYgKG1fYnVm
ZmVyZWRDaGFuZ2VkKSB7CiAgICAgICAgIG1fYnVmZmVyZWRDaGFuZ2VkID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0
ZWd5LmNwcAppbmRleCAyYWFlNWU1NDQ1MTA4NDc5YmQzY2QzMzlhZmE2YmY2ZDJkZGFiY2Y2Li5j
ODY2YmEwMDk3ZjQzMzBiODdhYmYxMzZjMDVlZmExMjg3YjJhNjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAK
QEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvSU9DYWxsYmFjay5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q0RNRmFjdG9yeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nSW5mby5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtNTUsNCArNTcsMzAgQEAgdm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3Rl
ckNETUZhY3RvcmllcyhWZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9yeSo+JiBmYWN0b3IKIH0KICNl
bmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OmNsZWFy
Tm93UGxheWluZ0luZm8oKQoreworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91
c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDbGVhck5vd1BsYXlpbmdJbmZvIHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8o
KTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNl
dEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYg
bm93UGxheWluZ0luZm8pCit7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGlmIChtX3Vz
ZUdQVVByb2Nlc3MpIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAg
ICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlNldE5vd1BsYXlpbmdJbmZvIHsgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIG5vd1BsYXlp
bmdJbmZvIH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhzZXRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbiwgbm93UGxheWluZ0luZm8pOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJN
ZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaAppbmRleCA0ZmFiMGU5NDRmYzE0ZTY4NDM3OWUzMDA4MTYzYmUxNjJkZDg5
YjRkLi42ZGVmZTNiMTU0OWM0NGQ0NWZhNDFlNTk1MjYzZjRiN2UwNzFjMjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3ku
aApAQCAtNDUsNiArNDUsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogICAgIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3Rv
cnkqPiYpIG92ZXJyaWRlOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBj
bGVhck5vd1BsYXlpbmdJbmZvKCkgZmluYWw7CisgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhi
b29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5n
SW5mbyYpIGZpbmFsOworI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9v
bCBtX3VzZUdQVVByb2Nlc3MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CmluZGV4IGI5MDllY2M0MzliY2QzYzZmNmRhODA0MWM2ZWYyOTNmZjM0NjY5NmYuLjczMTllNjhk
NTdkZDhiZWU1MzMxMzMxNGM2MjgwZGVlZjdjMjkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTWVkaWFTdHJhdGVneS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CkBAIC04MCw2
ICs4MSwxNSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6
cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwogICAgIH0KICNlbmRpZgorICAg
IHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpIGZpbmFsCisgICAgeworICAgICAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB9CisKKyAgICB2
b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNv
bnN0IE5vd1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykgZmluYWwKKyAgICB7CisgICAgICAg
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oc2V0QXNOb3dQbGF5
aW5nQXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvKTsKKyAgICB9CiB9OwogCiBNZWRpYVN0cmF0
ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZU1lZGlhU3RyYXRlZ3koKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392407</attachid>
            <date>2020-03-04 06:27:06 -0800</date>
            <delta_ts>2020-03-04 06:44:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208568-20200304152704.patch</filename>
            <type>text/plain</type>
            <size>43676</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBlNmFhMmQzMDliZTYz
NTBiYzJjNGFlZGI1NjhjODliMzJmMWMwZi4uYTRkNzMzYWM3MWI5OTg4MWU3MzNkZTU2YTEzNzBh
NmQ1NTMzM2EzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgTm93UGxheWluZyBnZXR0ZXJz
IHNpbmNlIG9ubHkgSFRNTE1lZGlhRWxlbWVudCBpcyBlbGlnaWJsZS4KKyAgICAgICAgTGV0IE1l
ZGlhRWxlbWVudFNlc3Npb24gZ2VuZXJhdGVzIGl0cyBvd24gTm93UGxheWluZ0luZm8gd2hlbiBy
ZXF1ZXN0ZWQgYnkgdGhlIHNlc3Npb24gbWFuYWdlci4KKyAgICAgICAgVXNlIHBsYXRmb3JtIHN0
cmF0ZWdpZXMgdG8gYWJzdHJhY3Qgb3V0IGhvdyB0byBleGVjdXRlIE5vd1BsYXlpbmcgb3JkZXJz
LgorCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6
YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8gY29uc3QpOgor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L01lZGlhU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246Om5vd1BsYXlpbmdJbmZvIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbik6
CisgICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
KToKKwogMjAyMC0wMy0wMiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0NDcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZGJlOTVkYzJkMjJlMTkwZTdjMTViZWVkMmFiMjgyZGRjYWZlYjgzYy4uNmQzYWRjZGNhMzQ2
Yzk2MmE1NGI2ZDVhODJhYmJmYmM0YTI1N2M4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAyMC0wMy0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
RXhwb3J0IE5vd1BsYXlpbmcgY29tbWFuZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlp
bmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgTm93UGxheWluZyBvcmRlcnMgdG8gR1BVIHByb2Nl
c3MgdGhyb3VnaCBJUEMgaWYgR1BVUHJvY2VzcyBpcyB0dXJuZWQgb24uCisgICAgICAgIE90aGVy
d2lzZSB1c2UgdGhlIHJlZ3VsYXIgaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
TWFrZSBzdXJlIHRvIHN5bmMgdGhlIGhhc0F1ZGlvIHN0YXRlIHNvIHRoYXQgaXQgZ2V0cyBzZXQg
cHJvcGVybHkgaW4gV2ViUHJvY2Vzcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8pOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OnVwZGF0ZUNhY2hlZFN0YXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFTdHJhdGVneTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyYXRlZ3k6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5Lmg6CisKIDIwMjAtMDMtMDMgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBVU0UoR1BVX1BST0NF
U1MpIHRvIEVOQUJMRShHUFVfUFJPQ0VTU19GT1JfV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDg4NmRkZWE1ZjZmMDMyZTlhODgyNmVmMWRiNjAwNzRiYjY5NzcwZDIuLjY4
ZTdmZWVhYmU2M2E1MDYxMTZiODdhNmU3YjVmZWUwN2YzNjU4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0wNCAgeW91ZW5uIGZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3J0IE5vd1BsYXlpbmcgY29tbWFuZHMg
dG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlpbmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFibGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaW4t
cHJvY2VzcyBub3cgcGxheWluZyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMy0wMiAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSXRlbXMg
aW4gdGhlIHRvb2xiYXIgdGFrZSB1cCB0byBtdWNoIHZlcnRpY2FsIHNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZDQ3MDBh
Njk1MDViMTYyYWJlYWMzM2FjOTI4ODJiMWRlNzAzMWU0Mi4uNGEyZTE3YjAwNzFjZmM3Zjc3ZWY3
MjZmZjJjZTVlZDdmYmUzZGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzczLDE2ICszNzMsNiBAQCBEb2N1bWVudElkZW50
aWZpZXIgQXVkaW9Db250ZXh0Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QKICAg
ICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDogRG9jdW1lbnRJZGVu
dGlmaWVyIHsgfTsKIH0KIAotU3RyaW5nIEF1ZGlvQ29udGV4dDo6c291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1
bWVudCgpOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5mcmFt
ZSgpIDogbnVsbHB0cikgewotICAgICAgICBpZiAoTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtp
bmdDb250ZXh0ID0gZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gbmV0d29ya2luZ0NvbnRleHQtPnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmll
cigpOwotICAgIH0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQogYm9vbCBBdWRpb0Nv
bnRleHQ6OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwg
ZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCkt
PmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAwNjhlYTZkYzRhZDAwZTQ4NWI0MjgzYzIx
NjUxY2NhNTY3NzY1MWRlLi4xNjMyYTg4M2ZkZjc1ZmM3NTBjZjdmMTBjODA2YTI1MjVkYTdmYjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgK
QEAgLTM1NSw3ICszNTUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBv
dmVycmlkZSB7IH0KICAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFj
a1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblByb2R1Y2VBdWRpbygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzU3VzcGVuZGVkKCkgY29u
c3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkZjAyM2ViZDRlZGRiZjY5MzQwNTcyMzY5N2FkZTliZjUzOTY4NTg5
Li5mYTg5ZWM1ZmE2ZjM3YmY5MjVlZDMyYzE4NjQ5YzNhYTkzMzFlNTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDg1LDYg
KzEwODUsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1J
bnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWlsdGlu
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1
MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdy
aXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0MTZGRDI1RjI0MEZBNEU1MDA2NjYxRDggLyogTm93UGxheWluZ0lu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkZE
MjVEMjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNzI1M0FCMTM1NEJCQkMwMDM2MEYy
QSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJv
bEVsZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgg
Ki87IH07CkBAIC03MzY3LDYgKzczNjgsNyBAQAogCQk0MTZENzU5RjIwQzY0NDEzMDBEMDJEMkMg
LyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRjaElkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSZXBv
cnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTZGRDI1RDI0MEVF
MUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTm93UGxheWluZ0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNB
OTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NzczLDYgKzI4Nzc1LDcgQEAKIAkJCQlGRDMxNjA2QjEyQjAy
NkY3MDBDMUEzNTkgLyogSFJURlBhbm5lci5oICovLAogCQkJCUZEQjE3MDAzMTRBMkJBQjIwMEEy
QjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwICovLAogCQkJCUZEQjE3MDA0MTRBMkJB
QjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCAqLywKKwkJCQk0MTZGRDI1RDI0
MEVFMUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLywKIAkJCQlGRDMxNjA2QzEyQjAy
NkY3MDBDMUEzNTkgLyogUGFubmVyLmNwcCAqLywKIAkJCQlGRDMxNjA2RDEyQjAyNkY3MDBDMUEz
NTkgLyogUGFubmVyLmggKi8sCiAJCQkJQ0RFNjY3QTExRTRCQkE0RDAwRTgxNTRBIC8qIFBsYXRm
b3JtQXVkaW9EYXRhLmggKi8sCkBAIC0zMTY2NCw2ICszMTY2Nyw3IEBACiAJCQkJN0NDMkRERkIx
RUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxRkU2REZBMTUwMDRDMkEwMDA0RUJDNCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAv
KiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2RkQyNUYyNDBGQTRFNTAw
NjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQwQjBE
N0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTI3
RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMTlC
M0IwRENBODdBQjAwNDBFM0EwIC8qIG5wZnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDUxMTRjYTIyZjAzYWMyMWZmNzUy
YTFmZDU2NjEwNjMzODQwODBkMy4uMzJhOWM1YjU0ZmJhNmY0YzZmYjFmODI4MjJiMDk3MDYxMGRl
MWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTU5Miw2ICs1
OTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7
CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogCisgICAgdWludDY0X3Qg
bWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0OworICAgIFN0cmluZyBtZWRpYVNl
c3Npb25UaXRsZSgpIGNvbnN0OworICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZp
ZXIoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hJbml0aWFsaXphdGlvbigpOwpAQCAtNzM1LDcgKzczOSw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIG1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKSBv
dmVycmlkZTsKIAotICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25z
dCBvdmVycmlkZTsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJTb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZp
ZXIoKTsgfQogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhUGxheWVyUHJlZmVycmVkQXVkaW9DaGFy
YWN0ZXJpc3RpY3MoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtODgyLDEwICs4ODUsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXN1
bWVBdXRvcGxheWluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9v
bCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOwotICAgIHVpbnQ2NF90IG1lZGlhU2Vzc2lvblVuaXF1
ZUlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKLSAgICBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBkdXJhdGlvbigpOyB9Ci0gICAgZG91YmxlIG1lZGlhU2Vzc2lv
bkN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3VycmVudFRpbWUoKTsgfQog
ICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDhiMjNmNGE4NzU5
ZDFkMmRhYjhkMzhmNTQzMjIzODU4OGU0MDdhOWMuLjQ5OGI1YTc1NWFmNzQ2ZTRlNmMxOGE3MTAy
NmNmYWMyNjhhODM0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIk5vd1BsYXlpbmdJbmZvLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlF1aXJrcy5oIgpAQCAtOTc3LDE2
ICs5NzgsMjEgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1cGRhdGVJc01haW5Db250ZW50
KCkgY29uc3QKICAgICByZXR1cm4gbV9pc01haW5Db250ZW50OwogfQogCi1ib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25zdAor
Ym9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3Bs
YXlpbmdBdWRpbygpIGNvbnN0CiB7CiAgICAgYXV0byBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50
KCkucGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmICFwYWdlLT5pc1Zpc2libGVBbmRBY3RpdmUo
KTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5hbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0
b3BsYXlpbmdBdWRpbygpOwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1Bs
YXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3QKK09wdGlvbmFsPE5vd1Bs
YXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0CiB7
Ci0gICAgYXV0byBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50KCkucGFnZSgpOwotICAgIHJldHVy
biBwYWdlICYmIHBhZ2UtPmFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlv
KCk7CisgICAgYXV0byogcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBi
b29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgPSBwYWdlICYmICFwYWdlLT5p
c1Zpc2libGVBbmRBY3RpdmUoKTsKKyAgICBib29sIGlzUGxheWluZyA9IHN0YXRlKCkgPT0gUGxh
dGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmc7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbV9lbGVt
ZW50LnN1cHBvcnRzU2Vla2luZygpID8gbV9lbGVtZW50LmR1cmF0aW9uKCkgOiBNZWRpYVBsYXll
cjo6aW52YWxpZFRpbWUoKTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgPSBzdGQ6OmlzZmluaXRl
KG1fZWxlbWVudC5jdXJyZW50VGltZSgpKSAmJiBtX2VsZW1lbnQuc3VwcG9ydHNTZWVraW5nKCkg
PyBtX2VsZW1lbnQuY3VycmVudFRpbWUoKSA6IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwor
CisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxl
KCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1
cnJlbnRUaW1lLCBtX2VsZW1lbnQuc3VwcG9ydHNTZWVraW5nKCksIG1fZWxlbWVudC5tZWRpYVNl
c3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRy
b2xzVmlzaWJpbGl0eSB9OwogfQogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
Y29uc3QgTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbiBlbnVtZXJhdGlvblZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCAxZjJkMzRmOTUzZjM1MmUw
OTUyMWI4M2QxOGUyYmQ2YzFjMjk2NjIzLi4xY2QyYzhhMGRjN2FlZWRkNzFlNzg2Njg3YzgzZWZk
MDdkYjk3ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApA
QCAtMTQ5LDcgKzE0OSw2IEBAIHB1YmxpYzoKICAgICBNb25vdG9uaWNUaW1lIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lKCkgY29uc3Q7CiAKICAgICBib29sIGFsbG93c1BsYXliYWNrQ29u
dHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd3NOb3dQbGF5
aW5nQ29udHJvbHNWaXNpYmlsaXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgYm9v
bCBpc01lZGlhRWxlbWVudFNlc3Npb25NZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpCiAgICAgewpA
QCAtMTU4LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHx8IHR5cGUgPT0gTWVkaWFU
eXBlOjpWaWRlb0F1ZGlvOwogICAgIH0KIAorICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBu
b3dQbGF5aW5nSW5mbygpIGNvbnN0IGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVkaWFTdHJhdGVneS5oCmluZGV4IDYwYTU4NDdjOGNlYzEwYjc5Yjc0OWE2ZmFmODUwM2Qx
NmExOTliOTUuLjg5NzQ1YmI4M2EyMzM2ZDQyMWUxNjcwZTg3MzBiZmI3YWM3NDY4MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIEF1ZGlvSU9D
YWxsYmFjazsKIGNsYXNzIENETUZhY3Rvcnk7CitzdHJ1Y3QgTm93UGxheWluZ0luZm87CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhU3RyYXRlZ3kgewogcHVibGljOgpAQCAtNDIsNiArNDMs
MTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3RvcjxDRE1GYWN0b3J5Kj4mKSA9IDA7CiAjZW5k
aWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3dQbGF5aW5n
SW5mbygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgTm93UGxheWluZ0luZm8mKSA9IDA7CisjZW5k
aWYKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyYXRlZ3koKSA9IGRlZmF1bHQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYThmNzU4MmUyMzYxZDVmNWVjNGU3MjUyYWQzNjk3ZjJlMTQxMjg5NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJ
bmZvLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Ry
dWN0IE5vd1BsYXlpbmdJbmZvIHsKKyAgICBTdHJpbmcgdGl0bGU7CisgICAgU3RyaW5nIHNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKKyAgICBkb3VibGUgZHVyYXRpb24geyAwIH07CisgICAg
ZG91YmxlIGN1cnJlbnRUaW1lIHsgMCB9OworICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nIHsgZmFs
c2UgfTsKKyAgICB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyIHsgMCB9OworICAgIGJvb2wgaXNQ
bGF5aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2li
aWxpdHkgeyBmYWxzZSB9OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE5vd1BsYXlpbmdJbmZvOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IHNvdXJjZUFwcGxp
Y2F0aW9uSWRlbnRpZmllciA8PCBkdXJhdGlvbiA8PCBjdXJyZW50VGltZSA8PCBzdXBwb3J0c1Nl
ZWtpbmcgPDwgdW5pcXVlSWRlbnRpZmllciA8PCBpc1BsYXlpbmcgPDwgYWxsb3dzTm93UGxheWlu
Z0NvbnRyb2xzVmlzaWJpbGl0eTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5l
IE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5nSW5mbzo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgU3RyaW5nIHRpdGxlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dGl0bGUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZUFwcGxpY2F0aW9u
SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBkb3VibGUgZHVyYXRpb247
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkdXJhdGlvbikpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBkb3VibGUgY3VycmVudFRpbWU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjdXJy
ZW50VGltZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBib29sIHN1cHBvcnRzU2Vla2lu
ZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cHBvcnRzU2Vla2luZykpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodW5pcXVlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBib29sIGlzUGxheWluZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzUGxheWluZykpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zp
c2liaWxpdHk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbGxvd3NOb3dQbGF5aW5nQ29udHJv
bHNWaXNpYmlsaXR5KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBOb3dQbGF5
aW5nSW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllciksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9ydHNTZWVraW5nLCB1bmlxdWVJZGVu
dGlmaWVyLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgfTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IDA3ODIxZTdiOGFk
NzVlYjk2MWE4ZTM3MWY3MmNmNDc2Njc5MTI2N2UuLjE4NTNhMTIxY2FiMjI3NjBmMTFmMjI5MzBk
Zjg5MjRjNzg4NTc0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTm93UGxheWluZ0luZm8uaCIKICNpbmNsdWRlICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjc1
LDI4ICsyNzYsNiBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpwcmVzZW50YXRpb25UeXBlKCkgY29uc3QKICAgICByZXR1cm4gbV9jbGllbnQu
cHJlc2VudGF0aW9uVHlwZSgpOwogfQogCi0jaWYgRU5BQkxFKFZJREVPKQotdWludDY0X3QgUGxh
dGZvcm1NZWRpYVNlc3Npb246OnVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVy
biBtX2NsaWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCk7Ci19Ci0KLVN0cmluZyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dGl0bGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVu
dC5tZWRpYVNlc3Npb25UaXRsZSgpOwotfQotCi1kb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246
OmR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uRHVy
YXRpb24oKTsKLX0KLQotZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjdXJyZW50VGltZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCk7
Ci19Ci0jZW5kaWYKLSAgICAKIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC5jYW5S
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCk7CkBAIC0zMTQsMTEgKzI5Myw2IEBAIGJvb2wg
UGxhdGZvcm1NZWRpYVNlc3Npb246OnN1cHBvcnRzU2Vla2luZygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fY2xpZW50LnN1cHBvcnRzU2Vla2luZygpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1NZWRpYVNl
c3Npb246OnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY2xpZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpOwotfQotCiBib29sIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjppc1N1c3BlbmRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xp
ZW50LmlzU3VzcGVuZGVkKCk7CkBAIC0zNjcsMjggKzM0MSw2IEBAIHZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKQogICAgIG1fbWFuYWdlci0+c2Vzc2lv
bkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKIH0KIAotI2lmIEVOQUJMRShWSURFTykKLXVpbnQ2
NF90IFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25VbmlxdWVJZGVudGlm
aWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotU3RyaW5nIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0
cmluZygpOwotfQotCi1kb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vz
c2lvbkR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmludmFsaWRU
aW1lKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNz
aW9uQ3VycmVudFRpbWUoKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxp
ZFRpbWUoKTsKLX0KLSNlbmRpZgotCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRD
aGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCkKIHsKICAgICBtX21hbmFnZXItPmNsaWVudENoYXJhY3Rl
cmlzdGljc0NoYW5nZWQoKnRoaXMpOwpAQCAtNDA5LDYgKzM2MSwxMSBAQCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjptYW5hZ2VyKCkKICAgICByZXR1
cm4gKm1fbWFuYWdlcjsKIH0KIAorT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30K
KwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9nQ2hhbm5lbCYgUGxhdGZvcm1NZWRp
YVNlc3Npb246OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKaW5kZXggYThkMThiZTRlYWJh
ZTllYzgwZmY1ZGVmNGZiN2JjYTlkYTY1NzA3YS4uZTJiMzhhMDFkMGFhNWE2NmQzNzc5MTFlZDQw
MWU1Mjg5MDc4OTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXQ7CiBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDsKIGNsYXNzIFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKIGVudW0gY2xhc3MgRGVsYXlDYWxsaW5nVXBkYXRl
Tm93UGxheWluZyB7IE5vLCBZZXMgfTsKK3N0cnVjdCBOb3dQbGF5aW5nSW5mbzsKIAogY2xhc3Mg
UGxhdGZvcm1NZWRpYVNlc3Npb24KICAgICA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQbGF0Zm9y
bU1lZGlhU2Vzc2lvbj4KQEAgLTExMywxMyArMTE0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kQnVmZmVyaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUJ1ZmZl
cmluZygpIHsgfQogICAgIAotI2lmIEVOQUJMRShWSURFTykKLSAgICB1aW50NjRfdCB1bmlxdWVJ
ZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRpdGxlKCkgY29uc3Q7Ci0gICAgZG91Ymxl
IGR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0jZW5k
aWYKLQogICAgIHR5cGVkZWYgdW5pb24gewogICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAg
fSBSZW1vdGVDb21tYW5kQXJndW1lbnQ7CkBAIC0xNzQsOCArMTY4LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgeyB9CiAgICAgU3RyaW5n
IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29s
IGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCiAgICAgYm9vbCBoYXNQbGF5ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24oKSBjb25zdCB7
IHJldHVybiBtX2hhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlvbjsgfQogICAgIHZvaWQgY2xl
YXJIYXNQbGF5ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24oKSB7IG1faGFzUGxheWVkU2luY2VMYXN0
SW50ZXJydXB0aW9uID0gZmFsc2U7IH0KIApAQCAtMTk1LDYgKzE4Nyw4IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyaW5nQXVkaW8oKSBjb25zdCA9IDA7CiAgICAgfTsK
IAorICAgIHZpcnR1YWwgT3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG5vd1BsYXlpbmdJbmZvKCkg
Y29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXImLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYpOwogICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQpAQCAtMjM1LDEzICsyMjksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1heVJl
c3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN1
c3BlbmRQbGF5YmFjaygpID0gMDsKIAotI2lmIEVOQUJMRShWSURFTykKLSAgICB2aXJ0dWFsIHVp
bnQ2NF90IG1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZG91YmxlIG1l
ZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNz
aW9uQ3VycmVudFRpbWUoKSBjb25zdDsKLSNlbmRpZgotICAgIAogICAgIHZpcnR1YWwgYm9vbCBj
YW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbW1hbmRBcmd1bWVudCopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWVr
aW5nKCkgY29uc3QgPSAwOwpAQCAtMjYxLDcgKzI0OCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgdmlydHVhbCBEb2N1bWVudElkZW50aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRlbnRpZmll
cigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTWVkaWFTdHJlYW1Tb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5o
CmluZGV4IGFiMDliNzk4NWQ3N2ZjNmE3NjBjMDRjNzc5ZWE3NzJlZWE1NzY0ZDAuLmQ3MjU3YzA2
OWZiM2U0NmU2YTI3OWYxMzVhZTY2ZjkzMjRhY2VhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5oCkBAIC0zNSw2ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0
IE5vd1BsYXlpbmdJbmZvOworCiBjbGFzcyBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EKICAgICA6
IHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIKICAgICAsIHByaXZhdGUgUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50CkBAIC01NSw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICBib29s
IHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uOyB9CiAgICAgdm9pZCBwcmVwYXJl
VG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoKSBmaW5hbDsKIAorICAgIHN0YXRpYyBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICBzdGF0aWMgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBzY2hlZHVsZVVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVO
b3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGViMTlh
OWJmOWMwMzM4YWFhYjNlNzhmYjM2OGIwNzcyNjVlMWQxZDguLjVkMjRkNWNkYjNhZDcxMTAyMDZm
M2M5MTcwMzlmYTliZmVjMGNjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAg
LTMzLDcgKzMzLDEwIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1lZGlhU3Ry
YXRlZ3kuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
IApAQCAtMjA0LDggKzIwNyw3MyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2Vz
c2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKQogICAgIHNjaGVkdWxlVXBkYXRlTm93UGxheWlu
Z0luZm8oKTsKIH0KIAordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxh
eWluZ0luZm8oKQoreworICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVT
ZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKQorICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ1Zpc2liaWxpdHkoTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIE1STm93UGxheWlu
Z0NsaWVudFZpc2liaWxpdHlOZXZlclZpc2libGUpOworCisgICAgTVJNZWRpYVJlbW90ZVNldENh
bkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKGZhbHNlKTsKKyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93
UGxheWluZ0luZm8obnVsbHB0cik7CisgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBs
aWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2lu
KCksIGtNUlBsYXliYWNrU3RhdGVTdG9wcGVkLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
KE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgeworI2lmIExPR19ESVNBQkxFRAorICAgICAgICBV
TlVTRURfUEFSQU0oZXJyb3IpOworI2Vsc2UKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxh
eWJhY2tTdGF0ZUZvck9yaWdpbihzdG9wcGVkKSBmYWlsZWQgd2l0aCBlcnJvciAiLCBlcnJvcik7
CisjZW5kaWYKKyAgICB9KTsKK30KKwordm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNl
dE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5v
d1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykKK3sKKyAgICBpZiAoc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24pCisgICAgICAgIE1STWVkaWFSZW1vdGVTZXRDYW5CZU5vd1BsYXlpbmdBcHBs
aWNhdGlvbih0cnVlKTsKKworICAgIGF1dG8gaW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAgICBpZiAo
IW5vd1BsYXlpbmdJbmZvLnRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCBub3dQ
bGF5aW5nSW5mby50aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKworICAgIGlmIChzdGQ6
OmlzZmluaXRlKG5vd1BsYXlpbmdJbmZvLmR1cmF0aW9uKSAmJiBub3dQbGF5aW5nSW5mby5kdXJh
dGlvbiAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkgeworICAgICAgICBhdXRvIGNmRHVy
YXRpb24gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5kdXJhdGlvbikpOworICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
RHVyYXRpb24sIGNmRHVyYXRpb24uZ2V0KCkpOworICAgIH0KKworICAgIGRvdWJsZSByYXRlID0g
IG5vd1BsYXlpbmdJbmZvLmlzUGxheWluZyA/IDEgOiAwOworICAgIGF1dG8gY2ZSYXRlID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVU
eXBlLCAmcmF0ZSkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9QbGF5YmFja1JhdGUsIGNmUmF0ZS5nZXQoKSk7CisKKyAg
ICBhdXRvIGxhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyID0gbm93UGxh
eWluZ0luZm8udW5pcXVlSWRlbnRpZmllcjsKKyAgICBhdXRvIGNmSWRlbnRpZmllciA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyTG9uZ0xvbmdU
eXBlLCAmbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvVW5pcXVlSWRlbnRpZmllciwgY2ZJZGVudGlmaWVyLmdldCgpKTsKKworICAgIGlmIChzdGQ6
OmlzZmluaXRlKG5vd1BsYXlpbmdJbmZvLmN1cnJlbnRUaW1lKSAmJiBub3dQbGF5aW5nSW5mby5j
dXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSAmJiBub3dQbGF5aW5nSW5m
by5zdXBwb3J0c1NlZWtpbmcpIHsKKyAgICAgICAgYXV0byBjZkN1cnJlbnRUaW1lID0gYWRvcHRD
RihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBl
LCAmbm93UGxheWluZ0luZm8uY3VycmVudFRpbWUpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1l
LCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAoY2FuTG9hZF9NZWRpYVJl
bW90ZV9NUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24oKSAmJiAhbm93UGxheWluZ0lu
Zm8uc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgTVJNZWRp
YVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigp
LCBub3dQbGF5aW5nSW5mby5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CisKKyAgICBNUlBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSA9IChub3dQ
bGF5aW5nSW5mby5pc1BsYXlpbmcpID8ga01SUGxheWJhY2tTdGF0ZVBsYXlpbmcgOiBrTVJQbGF5
YmFja1N0YXRlUGF1c2VkOworICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRp
b25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBw
bGF5YmFja1N0YXRlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVF
cnJvciBlcnJvcikgeworI2lmIExPR19ESVNBQkxFRAorICAgICAgICBVTlVTRURfUEFSQU0oZXJy
b3IpOworI2Vsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihwbGF5aW5nKSBmYWlsZWQgd2l0
aCBlcnJvciAiLCBlcnJvcik7CisjZW5kaWYKKyAgICB9KTsKKyAgICBNUk1lZGlhUmVtb3RlU2V0
Tm93UGxheWluZ0luZm8oaW5mby5nZXQoKSk7CisKKyAgICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90
ZV9NUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoKSkgeworICAgICAgICBNUk5v
d1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5IHZpc2liaWxpdHkgPSBub3dQbGF5aW5nSW5mby5hbGxv
d3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5ID8gTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJp
bGl0eUFsd2F5c1Zpc2libGUgOiBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5TmV2ZXJWaXNp
YmxlOworICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoTVJNZWRp
YVJlbW90ZUdldExvY2FsT3JpZ2luKCksIHZpc2liaWxpdHkpOworICAgIH0KK30KKwogUGxhdGZv
cm1NZWRpYVNlc3Npb24qIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdp
YmxlU2Vzc2lvbigpCiB7CisgICAgLy8gRklYTUU6IEZpeCB0aGlzIGxheWVyaW5nIHZpb2xhdGlv
bi4KICAgICBpZiAoYXV0byBlbGVtZW50ID0gSFRNTE1lZGlhRWxlbWVudDo6YmVzdE1lZGlhRWxl
bWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihNZWRpYUVsZW1lbnRTZXNzaW9u
OjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Tm93UGxheWluZykpCiAgICAgICAgIHJldHVybiAm
ZWxlbWVudC0+bWVkaWFTZXNzaW9uKCk7CiAKQEAgLTIyMCw5NCArMjg4LDQ4IEBAIHZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5aW5nSW5mbygpCiAKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
KiBjdXJyZW50U2Vzc2lvbiA9IHRoaXMtPm5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKTsKLQot
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImN1cnJlbnRTZXNzaW9uOiAiLCBjdXJyZW50
U2Vzc2lvbiA/IGN1cnJlbnRTZXNzaW9uLT5sb2dJZGVudGlmaWVyKCkgOiBudWxscHRyKTsKLQot
ICAgIGlmICghY3VycmVudFNlc3Npb24pIHsKLSAgICAgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1v
dGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpCi0gICAgICAgICAgICBN
Uk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoTVJNZWRpYVJlbW90ZUdldExvY2Fs
T3JpZ2luKCksIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHlOZXZlclZpc2libGUpOworICAg
IE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbzsKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKSkKKyAgICAgICAgbm93UGxheWlu
Z0luZm8gPSBzZXNzaW9uLT5ub3dQbGF5aW5nSW5mbygpOwogCisgICAgaWYgKCFub3dQbGF5aW5n
SW5mbykgewogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJjbGVhcmluZyBub3cg
cGxheWluZyBpbmZvIik7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0
ZWd5KCkuY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogCi0gICAgICAgIE1STWVkaWFSZW1vdGVTZXRD
YW5CZU5vd1BsYXlpbmdBcHBsaWNhdGlvbihmYWxzZSk7CiAgICAgICAgIG1fcmVnaXN0ZXJlZEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uID0gZmFsc2U7Ci0KLSAgICAgICAgTVJNZWRpYVJlbW90ZVNl
dE5vd1BsYXlpbmdJbmZvKG51bGxwdHIpOwogICAgICAgICBtX25vd1BsYXlpbmdBY3RpdmUgPSBm
YWxzZTsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IGVtcHR5U3RyaW5n
KCk7CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24gPSBOQU47CiAgICAg
ICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRWxhcHNlZFRpbWUgPSBOQU47CiAgICAgICAgIG1f
bGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSAwOwotICAgICAgICBN
Uk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdp
bihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwga01SUGxheWJhY2tTdGF0ZVN0b3BwZWQs
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7
Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotI2Vs
c2UKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJh
Y2tTdGF0ZUZvck9yaWdpbihzdG9wcGVkKSBmYWlsZWQgd2l0aCBlcnJvciAiLCBlcnJvcik7Ci0j
ZW5kaWYKLSAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIiLCBub3dQbGF5aW5nSW5mby0+dGl0bGUs
ICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0luZm8tPmlzUGxheWluZywgIiwgZHVyYXRp
b24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24sICIsIG5vdyA9ICIsIG5vd1BsYXlpbmdJ
bmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQbGF5aW5nSW5mby0+dW5pcXVlSWRlbnRp
ZmllciwgIiwgcmVnaXN0ZXJlZCA9ICIsIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0
aW9uKTsKKworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuc2V0Tm93
UGxheWluZ0luZm8oIW1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCAqbm93UGxh
eWluZ0luZm8pOworCiAgICAgaWYgKCFtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
bikgewogICAgICAgICBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiA9IHRydWU7
CiAgICAgICAgIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Q2FuQmVOb3dQbGF5aW5nQXBwbGljYXRpb24odHJ1ZSk7
CiAgICAgfQogCi0gICAgU3RyaW5nIHRpdGxlID0gY3VycmVudFNlc3Npb24tPnRpdGxlKCk7Ci0g
ICAgZG91YmxlIGR1cmF0aW9uID0gY3VycmVudFNlc3Npb24tPnN1cHBvcnRzU2Vla2luZygpID8g
Y3VycmVudFNlc3Npb24tPmR1cmF0aW9uKCkgOiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsK
LSAgICBkb3VibGUgcmF0ZSA9IGN1cnJlbnRTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQbGF5aW5nID8gMSA6IDA7Ci0gICAgYXV0byBpbmZvID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDQsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
KyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLT50aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIG1fbGFz
dFVwZGF0ZWROb3dQbGF5aW5nVGl0bGUgPSBub3dQbGF5aW5nSW5mby0+dGl0bGU7CiAKLSAgICBp
ZiAoIXRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZv
LmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIHRpdGxlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwotICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ1RpdGxlID0g
dGl0bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0ZDo6aXNmaW5pdGUoZHVyYXRpb24pICYmIGR1cmF0
aW9uICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7Ci0gICAgICAgIGF1dG8gY2ZEdXJh
dGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJmR1cmF0aW9uKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbiwgY2ZEdXJh
dGlvbi5nZXQoKSk7CisgICAgZG91YmxlIGR1cmF0aW9uID0gbm93UGxheWluZ0luZm8tPmR1cmF0
aW9uOworICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSAmJiBkdXJhdGlvbiAhPSBNZWRp
YVBsYXllcjo6aW52YWxpZFRpbWUoKSkKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdE
dXJhdGlvbiA9IGR1cmF0aW9uOwotICAgIH0KIAotICAgIGF1dG8gY2ZSYXRlID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAm
cmF0ZSkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVt
b3RlTm93UGxheWluZ0luZm9QbGF5YmFja1JhdGUsIGNmUmF0ZS5nZXQoKSk7CisgICAgbV9sYXN0
VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciA9IG5vd1BsYXlpbmdJbmZvLT51
bmlxdWVJZGVudGlmaWVyOwogCi0gICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVl
SWRlbnRpZmllciA9IGN1cnJlbnRTZXNzaW9uLT51bmlxdWVJZGVudGlmaWVyKCk7Ci0gICAgYXV0
byBjZklkZW50aWZpZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlckxvbmdMb25nVHlwZSwgJm1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1Vu
aXF1ZUlkZW50aWZpZXIpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciwgY2ZJZGVudGlmaWVy
LmdldCgpKTsKLQotICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IGN1cnJlbnRTZXNzaW9uLT5jdXJy
ZW50VGltZSgpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSAmJiBjdXJyZW50
VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSAmJiBjdXJyZW50U2Vzc2lvbi0+c3Vw
cG9ydHNTZWVraW5nKCkpIHsKLSAgICAgICAgYXV0byBjZkN1cnJlbnRUaW1lID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAm
Y3VycmVudFRpbWUpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwg
a01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdl
dCgpKTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgPSBub3dQbGF5aW5nSW5mby0+Y3VycmVudFRp
bWU7CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpICYmIGN1cnJlbnRUaW1lICE9
IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpICYmIG5vd1BsYXlpbmdJbmZvLT5zdXBwb3J0c1Nl
ZWtpbmcpCiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRWxhcHNlZFRpbWUgPSBjdXJy
ZW50VGltZTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ0aXRsZSA9
IFwiIiwgdGl0bGUsICJcIiwgcmF0ZSA9ICIsIHJhdGUsICIsIGR1cmF0aW9uID0gIiwgZHVyYXRp
b24sICIsIG5vdyA9ICIsIGN1cnJlbnRUaW1lKTsKIAotICAgIFN0cmluZyBwYXJlbnRBcHBsaWNh
dGlvbiA9IGN1cnJlbnRTZXNzaW9uLT5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKTsKLSAg
ICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRp
b24oKSAmJiAhcGFyZW50QXBwbGljYXRpb24uaXNFbXB0eSgpKQotICAgICAgICBNUk1lZGlhUmVt
b3RlU2V0UGFyZW50QXBwbGljYXRpb24oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIHBh
cmVudEFwcGxpY2F0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotCi0gICAgbV9ub3dQbGF5
aW5nQWN0aXZlID0gY3VycmVudFNlc3Npb24tPmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2li
aWxpdHkoKTsKLSAgICBNUlBsYXliYWNrU3RhdGUgcGxheWJhY2tTdGF0ZSA9IChjdXJyZW50U2Vz
c2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZykgPyBrTVJQbGF5
YmFja1N0YXRlUGxheWluZyA6IGtNUlBsYXliYWNrU3RhdGVQYXVzZWQ7Ci0gICAgTVJNZWRpYVJl
bW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oTVJNZWRp
YVJlbW90ZUdldExvY2FsT3JpZ2luKCksIHBsYXliYWNrU3RhdGUsIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7Ci0jaWYgTE9HX0RJU0FCTEVE
Ci0gICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxzZQotICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxh
eWJhY2tTdGF0ZUZvck9yaWdpbihwbGF5aW5nKSBmYWlsZWQgd2l0aCBlcnJvciAiLCBlcnJvcik7
Ci0jZW5kaWYKLSAgICB9KTsKLSAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luZm8oaW5m
by5nZXQoKSk7CisgICAgbV9ub3dQbGF5aW5nQWN0aXZlID0gbm93UGxheWluZ0luZm8tPmFsbG93
c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHk7CiAKLSAgICBpZiAoY2FuTG9hZF9NZWRpYVJl
bW90ZV9NUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoKSkgewotICAgICAgICBN
Uk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5IHZpc2liaWxpdHkgPSBjdXJyZW50U2Vzc2lvbi0+
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSgpID8gTVJOb3dQbGF5aW5nQ2xpZW50
VmlzaWJpbGl0eUFsd2F5c1Zpc2libGUgOiBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5TmV2
ZXJWaXNpYmxlOwotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHko
TVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIHZpc2liaWxpdHkpOwotICAgIH0KICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAjZW5kaWYgLy8gVVNFKE1FRElBUkVNT1RFKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDZhMmM4NzBmN2FhYTFiMGRiMDAwZWY4ODgyN2M5YTBmNjFkY2YyNWIu
LmUwMzM0NmM0NWVhYzAxZWFiM2Q2ZDAwNjZhODc0OWMzZTAxZjc1ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTYxLDYgKzYxLDEwIEBACiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxXZWJD
b3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIApAQCAtMjEzLDYgKzIxNywxOCBAQCB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0K
IAorI2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
bGVhck5vd1BsYXlpbmdJbmZvKCkKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNs
ZWFyTm93UGxheWluZ0luZm8oKTsKK30KKwordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25z
dCBOb3dQbGF5aW5nSW5mbyYgbm93UGxheWluZ0luZm8pCit7CisgICAgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwg
bm93UGxheWluZ0luZm8pOworfQorI2VuZGlmCisKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNzQ3MTVjODBjNTQ1YmVhZmVjM2Y2YjdlMDk4NGVj
YTUwY2JhMjY2OS4uZTRjOTEyNTU5ZmY5NjA0NWUwMDRiMGUwZTlkMzJiZjMwYTQwYzQwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCkBAIC0xMDMsNiArMTAzLDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGNy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZv
aWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAg
IHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwg
Y29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mKTsKKyNlbmRpZgogCiAgICAgLy8gSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5MzJjMDEyMmRlMDgxZWRlOWJi
OWVmYjU2ZjliYzUyNTliYTRkNzA0Li44ZDkxY2UyYmNkYmRhZWNmYzI1NzEwM2NkYWNlNjk2NTRj
YzQ4ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsMTAgQEAK
IG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3Nh
Z2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVs
ZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lk
IENsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB2b2lkIFNldE5vd1BsYXlpbmdJbmZvKGJvb2wg
c2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5m
byBub3dQbGF5aW5nSW5mbyk7CisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBjOWQyZWU0NDViZDVlNmE5NGFhNDhkNThiOWUw
NDIxM2JjNWFmMmUwLi4yNjJhNGJkODllMjk3OWRkNDczN2Q4NWM0NTAzZjZkNmNiZjM0ZGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCkBAIC02NzQsNiArNjc0LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSgpCiAgICAgbV9jYWNoZWRTdGF0ZS5yZWFkeVN0
YXRlID0gbV9wbGF5ZXItPnJlYWR5U3RhdGUoKTsKICAgICBtX2NhY2hlZFN0YXRlLnBhdXNlZCA9
IG1fcGxheWVyLT5wYXVzZWQoKTsKICAgICBtX2NhY2hlZFN0YXRlLmxvYWRpbmdQcm9ncmVzc2Vk
ID0gbV9wbGF5ZXItPmRpZExvYWRpbmdQcm9ncmVzcygpOworICAgIG1fY2FjaGVkU3RhdGUuaGFz
QXVkaW8gPSBtX3BsYXllci0+aGFzQXVkaW8oKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkQ2hhbmdl
ZCkgewogICAgICAgICBtX2J1ZmZlcmVkQ2hhbmdlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKaW5k
ZXggMmFhZTVlNTQ0NTEwODQ3OWJkM2NkMzM5YWZhNmJmNmQyZGRhYmNmNi4uNTllMDBhZTVmZGY2
YjU0YzczMTk3N2QxYTllMmU2MTNjMDZmZTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCkBAIC0zMSw2ICsz
MSwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nSW5mby5oPgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KKyNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTUsNCArNjAsMzAgQEAgdm9pZCBXZWJN
ZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8V2ViQ29yZTo6Q0RNRmFj
dG9yeSo+JiBmYWN0b3IKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdl
Yk1lZGlhU3RyYXRlZ3k6OmNsZWFyTm93UGxheWluZ0luZm8oKQoreworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIGF1dG8mIGNvbm5l
Y3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhck5vd1BsYXlpbmdJbmZvIHsgfSwgMCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6
OmNsZWFyTm93UGxheWluZ0luZm8oKTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpzZXRO
b3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJD
b3JlOjpOb3dQbGF5aW5nSW5mbyYgbm93UGxheWluZ0luZm8pCit7CisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorICAgIGlmIChtX3VzZUdQVVByb2Nlc3MpIHsKKyAgICAgICAgYXV0byYgY29ubmVj
dGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldE5vd1BsYXlpbmdJbmZvIHsgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvIH0sIDApOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCisgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5m
byhzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgbm93UGxheWluZ0luZm8pOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAppbmRleCA0ZmFiMGU5NDRmYzE0ZTY4
NDM3OWUzMDA4MTYzYmUxNjJkZDg5YjRkLi42ZGVmZTNiMTU0OWM0NGQ0NWZhNDFlNTk1MjYzZjRi
N2UwNzFjMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1dlYk1lZGlhU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaApAQCAtNDUsNiArNDUsMTAgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVj
dG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpIG92ZXJyaWRlOwogI2VuZGlmCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCkgZmluYWw7CisgICAgdm9p
ZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25z
dCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYpIGZpbmFsOworI2VuZGlmCiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3MgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGI5MDllY2M0MzliY2QzYzZmNmRhODA0MWM2ZWYy
OTNmZjM0NjY5NmYuLjczMTllNjhkNTdkZDhiZWU1MzMxMzMxNGM2MjgwZGVlZjdjMjkyYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTdHJhdGVneS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2Fy
ZEl0ZW1JbmZvLmg+CkBAIC04MCw2ICs4MSwxNSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMp
OwogICAgIH0KICNlbmRpZgorICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpIGZpbmFsCisg
ICAgeworICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0lu
Zm8oKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykg
ZmluYWwKKyAgICB7CisgICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxh
eWluZ0luZm8oc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvKTsKKyAg
ICB9CiB9OwogCiBNZWRpYVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZU1l
ZGlhU3RyYXRlZ3koKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392409</attachid>
            <date>2020-03-04 06:44:18 -0800</date>
            <delta_ts>2020-03-05 02:24:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208568-20200304154415.patch</filename>
            <type>text/plain</type>
            <size>44267</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBlNmFhMmQzMDliZTYz
NTBiYzJjNGFlZGI1NjhjODliMzJmMWMwZi4uYTRkNzMzYWM3MWI5OTg4MWU3MzNkZTU2YTEzNzBh
NmQ1NTMzM2EzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZWQgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQgTm93UGxheWluZyBnZXR0ZXJz
IHNpbmNlIG9ubHkgSFRNTE1lZGlhRWxlbWVudCBpcyBlbGlnaWJsZS4KKyAgICAgICAgTGV0IE1l
ZGlhRWxlbWVudFNlc3Npb24gZ2VuZXJhdGVzIGl0cyBvd24gTm93UGxheWluZ0luZm8gd2hlbiBy
ZXF1ZXN0ZWQgYnkgdGhlIHNlc3Npb24gbWFuYWdlci4KKyAgICAgICAgVXNlIHBsYXRmb3JtIHN0
cmF0ZWdpZXMgdG8gYWJzdHJhY3Qgb3V0IGhvdyB0byBleGVjdXRlIE5vd1BsYXlpbmcgb3JkZXJz
LgorCisgICAgICAgIE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6
YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8gY29uc3QpOgor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L01lZGlhU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm93UGxheWluZ0luZm86OmRlY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246Om5vd1BsYXlpbmdJbmZvIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAg
ICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbik6
CisgICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZv
KToKKwogMjAyMC0wMy0wMiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0NDcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZGJlOTVkYzJkMjJlMTkwZTdjMTViZWVkMmFiMjgyZGRjYWZlYjgzYy4uNmQzYWRjZGNhMzQ2
Yzk2MmE1NGI2ZDVhODJhYmJmYmM0YTI1N2M4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAyMC0wMy0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
RXhwb3J0IE5vd1BsYXlpbmcgY29tbWFuZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlp
bmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgTm93UGxheWluZyBvcmRlcnMgdG8gR1BVIHByb2Nl
c3MgdGhyb3VnaCBJUEMgaWYgR1BVUHJvY2VzcyBpcyB0dXJuZWQgb24uCisgICAgICAgIE90aGVy
d2lzZSB1c2UgdGhlIHJlZ3VsYXIgaW4gcHJvY2VzcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
TWFrZSBzdXJlIHRvIHN5bmMgdGhlIGhhc0F1ZGlvIHN0YXRlIHNvIHRoYXQgaXQgZ2V0cyBzZXQg
cHJvcGVybHkgaW4gV2ViUHJvY2Vzcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8pOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OnVwZGF0ZUNhY2hlZFN0YXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFTdHJhdGVneTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyYXRlZ3k6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5Lmg6CisKIDIwMjAtMDMtMDMgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBVU0UoR1BVX1BST0NF
U1MpIHRvIEVOQUJMRShHUFVfUFJPQ0VTU19GT1JfV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDg4NmRkZWE1ZjZmMDMyZTlhODgyNmVmMWRiNjAwNzRiYjY5NzcwZDIuLjY4
ZTdmZWVhYmU2M2E1MDYxMTZiODdhNmU3YjVmZWUwN2YzNjU4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0wNCAgeW91ZW5uIGZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3J0IE5vd1BsYXlpbmcgY29tbWFuZHMg
dG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlpbmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFibGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaW4t
cHJvY2VzcyBub3cgcGxheWluZyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAyMC0wMy0wMiAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSXRlbXMg
aW4gdGhlIHRvb2xiYXIgdGFrZSB1cCB0byBtdWNoIHZlcnRpY2FsIHNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCBkYmFhMWQ3YzA2NGE4Y2Q2ZTkzYTQzYmU1YWUyNjIwZTVkMjk2ODI2Li44ZDg3
YTZmZDk5ZGI3ZDNhNTM5MGE0NTFiNWEyYmE5ZDIyZDIxNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
QEAgLTEwMzEsNiArMTAzMSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAogICAgIHBsYXRmb3JtL2F1ZGlv
L0F1ZGlvU291cmNlUHJvdmlkZXIuaAogICAgIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24uaAorICAgIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKICAgICBwbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAogICAgIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggZDQ3MDBhNjk1MDViMTYyYWJlYWMzM2FjOTI4ODJiMWRlNzAzMWU0Mi4u
NGEyZTE3YjAwNzFjZmM3Zjc3ZWY3MjZmZjJjZTVlZDdmYmUzZGIwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMzczLDE2ICsz
NzMsNiBAQCBEb2N1bWVudElkZW50aWZpZXIgQXVkaW9Db250ZXh0Ojpob3N0aW5nRG9jdW1lbnRJ
ZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRp
ZmllcigpIDogRG9jdW1lbnRJZGVudGlmaWVyIHsgfTsKIH0KIAotU3RyaW5nIEF1ZGlvQ29udGV4
dDo6c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCA/IGRvY3VtZW50LT5mcmFtZSgpIDogbnVsbHB0cikgewotICAgICAgICBpZiAoTmV0d29y
a2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0ID0gZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtp
bmdDb250ZXh0KCkpCi0gICAgICAgICAgICByZXR1cm4gbmV0d29ya2luZ0NvbnRleHQtPnNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpOwotICAgIH0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKLX0KLQogYm9vbCBBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAwNjhl
YTZkYzRhZDAwZTQ4NWI0MjgzYzIxNjUxY2NhNTY3NzY1MWRlLi4xNjMyYTg4M2ZkZjc1ZmM3NTBj
ZjdmMTBjODA2YTI1MjVkYTdmYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTM1NSw3ICszNTUsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1v
dGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KICAgICBib29sIHN1cHBvcnRzU2Vla2lu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRPdmVy
cmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJ
bnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIFN0
cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBi
b29sIGlzU3VzcGVuZGVkKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZjAyM2ViZDRlZGRiZjY5MzQw
NTcyMzY5N2FkZTliZjUzOTY4NTg5Li5mYTg5ZWM1ZmE2ZjM3YmY5MjVlZDMyYzE4NjQ5YzNhYTkz
MzFlNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDg1LDYgKzEwODUsNyBAQAogCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYw
NTMgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU5IC8q
IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyog
UmVhZGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDYx
QkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTZGRDI1RjI0MEZBNEU1MDA2
NjYxRDggLyogTm93UGxheWluZ0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkZEMjVEMjQwRUUxQUUwMDY2NjFEOCAvKiBOb3dQbGF5aW5nSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
NzI1M0FCMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTkxMzU0QkJCQzAw
MzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi87IH07CiAJCTQxNzYxMkFGMUUzQTk5
NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFCMUUzQTk5M0IwMEMzRDgxRCAv
KiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNDE3NjEyQjAxRTNBOTk0MDAw
QzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmggKi87IH07CkBAIC03MzY3LDYgKzczNjgsNyBAQAogCQk0MTZE
NzU5RjIwQzY0NDEzMDBEMDJEMkMgLyogTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUwQjM3MjA5QkMzQzIwMDRBOTVEOSAvKiBGZXRj
aElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hJZGVu
dGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkUyOUE1MTAyRkE5NjIw
MDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrZXJSZXBvcnRpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTZGRDI1RDI0MEVFMUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm93UGxheWluZ0luZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3Jh
cHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdyYXBw
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTcyNTNBODEzNTRCQkJDMDAz
NjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sRWxl
bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NzczLDYgKzI4Nzc1LDcg
QEAKIAkJCQlGRDMxNjA2QjEyQjAyNkY3MDBDMUEzNTkgLyogSFJURlBhbm5lci5oICovLAogCQkJ
CUZEQjE3MDAzMTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwICov
LAogCQkJCUZEQjE3MDA0MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5uZWxSZXNhbXBsZXIu
aCAqLywKKwkJCQk0MTZGRDI1RDI0MEVFMUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAq
LywKIAkJCQlGRDMxNjA2QzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmNwcCAqLywKIAkJCQlG
RDMxNjA2RDEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggKi8sCiAJCQkJQ0RFNjY3QTExRTRC
QkE0RDAwRTgxNTRBIC8qIFBsYXRmb3JtQXVkaW9EYXRhLmggKi8sCkBAIC0zMTY2NCw2ICszMTY2
Nyw3IEBACiAJCQkJN0NDMkRERkIxRUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNhdGlvblBlcm1p
c3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRkU2REZBMTUwMDRDMkEwMDA0RUJDNCAvKiBO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk4RUIx
Rjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE2RkQyNUYyNDBGQTRFNTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTU2OUQwQjBEN0UyQjgyMDA3QzM5ODMgLyogTlBfanNvYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOTI3RkQyMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEyMTlCM0IwRENBODdBQjAwNDBFM0EwIC8qIG5wZnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
ZDUxMTRjYTIyZjAzYWMyMWZmNzUyYTFmZDU2NjEwNjMzODQwODBkMy4uMzJhOWM1YjU0ZmJhNmY0
YzZmYjFmODI4MjJiMDk3MDYxMGRlMWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTU5Miw2ICs1OTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSgpOwogCisgICAgdWludDY0X3QgbWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0
OworICAgIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0OworICAgIFN0cmluZyBzb3Vy
Y2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hJbml0aWFsaXphdGlvbigpOwpAQCAt
NzM1LDcgKzczOSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1lZGlhUGxheWVyQWN0aXZlU291
cmNlQnVmZmVyc0NoYW5nZWQoKSBvdmVycmlkZTsKIAotICAgIFN0cmluZyBzb3VyY2VBcHBsaWNh
dGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgbWVkaWFQbGF5ZXJT
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzb3Vy
Y2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKTsgfQogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhUGxh
eWVyUHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKSBjb25zdCBvdmVycmlkZTsKIApAQCAt
ODgyLDEwICs4ODUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXN1bWVBdXRvcGxheWluZygpIG92ZXJyaWRlOwogICAgIHZvaWQg
bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOwotICAgIHVpbnQ2
NF90IG1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKLSAgICBTdHJp
bmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBkb3VibGUgbWVkaWFT
ZXNzaW9uRHVyYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkdXJhdGlvbigpOyB9Ci0g
ICAgZG91YmxlIG1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gY3VycmVudFRpbWUoKTsgfQogICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFy
Z3VtZW50Kikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5
YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwCmluZGV4IDhiMjNmNGE4NzU5ZDFkMmRhYjhkMzhmNTQzMjIzODU4OGU0MDdhOWMuLjQ5OGI1
YTc1NWFmNzQ2ZTRlNmMxOGE3MTAyNmNmYWMyNjhhODM0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vd1BsYXlpbmdJbmZvLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IlF1aXJrcy5oIgpAQCAtOTc3LDE2ICs5NzgsMjEgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9u
Ojp1cGRhdGVJc01haW5Db250ZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pc01haW5Db250ZW50
OwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c05vd1BsYXlpbmdDb250cm9s
c1Zpc2liaWxpdHkoKSBjb25zdAorYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5
YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpIGNvbnN0CiB7CiAgICAgYXV0byBwYWdl
ID0gbV9lbGVtZW50LmRvY3VtZW50KCkucGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmICFwYWdl
LT5pc1Zpc2libGVBbmRBY3RpdmUoKTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5hbGxvd3NQ
bGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpOwogfQogCi1ib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OmFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkg
Y29uc3QKK09wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQ
bGF5aW5nSW5mbygpIGNvbnN0CiB7Ci0gICAgYXV0byBwYWdlID0gbV9lbGVtZW50LmRvY3VtZW50
KCkucGFnZSgpOwotICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1BsYXliYWNrQ29udHJv
bHNGb3JBdXRvcGxheWluZ0F1ZGlvKCk7CisgICAgYXV0byogcGFnZSA9IG1fZWxlbWVudC5kb2N1
bWVudCgpLnBhZ2UoKTsKKyAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxp
dHkgPSBwYWdlICYmICFwYWdlLT5pc1Zpc2libGVBbmRBY3RpdmUoKTsKKyAgICBib29sIGlzUGxh
eWluZyA9IHN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmc7CisgICAgZG91
YmxlIGR1cmF0aW9uID0gbV9lbGVtZW50LnN1cHBvcnRzU2Vla2luZygpID8gbV9lbGVtZW50LmR1
cmF0aW9uKCkgOiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKKyAgICBkb3VibGUgY3VycmVu
dFRpbWUgPSBzdGQ6OmlzZmluaXRlKG1fZWxlbWVudC5jdXJyZW50VGltZSgpKSAmJiBtX2VsZW1l
bnQuc3VwcG9ydHNTZWVraW5nKCkgPyBtX2VsZW1lbnQuY3VycmVudFRpbWUoKSA6IE1lZGlhUGxh
eWVyOjppbnZhbGlkVGltZSgpOworCisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVt
ZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCksIG1fZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBtX2VsZW1lbnQuc3VwcG9ydHNTZWVraW5n
KCksIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiBTdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoY29uc3QgTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbiBlbnVt
ZXJhdGlvblZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApp
bmRleCAxZjJkMzRmOTUzZjM1MmUwOTUyMWI4M2QxOGUyYmQ2YzFjMjk2NjIzLi4xY2QyYzhhMGRj
N2FlZWRkNzFlNzg2Njg3YzgzZWZkMDdkYjk3ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMTQ5LDcgKzE0OSw2IEBAIHB1YmxpYzoKICAgICBNb25v
dG9uaWNUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKCkgY29uc3Q7CiAKICAgICBi
b29sIGFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3Q7Ci0g
ICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBzdGF0aWMgYm9vbCBpc01lZGlhRWxlbWVudFNlc3Npb25NZWRpYVR5cGUoTWVk
aWFUeXBlIHR5cGUpCiAgICAgewpAQCAtMTU4LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHx8IHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlb0F1ZGlvOwogICAgIH0KIAorICAgIE9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbygpIGNvbnN0IGZpbmFsOworCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCmluZGV4IDYwYTU4NDdjOGNl
YzEwYjc5Yjc0OWE2ZmFmODUwM2QxNmExOTliOTUuLjg5NzQ1YmI4M2EyMzM2ZDQyMWUxNjcwZTg3
MzBiZmI3YWM3NDY4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlh
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgK
QEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9EZXN0aW5h
dGlvbjsKIGNsYXNzIEF1ZGlvSU9DYWxsYmFjazsKIGNsYXNzIENETUZhY3Rvcnk7CitzdHJ1Y3Qg
Tm93UGxheWluZ0luZm87CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhU3RyYXRlZ3kgewog
cHVibGljOgpAQCAtNDIsNiArNDMsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3RvcjxDRE1G
YWN0b3J5Kj4mKSA9IDA7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm93
UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgTm93UGxh
eWluZ0luZm8mKSA9IDA7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlh
U3RyYXRlZ3koKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThmNzU4MmUyMzYxZDVmNWVjNGU3MjUy
YWQzNjk3ZjJlMTQxMjg5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IE5vd1BsYXlpbmdJbmZvIHsKKyAgICBTdHJpbmcgdGl0
bGU7CisgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKKyAgICBkb3VibGUg
ZHVyYXRpb24geyAwIH07CisgICAgZG91YmxlIGN1cnJlbnRUaW1lIHsgMCB9OworICAgIGJvb2wg
c3VwcG9ydHNTZWVraW5nIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVy
IHsgMCB9OworICAgIGJvb2wgaXNQbGF5aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIGFsbG93c05v
d1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkgeyBmYWxzZSB9OworCisgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gZGVjb2RlKERlY29k
ZXImKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE5vd1BsYXlp
bmdJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IHRpdGxlIDw8IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllciA8PCBkdXJhdGlvbiA8PCBjdXJy
ZW50VGltZSA8PCBzdXBwb3J0c1NlZWtpbmcgPDwgdW5pcXVlSWRlbnRpZmllciA8PCBpc1BsYXlp
bmcgPDwgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBOb3dQbGF5aW5n
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIHRpdGxlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodGl0bGUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
U3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBkb3VibGUgZHVyYXRpb247CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkdXJhdGlvbikp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBkb3VibGUgY3VycmVudFRpbWU7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjdXJyZW50VGltZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBib29sIHN1cHBvcnRzU2Vla2luZzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cHBvcnRz
U2Vla2luZykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICB1aW50NjRfdCB1bmlxdWVJZGVu
dGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodW5pcXVlSWRlbnRpZmllcikpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBib29sIGlzUGxheWluZzsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGlzUGxheWluZykpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBib29sIGFsbG93
c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHk7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
bGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIHJldHVybiBOb3dQbGF5aW5nSW5mbyB7IFdURk1vdmUodGl0bGUpLCBXVEZNb3ZlKHNv
dXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllciksIGR1cmF0aW9uLCBjdXJyZW50VGltZSwgc3VwcG9y
dHNTZWVraW5nLCB1bmlxdWVJZGVudGlmaWVyLCBpc1BsYXlpbmcsIGFsbG93c05vd1BsYXlpbmdD
b250cm9sc1Zpc2liaWxpdHkgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
Y3BwCmluZGV4IDA3ODIxZTdiOGFkNzVlYjk2MWE4ZTM3MWY3MmNmNDc2Njc5MTI2N2UuLjE4NTNh
MTIxY2FiMjI3NjBmMTFmMjI5MzBkZjg5MjRjNzg4NTc0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTm93UGxheWluZ0lu
Zm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMjc1LDI4ICsyNzYsNiBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwcmVzZW50YXRpb25UeXBlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jbGllbnQucHJlc2VudGF0aW9uVHlwZSgpOwogfQogCi0jaWYgRU5BQkxF
KFZJREVPKQotdWludDY0X3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OnVuaXF1ZUlkZW50aWZpZXIo
KSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlm
aWVyKCk7Ci19Ci0KLVN0cmluZyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dGl0bGUoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25UaXRsZSgpOwotfQotCi1kb3VibGUg
UGxhdGZvcm1NZWRpYVNlc3Npb246OmR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9j
bGllbnQubWVkaWFTZXNzaW9uRHVyYXRpb24oKTsKLX0KLQotZG91YmxlIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpjdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlh
U2Vzc2lvbkN1cnJlbnRUaW1lKCk7Ci19Ci0jZW5kaWYKLSAgICAKIGJvb2wgUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdAogewogICAg
IHJldHVybiBtX2NsaWVudC5jYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCk7CkBAIC0z
MTQsMTEgKzI5Myw2IEBAIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OnN1cHBvcnRzU2Vla2lu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50LnN1cHBvcnRzU2Vla2luZygpOwogfQogCi1T
dHJpbmcgUGxhdGZvcm1NZWRpYVNlc3Npb246OnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmll
cigpOwotfQotCiBib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjppc1N1c3BlbmRlZCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmlzU3VzcGVuZGVkKCk7CkBAIC0zNjcsMjggKzM0MSw2
IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKQog
ICAgIG1fbWFuYWdlci0+c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKTsKIH0KIAotI2lm
IEVOQUJMRShWSURFTykKLXVpbnQ2NF90IFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRp
YVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQot
U3RyaW5nIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1kb3VibGUgUGxhdGZvcm1NZWRpYVNl
c3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdAotewotICAgIHJldHVy
biBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLX0KLSNlbmRpZgotCiB2b2lkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjbGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCkKIHsKICAgICBtX21h
bmFnZXItPmNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5nZWQoKnRoaXMpOwpAQCAtNDA5LDYgKzM2
MSwxMSBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjptYW5hZ2VyKCkKICAgICByZXR1cm4gKm1fbWFuYWdlcjsKIH0KIAorT3B0aW9uYWw8Tm93UGxh
eWluZ0luZm8+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpub3dQbGF5aW5nSW5mbygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHsgfTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9n
Q2hhbm5lbCYgUGxhdGZvcm1NZWRpYVNlc3Npb246OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
LmgKaW5kZXggYThkMThiZTRlYWJhZTllYzgwZmY1ZGVmNGZiN2JjYTlkYTY1NzA3YS4uZTJiMzhh
MDFkMGFhNWE2NmQzNzc5MTFlZDQwMWU1Mjg5MDc4OTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC00Myw2ICs0
Myw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbkNsaWVudDsKIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKIGVudW0gY2xh
c3MgRGVsYXlDYWxsaW5nVXBkYXRlTm93UGxheWluZyB7IE5vLCBZZXMgfTsKK3N0cnVjdCBOb3dQ
bGF5aW5nSW5mbzsKIAogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb24KICAgICA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4KQEAgLTExMywxMyArMTE0LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQnVmZmVyaW5nKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlc3VtZUJ1ZmZlcmluZygpIHsgfQogICAgIAotI2lmIEVOQUJMRShWSURFTykK
LSAgICB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHRpdGxl
KCkgY29uc3Q7Ci0gICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgZG91YmxlIGN1cnJl
bnRUaW1lKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIHR5cGVkZWYgdW5pb24gewogICAgICAgICBk
b3VibGUgYXNEb3VibGU7CiAgICAgfSBSZW1vdGVDb21tYW5kQXJndW1lbnQ7CkBAIC0xNzQsOCAr
MTY4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0
YXRlKCkgeyB9CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgYm9vbCBoYXNQbGF5ZWRTaW5jZUxhc3RJ
bnRlcnJ1cHRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc1BsYXllZFNpbmNlTGFzdEludGVycnVw
dGlvbjsgfQogICAgIHZvaWQgY2xlYXJIYXNQbGF5ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24oKSB7
IG1faGFzUGxheWVkU2luY2VMYXN0SW50ZXJydXB0aW9uID0gZmFsc2U7IH0KIApAQCAtMTk1LDYg
KzE4Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyaW5nQXVkaW8o
KSBjb25zdCA9IDA7CiAgICAgfTsKIAorICAgIHZpcnR1YWwgT3B0aW9uYWw8Tm93UGxheWluZ0lu
Zm8+IG5vd1BsYXlpbmdJbmZvKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImLCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbkNsaWVudCYpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtMjM1LDEzICsyMjksNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpID0gMDsKIAotI2lmIEVOQUJMRShW
SURFTykKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IG1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKSBjb25zdDsKLSNlbmRpZgotICAg
IAogICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3QgPSAwOwpAQCAtMjYxLDcgKzI0OCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW4oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBEb2N1bWVudElkZW50aWZpZXIgaG9z
dGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaGFzTWVkaWFTdHJlYW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5oCmluZGV4IGFiMDliNzk4NWQ3N2ZjNmE3NjBjMDRjNzc5ZWE3
NzJlZWE1NzY0ZDAuLmQ3MjU3YzA2OWZiM2U0NmU2YTI3OWYxMzVhZTY2ZjkzMjRhY2VhMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oCkBAIC0zNSw2ICszNSw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RydWN0IE5vd1BsYXlpbmdJbmZvOworCiBjbGFzcyBNZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EKICAgICA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIK
ICAgICAsIHByaXZhdGUgUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50CkBAIC01NSw2ICs1Nyw5
IEBAIHB1YmxpYzoKICAgICBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9u
OyB9CiAgICAgdm9pZCBwcmVwYXJlVG9TZW5kVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoKSBm
aW5hbDsKIAorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyTm93UGxheWluZ0lu
Zm8oKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhi
b29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZVVwZGF0ZU5vd1BsYXlpbmdJbmZvKCkgZmlu
YWw7CiAgICAgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdl
ckNvY29hLm1tCmluZGV4IGViMTlhOWJmOWMwMzM4YWFhYjNlNzhmYjM2OGIwNzcyNjVlMWQxZDgu
LjVkMjRkNWNkYjNhZDcxMTAyMDZmM2M5MTcwMzlmYTliZmVjMGNjYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0KQEAgLTMzLDcgKzMzLDEwIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlh
RWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJhdGVnaWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KIApAQCAtMjA0LDggKzIwNyw3MyBAQCB2b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6c2Vzc2lvbkNhblByb2R1Y2VBdWRpb0NoYW5nZWQoKQogICAgIHNj
aGVkdWxlVXBkYXRlTm93UGxheWluZ0luZm8oKTsKIH0KIAordm9pZCBNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKQoreworICAgIGlmIChjYW5Mb2FkX01lZGlh
UmVtb3RlX01STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKQorICAgICAgICBN
Uk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHkoTVJNZWRpYVJlbW90ZUdldExvY2Fs
T3JpZ2luKCksIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHlOZXZlclZpc2libGUpOworCisg
ICAgTVJNZWRpYVJlbW90ZVNldENhbkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKGZhbHNlKTsKKyAg
ICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luZm8obnVsbHB0cik7CisgICAgTVJNZWRpYVJl
bW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oTVJNZWRp
YVJlbW90ZUdldExvY2FsT3JpZ2luKCksIGtNUlBsYXliYWNrU3RhdGVTdG9wcGVkLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgeworI2lmIExP
R19ESVNBQkxFRAorICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOworI2Vsc2UKKyAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJNUk1lZGlhUmVtb3RlU2V0Tm93
UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihzdG9wcGVkKSBmYWlsZWQg
d2l0aCBlcnJvciAiLCBlcnJvcik7CisjZW5kaWYKKyAgICB9KTsKK30KKwordm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykKK3sKKyAg
ICBpZiAoc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24pCisgICAgICAgIE1STWVkaWFSZW1vdGVT
ZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNhdGlvbih0cnVlKTsKKworICAgIGF1dG8gaW5mbyA9IGFk
b3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CisKKyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLnRpdGxlLmlzRW1wdHkoKSkKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb1RpdGxlLCBub3dQbGF5aW5nSW5mby50aXRsZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKKworICAgIGlmIChzdGQ6OmlzZmluaXRlKG5vd1BsYXlpbmdJbmZvLmR1cmF0aW9uKSAm
JiBub3dQbGF5aW5nSW5mby5kdXJhdGlvbiAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkg
eworICAgICAgICBhdXRvIGNmRHVyYXRpb24gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZub3dQbGF5aW5nSW5mby5kdXJh
dGlvbikpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24sIGNmRHVyYXRpb24uZ2V0KCkpOworICAgIH0K
KworICAgIGRvdWJsZSByYXRlID0gIG5vd1BsYXlpbmdJbmZvLmlzUGxheWluZyA/IDEgOiAwOwor
ICAgIGF1dG8gY2ZSYXRlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmcmF0ZSkpOworICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9QbGF5YmFja1JhdGUs
IGNmUmF0ZS5nZXQoKSk7CisKKyAgICBhdXRvIGxhc3RVcGRhdGVkTm93UGxheWluZ0luZm9Vbmlx
dWVJZGVudGlmaWVyID0gbm93UGxheWluZ0luZm8udW5pcXVlSWRlbnRpZmllcjsKKyAgICBhdXRv
IGNmSWRlbnRpZmllciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGTnVtYmVyTG9uZ0xvbmdUeXBlLCAmbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1
ZUlkZW50aWZpZXIpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJN
ZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciwgY2ZJZGVudGlmaWVyLmdl
dCgpKTsKKworICAgIGlmIChzdGQ6OmlzZmluaXRlKG5vd1BsYXlpbmdJbmZvLmN1cnJlbnRUaW1l
KSAmJiBub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRp
bWUoKSAmJiBub3dQbGF5aW5nSW5mby5zdXBwb3J0c1NlZWtpbmcpIHsKKyAgICAgICAgYXV0byBj
ZkN1cnJlbnRUaW1lID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmbm93UGxheWluZ0luZm8uY3VycmVudFRpbWUpKTsKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKKyAgICB9CisKKyAg
ICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRp
b24oKSAmJiAhbm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyLmlzRW1w
dHkoKSkKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKE1STWVkaWFS
ZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBub3dQbGF5aW5nSW5mby5zb3VyY2VBcHBsaWNhdGlvbklk
ZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisKKyAgICBNUlBsYXliYWNrU3RhdGUg
cGxheWJhY2tTdGF0ZSA9IChub3dQbGF5aW5nSW5mby5pc1BsYXlpbmcpID8ga01SUGxheWJhY2tT
dGF0ZVBsYXlpbmcgOiBrTVJQbGF5YmFja1N0YXRlUGF1c2VkOworICAgIE1STWVkaWFSZW1vdGVT
ZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1v
dGVHZXRMb2NhbE9yaWdpbigpLCBwbGF5YmFja1N0YXRlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgeworI2lmIExPR19ESVNBQkxFRAorICAg
ICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOworI2Vsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJN
Uk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdp
bihwbGF5aW5nKSBmYWlsZWQgd2l0aCBlcnJvciAiLCBlcnJvcik7CisjZW5kaWYKKyAgICB9KTsK
KyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0luZm8oaW5mby5nZXQoKSk7CisKKyAgICBp
ZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxp
dHkoKSkgeworICAgICAgICBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5IHZpc2liaWxpdHkg
PSBub3dQbGF5aW5nSW5mby5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5ID8gTVJO
b3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eUFsd2F5c1Zpc2libGUgOiBNUk5vd1BsYXlpbmdDbGll
bnRWaXNpYmlsaXR5TmV2ZXJWaXNpYmxlOworICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ1Zpc2liaWxpdHkoTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIHZpc2liaWxpdHkp
OworICAgIH0KK30KKwogUGxhdGZvcm1NZWRpYVNlc3Npb24qIE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbigpCiB7CisgICAgLy8gRklYTUU6IEZpeCB0
aGlzIGxheWVyaW5nIHZpb2xhdGlvbi4KICAgICBpZiAoYXV0byBlbGVtZW50ID0gSFRNTE1lZGlh
RWxlbWVudDo6YmVzdE1lZGlhRWxlbWVudEZvclNob3dpbmdQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cihNZWRpYUVsZW1lbnRTZXNzaW9uOjpQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Tm93UGxheWlu
ZykpCiAgICAgICAgIHJldHVybiAmZWxlbWVudC0+bWVkaWFTZXNzaW9uKCk7CiAKQEAgLTIyMCw5
NCArMjg4LDQ4IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjp1cGRhdGVOb3dQbGF5
aW5nSW5mbygpCiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIGNvbnN0
IFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBjdXJyZW50U2Vzc2lvbiA9IHRoaXMtPm5vd1BsYXlpbmdF
bGlnaWJsZVNlc3Npb24oKTsKLQotICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImN1cnJl
bnRTZXNzaW9uOiAiLCBjdXJyZW50U2Vzc2lvbiA/IGN1cnJlbnRTZXNzaW9uLT5sb2dJZGVudGlm
aWVyKCkgOiBudWxscHRyKTsKLQotICAgIGlmICghY3VycmVudFNlc3Npb24pIHsKLSAgICAgICAg
aWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmls
aXR5KCkpCi0gICAgICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2liaWxpdHko
TVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIE1STm93UGxheWluZ0NsaWVudFZpc2liaWxp
dHlOZXZlclZpc2libGUpOworICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5n
SW5mbzsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24o
KSkKKyAgICAgICAgbm93UGxheWluZ0luZm8gPSBzZXNzaW9uLT5ub3dQbGF5aW5nSW5mbygpOwog
CisgICAgaWYgKCFub3dQbGF5aW5nSW5mbykgewogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJjbGVhcmluZyBub3cgcGxheWluZyBpbmZvIik7CisgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5tZWRpYVN0cmF0ZWd5KCkuY2xlYXJOb3dQbGF5aW5nSW5mbygpOwogCi0gICAg
ICAgIE1STWVkaWFSZW1vdGVTZXRDYW5CZU5vd1BsYXlpbmdBcHBsaWNhdGlvbihmYWxzZSk7CiAg
ICAgICAgIG1fcmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uID0gZmFsc2U7Ci0KLSAg
ICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKG51bGxwdHIpOwogICAgICAgICBt
X25vd1BsYXlpbmdBY3RpdmUgPSBmYWxzZTsKICAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlp
bmdUaXRsZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5n
RHVyYXRpb24gPSBOQU47CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRWxhcHNlZFRp
bWUgPSBOQU47CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50
aWZpZXIgPSAwOwotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9u
UGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwga01S
UGxheWJhY2tTdGF0ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJNZWRp
YVJlbW90ZUVycm9yIGVycm9yKSB7Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBVTlVT
RURfUEFSQU0oZXJyb3IpOwotI2Vsc2UKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAg
ICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJNUk1lZGlhUmVtb3RlU2V0Tm93UGxh
eWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihzdG9wcGVkKSBmYWlsZWQgd2l0
aCBlcnJvciAiLCBlcnJvcik7Ci0jZW5kaWYKLSAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRpdGxlID0gXCIiLCBu
b3dQbGF5aW5nSW5mby0+dGl0bGUsICJcIiwgaXNQbGF5aW5nID0gIiwgbm93UGxheWluZ0luZm8t
PmlzUGxheWluZywgIiwgZHVyYXRpb24gPSAiLCBub3dQbGF5aW5nSW5mby0+ZHVyYXRpb24sICIs
IG5vdyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5jdXJyZW50VGltZSwgIiwgaWQgPSAiLCBub3dQbGF5
aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllciwgIiwgcmVnaXN0ZXJlZCA9ICIsIG1fcmVnaXN0ZXJl
ZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKTsKKworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5t
ZWRpYVN0cmF0ZWd5KCkuc2V0Tm93UGxheWluZ0luZm8oIW1fcmVnaXN0ZXJlZEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uLCAqbm93UGxheWluZ0luZm8pOworCiAgICAgaWYgKCFtX3JlZ2lzdGVyZWRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbikgewogICAgICAgICBtX3JlZ2lzdGVyZWRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbiA9IHRydWU7CiAgICAgICAgIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSURJZk5lY2Vzc2FyeSgpOwotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Q2FuQmVOb3dQbGF5
aW5nQXBwbGljYXRpb24odHJ1ZSk7CiAgICAgfQogCi0gICAgU3RyaW5nIHRpdGxlID0gY3VycmVu
dFNlc3Npb24tPnRpdGxlKCk7Ci0gICAgZG91YmxlIGR1cmF0aW9uID0gY3VycmVudFNlc3Npb24t
PnN1cHBvcnRzU2Vla2luZygpID8gY3VycmVudFNlc3Npb24tPmR1cmF0aW9uKCkgOiBNZWRpYVBs
YXllcjo6aW52YWxpZFRpbWUoKTsKLSAgICBkb3VibGUgcmF0ZSA9IGN1cnJlbnRTZXNzaW9uLT5z
dGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nID8gMSA6IDA7Ci0gICAgYXV0
byBpbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDQsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBpZiAoIW5vd1BsYXlpbmdJbmZvLT50aXRsZS5pc0Vt
cHR5KCkpCisgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nVGl0bGUgPSBub3dQbGF5aW5n
SW5mby0+dGl0bGU7CiAKLSAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
VGl0bGUsIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwotICAgICAgICBtX2xhc3RVcGRh
dGVkTm93UGxheWluZ1RpdGxlID0gdGl0bGU7Ci0gICAgfQotCi0gICAgaWYgKHN0ZDo6aXNmaW5p
dGUoZHVyYXRpb24pICYmIGR1cmF0aW9uICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7
Ci0gICAgICAgIGF1dG8gY2ZEdXJhdGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmR1cmF0aW9uKSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9EdXJhdGlvbiwgY2ZEdXJhdGlvbi5nZXQoKSk7CisgICAgZG91YmxlIGR1cmF0aW9uID0g
bm93UGxheWluZ0luZm8tPmR1cmF0aW9uOworICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9u
KSAmJiBkdXJhdGlvbiAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkKICAgICAgICAgbV9s
YXN0VXBkYXRlZE5vd1BsYXlpbmdEdXJhdGlvbiA9IGR1cmF0aW9uOwotICAgIH0KIAotICAgIGF1
dG8gY2ZSYXRlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
Q0ZOdW1iZXJEb3VibGVUeXBlLCAmcmF0ZSkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9QbGF5YmFja1JhdGUsIGNmUmF0
ZS5nZXQoKSk7CisgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmll
ciA9IG5vd1BsYXlpbmdJbmZvLT51bmlxdWVJZGVudGlmaWVyOwogCi0gICAgbV9sYXN0VXBkYXRl
ZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciA9IGN1cnJlbnRTZXNzaW9uLT51bmlxdWVJ
ZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjZklkZW50aWZpZXIgPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckxvbmdMb25nVHlwZSwgJm1fbGFzdFVw
ZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIpKTsKLSAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVW5pcXVlSWRl
bnRpZmllciwgY2ZJZGVudGlmaWVyLmdldCgpKTsKLQotICAgIGRvdWJsZSBjdXJyZW50VGltZSA9
IGN1cnJlbnRTZXNzaW9uLT5jdXJyZW50VGltZSgpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGN1
cnJlbnRUaW1lKSAmJiBjdXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSAm
JiBjdXJyZW50U2Vzc2lvbi0+c3VwcG9ydHNTZWVraW5nKCkpIHsKLSAgICAgICAgYXV0byBjZkN1
cnJlbnRUaW1lID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
Q0ZOdW1iZXJEb3VibGVUeXBlLCAmY3VycmVudFRpbWUpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRU
aW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUgPSBub3dQ
bGF5aW5nSW5mby0+Y3VycmVudFRpbWU7CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRp
bWUpICYmIGN1cnJlbnRUaW1lICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpICYmIG5vd1Bs
YXlpbmdJbmZvLT5zdXBwb3J0c1NlZWtpbmcpCiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5
aW5nRWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJ0aXRsZSA9IFwiIiwgdGl0bGUsICJcIiwgcmF0ZSA9ICIsIHJhdGUsICIs
IGR1cmF0aW9uID0gIiwgZHVyYXRpb24sICIsIG5vdyA9ICIsIGN1cnJlbnRUaW1lKTsKIAotICAg
IFN0cmluZyBwYXJlbnRBcHBsaWNhdGlvbiA9IGN1cnJlbnRTZXNzaW9uLT5zb3VyY2VBcHBsaWNh
dGlvbklkZW50aWZpZXIoKTsKLSAgICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVt
b3RlU2V0UGFyZW50QXBwbGljYXRpb24oKSAmJiAhcGFyZW50QXBwbGljYXRpb24uaXNFbXB0eSgp
KQotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0UGFyZW50QXBwbGljYXRpb24oTVJNZWRpYVJlbW90
ZUdldExvY2FsT3JpZ2luKCksIHBhcmVudEFwcGxpY2F0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwotCi0gICAgbV9ub3dQbGF5aW5nQWN0aXZlID0gY3VycmVudFNlc3Npb24tPmFsbG93c05v
d1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKTsKLSAgICBNUlBsYXliYWNrU3RhdGUgcGxheWJh
Y2tTdGF0ZSA9IChjdXJyZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UGxheWluZykgPyBrTVJQbGF5YmFja1N0YXRlUGxheWluZyA6IGtNUlBsYXliYWNrU3RhdGVQ
YXVzZWQ7Ci0gICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNr
U3RhdGVGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIHBsYXliYWNrU3Rh
dGUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9yIGVycm9y
KSB7Ci0jaWYgTE9HX0RJU0FCTEVECi0gICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxz
ZQotICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJNUk1lZGlhUmVtb3RlU2V0Tm93
UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihwbGF5aW5nKSBmYWlsZWQg
d2l0aCBlcnJvciAiLCBlcnJvcik7Ci0jZW5kaWYKLSAgICB9KTsKLSAgICBNUk1lZGlhUmVtb3Rl
U2V0Tm93UGxheWluZ0luZm8oaW5mby5nZXQoKSk7CisgICAgbV9ub3dQbGF5aW5nQWN0aXZlID0g
bm93UGxheWluZ0luZm8tPmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHk7CiAKLSAg
ICBpZiAoY2FuTG9hZF9NZWRpYVJlbW90ZV9NUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ1Zpc2li
aWxpdHkoKSkgewotICAgICAgICBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5IHZpc2liaWxp
dHkgPSBjdXJyZW50U2Vzc2lvbi0+YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSgp
ID8gTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eUFsd2F5c1Zpc2libGUgOiBNUk5vd1BsYXlp
bmdDbGllbnRWaXNpYmlsaXR5TmV2ZXJWaXNpYmxlOwotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0
Tm93UGxheWluZ1Zpc2liaWxpdHkoTVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIHZpc2li
aWxpdHkpOwotICAgIH0KICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAjZW5kaWYgLy8g
VVNFKE1FRElBUkVNT1RFKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDZhMmM4NzBmN2FhYTFiMGRiMDAw
ZWY4ODgyN2M5YTBmNjFkY2YyNWIuLmUwMzM0NmM0NWVhYzAxZWFiM2Q2ZDAwNjZhODc0OWMzZTAx
Zjc1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTYxLDYgKzYxLDEwIEBACiAjaW5jbHVkZSAiV2ViRXJy
b3JzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oPgorI2Vu
ZGlmCisKICNpbmNsdWRlIDxXZWJDb3JlL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KIApAQCAt
MjEzLDYgKzIxNywxOCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VS
ZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVT
RUQoZm91bmQsIGZvdW5kKTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKK3sKKyAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsKK30KKwordm9pZCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uLCBjb25zdCBOb3dQbGF5aW5nSW5mbyYgbm93UGxheWluZ0luZm8pCit7
CisgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhzZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbiwgbm93UGxheWluZ0luZm8pOworfQorI2VuZGlmCisKIGJvb2wg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNzQ3MTVjODBj
NTQ1YmVhZmVjM2Y2YjdlMDk4NGVjYTUwY2JhMjY2OS4uZTRjOTEyNTU5ZmY5NjA0NWUwMDRiMGUw
ZTlkMzJiZjMwYTQwYzQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMDMsNiArMTAzLDEwIEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgY2xlYXJO
b3dQbGF5aW5nSW5mbygpOworICAgIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mKTsKKyNl
bmRpZgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA5MzJjMDEyMmRlMDgxZWRlOWJiOWVmYjU2ZjliYzUyNTliYTRkNzA0Li44ZDkxY2UyYmNkYmRh
ZWNmYzI1NzEwM2NkYWNlNjk2NTRjYzQ4ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMjUsNiArMjUsMTAgQEAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB2b2lkIFNl
dE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIHN0cnVjdCBX
ZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyBub3dQbGF5aW5nSW5mbyk7CisjZW5kaWYKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBjOWQyZWU0
NDViZDVlNmE5NGFhNDhkNThiOWUwNDIxM2JjNWFmMmUwLi4yNjJhNGJkODllMjk3OWRkNDczN2Q4
NWM0NTAzZjZkNmNiZjM0ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02NzQsNiArNjc0LDcg
QEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSgpCiAgICAg
bV9jYWNoZWRTdGF0ZS5yZWFkeVN0YXRlID0gbV9wbGF5ZXItPnJlYWR5U3RhdGUoKTsKICAgICBt
X2NhY2hlZFN0YXRlLnBhdXNlZCA9IG1fcGxheWVyLT5wYXVzZWQoKTsKICAgICBtX2NhY2hlZFN0
YXRlLmxvYWRpbmdQcm9ncmVzc2VkID0gbV9wbGF5ZXItPmRpZExvYWRpbmdQcm9ncmVzcygpOwor
ICAgIG1fY2FjaGVkU3RhdGUuaGFzQXVkaW8gPSBtX3BsYXllci0+aGFzQXVkaW8oKTsKIAogICAg
IGlmIChtX2J1ZmZlcmVkQ2hhbmdlZCkgewogICAgICAgICBtX2J1ZmZlcmVkQ2hhbmdlZCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJN
ZWRpYVN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2Vi
TWVkaWFTdHJhdGVneS5jcHAKaW5kZXggMmFhZTVlNTQ0NTEwODQ3OWJkM2NkMzM5YWZhNmJmNmQy
ZGRhYmNmNi4uNTllMDBhZTVmZGY2YjU0YzczMTk3N2QxYTllMmU2MTNjMDZmZTc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3Ry
YXRlZ3kuY3BwCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0
aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nSW5m
by5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTUs
NCArNjAsMzAgQEAgdm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZhY3RvcmllcyhW
ZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9yeSo+JiBmYWN0b3IKIH0KICNlbmRpZgogCisjaWYgUExB
VEZPUk0oQ09DT0EpCit2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OmNsZWFyTm93UGxheWluZ0luZm8o
KQoreworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7
CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlv
bi5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhck5vd1BsYXlp
bmdJbmZvIHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsKK30KKwordm9pZCBX
ZWJNZWRpYVN0cmF0ZWd5OjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYgbm93UGxheWluZ0luZm8p
Cit7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGlmIChtX3VzZUdQVVByb2Nlc3MpIHsK
KyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9u
LnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldE5vd1BsYXlpbmdJ
bmZvIHsgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvIH0sIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hOjpzZXROb3dQbGF5aW5nSW5mbyhzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgbm93UGxh
eWluZ0luZm8pOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaApp
bmRleCA0ZmFiMGU5NDRmYzE0ZTY4NDM3OWUzMDA4MTYzYmUxNjJkZDg5YjRkLi42ZGVmZTNiMTU0
OWM0NGQ0NWZhNDFlNTk1MjYzZjRiN2UwNzFjMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaApAQCAtNDUsNiArNDUs
MTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQgcmVn
aXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpIG92ZXJyaWRl
OwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJ
bmZvKCkgZmluYWw7CisgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYpIGZpbmFsOwor
I2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQVVByb2Nl
c3MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGI5MDllY2M0
MzliY2QzYzZmNmRhODA0MWM2ZWYyOTNmZjM0NjY5NmYuLjczMTllNjhkNTdkZDhiZWU1MzMxMzMx
NGM2MjgwZGVlZjdjMjkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMz
LDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTdHJh
dGVneS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CkBAIC04MCw2ICs4MSwxNSBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3Rl
ckZhY3RvcmllcyhmYWN0b3JpZXMpOwogICAgIH0KICNlbmRpZgorICAgIHZvaWQgY2xlYXJOb3dQ
bGF5aW5nSW5mbygpIGZpbmFsCisgICAgeworICAgICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29j
b2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE5vd1BsYXlp
bmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJ
bmZvJiBub3dQbGF5aW5nSW5mbykgZmluYWwKKyAgICB7CisgICAgICAgIE1lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24s
IG5vd1BsYXlpbmdJbmZvKTsKKyAgICB9CiB9OwogCiBNZWRpYVN0cmF0ZWd5KiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNyZWF0ZU1lZGlhU3RyYXRlZ3koKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392551</attachid>
            <date>2020-03-05 02:24:13 -0800</date>
            <delta_ts>2020-03-05 03:08:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208568-20200305112411.patch</filename>
            <type>text/plain</type>
            <size>56813</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZmM2I5NmQwMWZiYjQx
OWU4MDY3YzJkMGNlNDBiNWVjNjlkOTM5MC4uZDA5ZmM2YjY1OThmMjg1NGFhZDE1NmY5ZjU0NDlh
YzJlZmIyMzQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTAzLTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBSZW1vdmVkIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uQ2xpZW50IE5vd1BsYXlpbmcgZ2V0dGVycyBzaW5jZSBvbmx5IEhUTUxNZWRp
YUVsZW1lbnQgaXMgZWxpZ2libGUuCisgICAgICAgIExldCBNZWRpYUVsZW1lbnRTZXNzaW9uIGdl
bmVyYXRlcyBpdHMgb3duIE5vd1BsYXlpbmdJbmZvIHdoZW4gcmVxdWVzdGVkIGJ5IHRoZSBzZXNz
aW9uIG1hbmFnZXIuCisgICAgICAgIFVzZSBwbGF0Zm9ybSBzdHJhdGVnaWVzIHRvIGFic3RyYWN0
IG91dCBob3cgdG8gZXhlY3V0ZSBOb3dQbGF5aW5nIG9yZGVycy4KKworICAgICAgICBNYW51YWxs
eSB0ZXN0ZWQgZm9yIE5vd1BsYXlpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgQWxzbyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGZvciB0aGUgcmVmYWN0b3JpbmcgYml0cy4KKworICAgICAg
ICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRT
ZXNzaW9uOjphbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpub3dQbGF5aW5nSW5mbyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NOb3dQ
bGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L01lZGlhRWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vd1Bs
YXlpbmdJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpu
b3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6dW5pcXVlSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dGl0bGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmR1cmF0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjdXJyZW50VGltZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25VbmlxdWVJZGVudGlm
aWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNz
aW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxp
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChNZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKE1lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbik6CisgICAgICAgIChNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJRElmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3Zp
ZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQpOgorCiAyMDIwLTAzLTA0ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUHV0IGFsbCBnZW5lcmF0ZWQgSlNDZWxs
cyBpbiBXZWJDb3JlIGludG8gSXNvU3Vic3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjc2YmQ1ZGEzYWIxMTI2
OWVmMjFmMzVmMGYzMTM5ZTY3MjFkY2Y1Yi4uNTgzODkzMTBhZDBkODU1MTE1ZGZmZGI4NWJkNzRk
OTJiY2Q0N2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMC0wMy0wNSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3J0IE5vd1BsYXlpbmcg
Y29tbWFuZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlpbmcgaW4gR1BVUHJvY2VzcyBp
cyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
RXhwb3J0IE5vd1BsYXlpbmcgb3JkZXJzIHRvIEdQVSBwcm9jZXNzIHRocm91Z2ggSVBDIGlmIEdQ
VVByb2Nlc3MgaXMgdHVybmVkIG9uLgorICAgICAgICBPdGhlcndpc2UgdXNlIHRoZSByZWd1bGFy
IGluIHByb2Nlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIE1ha2Ugc3VyZSB0byBzeW5jIHRo
ZSBoYXNBdWRpbyBzdGF0ZSBzbyB0aGF0IGl0IGdldHMgc2V0IHByb3Blcmx5IGluIFdlYlByb2Nl
c3MuCisKKyAgICAgICAgUmVtb3ZlIHRoZSB1c2Ugb2YgYSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIgZm9yIGNhcHR1cmUgc2luY2UgaXQgaXMgbm93IHVzaW5nIHBsYXRmb3JtIHN0cmF0ZWdp
ZXMgaW4gdHdvIHBsYWNlcy4KKyAgICAgICAgSW5zdGVhZCB1c2UgZGlyZWN0bHkgc3RhdGljIG1l
dGhvZHMgb2YgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyB0byBpbXBsZW1lbnQgcGlkIGZvcndhcmRp
bmcgYW5kIEF1ZGlvU2Vzc2lvbiB0byBzZXQgY2F0ZWdvcnkgYW5kIGJ1ZmZlciBzaXplLgorICAg
ICAgICBBIGZvbGxvdy11cCByZWZhY3RvcmluZyBzaG91bGQgcHJvYmFibHkgcmVhcmNoaXRlY3Qg
QXVkaW9TZXNzaW9uIGhhbmRsaW5nLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKFdlYktpdDo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbk1hbmFnZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQ
cm94eTo6U291cmNlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpTb3VyY2VQcm94eTo6flNvdXJjZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJl
RGV2aWNlV2l0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Y2xvbmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVn
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyYXRlZ3k6OmNsZWFyTm93UGxheWlu
Z0luZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmF0ZWd5OjpzZXROb3dQbGF5aW5n
SW5mbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5o
OgorCiAyMDIwLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2Vic2l0ZURhdGFTdG9yZSBtZXRob2RzIG9mdGVuIGNyZWF0ZSBwcm9jZXNzIHBvb2xzIGFu
ZCBsYXVuY2ggbmV0d29yayBwcm9jZXNzZXMgdW5uZWNlc3NhcmlseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IGQ2OTgwOWE5ZjUwYzZkNTY0M2Q0ODczYTM4YTA3ZjBhZmMyNTM1ZTku
Ljg1Yzc3MzMwMmNiMjFkODM2ZDhhMDY0Y2FjODYxZTZkOTg2M2JlNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0wNSAgeW91ZW5uIGZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3J0IE5vd1BsYXlpbmcgY29tbWFu
ZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlpbmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFi
bGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVXNlIGlu
LXByb2Nlc3Mgbm93IHBsYXlpbmcgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIwMjAtMDMtMDQgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGluaXRpYWwgbGF5b3V0IHRocm90
dGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGJhYTFkN2MwNjRhOGNkNmU5M2E0M2JlNWFlMjYy
MGU1ZDI5NjgyNi4uOGQ4N2E2ZmQ5OWRiN2QzYTUzOTBhNDUxYjVhMmJhOWQyMmQyMTUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKICAg
ICBwbGF0Zm9ybS9hdWRpby9BdWRpb1NvdXJjZVByb3ZpZGVyLmgKICAgICBwbGF0Zm9ybS9hdWRp
by9BdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgKKyAgICBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaAogICAgIHBsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGQ0NzAwYTY5NTA1YjE2MmFiZWFjMzNhYzky
ODgyYjFkZTcwMzFlNDIuLjRhMmUxN2IwMDcxY2ZjN2Y3N2VmNzI2ZmYyY2U1ZWQ3ZmJlM2RiMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKQEAgLTM3MywxNiArMzczLDYgQEAgRG9jdW1lbnRJZGVudGlmaWVyIEF1ZGlvQ29udGV4dDo6
aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50ID8g
ZG9jdW1lbnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRpZmllciB7IH07CiB9CiAKLVN0
cmluZyBBdWRpb0NvbnRleHQ6OnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0Ci17
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHIpIHsKLSAg
ICAgICAgaWYgKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCA9IGZyYW1lLT5s
b2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIG5ldHdvcmtp
bmdDb250ZXh0LT5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KIGJvb2wgQXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuICFkb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJl
U3RvcHBlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKaW5kZXggMDY4ZWE2ZGM0YWQwMGU0ODViNDI4M2MyMTY1MWNjYTU2Nzc2NTFkZS4uMTYz
MmE4ODNmZGY3NWZjNzUwY2Y3ZjEwYzgwNmEyNTI1ZGE3ZmIyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0zNTUsNyArMzU1LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGUgeyB9CiAgICAgYm9v
bCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGYw
MjNlYmQ0ZWRkYmY2OTM0MDU3MjM2OTdhZGU5YmY1Mzk2ODU4OS4uZmE4OWVjNWZhNmYzN2JmOTI1
ZWQzMmMxODY0OWMzYWE5MzMxZTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA4NSw2ICsxMDg1LDcgQEAKIAkJNDE2RTZG
RTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJC
MzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJE
MTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAv
KiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxl
U3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE2
RkQyNUYyNDBGQTRFNTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGRDI1RDI0MEVFMUFFMDA2NjYxRDgg
LyogTm93UGxheWluZ0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9Owog
CQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFF
M0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi87IH07CiAJCTQx
NzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNC
MDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9OwpAQCAtNzM2Nyw2ICs3
MzY4LDcgQEAKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8qIE5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRJbmZv
cm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFMEIzNzIwOUJDM0My
MDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUmVwb3J0aW5nUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RkQyNUQyNDBFRTFBRTAwNjY2MUQ4IC8qIE5vd1Bs
YXlpbmdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vd1BsYXlpbmdJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzBBMkU5MUQ4QzBDQzAwMDMx
ODQ1MiAvKiBKU0RPTVdyYXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3
MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
ODc3Myw2ICsyODc3NSw3IEBACiAJCQkJRkQzMTYwNkIxMkIwMjZGNzAwQzFBMzU5IC8qIEhSVEZQ
YW5uZXIuaCAqLywKIAkJCQlGREIxNzAwMzE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcCAqLywKIAkJCQlGREIxNzAwNDE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlD
aGFubmVsUmVzYW1wbGVyLmggKi8sCisJCQkJNDE2RkQyNUQyNDBFRTFBRTAwNjY2MUQ4IC8qIE5v
d1BsYXlpbmdJbmZvLmggKi8sCiAJCQkJRkQzMTYwNkMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5l
ci5jcHAgKi8sCiAJCQkJRkQzMTYwNkQxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5oICovLAog
CQkJCUNERTY2N0ExMUU0QkJBNEQwMEU4MTU0QSAvKiBQbGF0Zm9ybUF1ZGlvRGF0YS5oICovLApA
QCAtMzE2NjQsNiArMzE2NjcsNyBAQAogCQkJCTdDQzJEREZCMUVDOTQxNUEwMDI3Qjc3NCAvKiBO
b3RpZmljYXRpb25QZXJtaXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUZFNkRGQTE1MDA0
QzJBMDAwNEVCQzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxNkZEMjVGMjQwRkE0RTUwMDY2NjFEOCAvKiBOb3dQbGF5aW5n
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEIwRDdFMkI4MjAwN0MzOTgzIC8qIE5Q
X2pzb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkyN0ZEMjE0MTZBMTVCMDAzQTgzQzgg
LyogbnBhcGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjE5QjNCMERDQTg3QUIwMDQwRTNBMCAv
KiBucGZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCmluZGV4IGQ1MTE0Y2EyMmYwM2FjMjFmZjc1MmExZmQ1NjYxMDYzMzg0MDgwZDMu
LjMyYTljNWI1NGZiYTZmNGM2ZmIxZjgyODIyYjA5NzA2MTBkZTFkZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC01OTIsNiArNTkyLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpOwogICAgIHZvaWQgYXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUoKTsKIAorICAgIHVpbnQ2NF90IG1lZGlhU2Vzc2lvblVuaXF1ZUlk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdDsK
KyAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Q7CisKIHByb3Rl
Y3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoSW5pdGlh
bGl6YXRpb24oKTsKQEAgLTczNSw3ICs3MzksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtZWRp
YVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKLSAgICBTdHJp
bmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIG1lZGlhUGxheWVyU291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7IH0KICAgICBWZWN0b3I8
U3RyaW5nPiBtZWRpYVBsYXllclByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKQEAgLTg4MiwxMCArODg1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3Bl
bmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1lQXV0b3BsYXlpbmcoKSBvdmVy
cmlkZTsKICAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVy
cmlkZTsKLSAgICB1aW50NjRfdCBtZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWw7Ci0gICAgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZHVyYXRpb24oKTsgfQotICAgIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KICAgICBib29sIGNhblJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkT3ZlcnJp
ZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50
ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA4YjIzZjRhODc1OWQxZDJkYWI4ZDM4ZjU0MzIyMzg1
ODhlNDA3YTljLi43NmU2MDUwOGVkYzI3NTg3NmFkZDAyODYyNDcxM2ZlMGIxMmE3NWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuaCIKICNpbmNsdWRlICJRdWlya3MuaCIKQEAgLTk3NywxNiArOTc4LDI0IEBAIGJvb2wgTWVk
aWFFbGVtZW50U2Vzc2lvbjo6dXBkYXRlSXNNYWluQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNNYWluQ29udGVudDsKIH0KIAotYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVtZW50U2Vz
c2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdAog
ewogICAgIGF1dG8gcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKLSAgICByZXR1
cm4gcGFnZSAmJiAhcGFnZS0+aXNWaXNpYmxlQW5kQWN0aXZlKCk7CisgICAgcmV0dXJuIHBhZ2Ug
JiYgcGFnZS0+YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKTsKIH0K
IAotYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0
b3BsYXlpbmdBdWRpbygpIGNvbnN0CitPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogewotICAgIGF1dG8gcGFnZSA9IG1f
ZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKLSAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5hbGxv
d3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpOworICAgIGF1dG8qIHBhZ2Ug
PSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5n
Q29udHJvbHNWaXNpYmlsaXR5ID0gcGFnZSAmJiAhcGFnZS0+aXNWaXNpYmxlQW5kQWN0aXZlKCk7
CisgICAgYm9vbCBpc1BsYXlpbmcgPSBzdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
bGF5aW5nOworICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nID0gbV9lbGVtZW50LnN1cHBvcnRzU2Vl
a2luZygpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IHN1cHBvcnRzU2Vla2luZyA/IG1fZWxlbWVu
dC5kdXJhdGlvbigpIDogTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7CisgICAgZG91YmxlIGN1
cnJlbnRUaW1lID0gbV9lbGVtZW50LmN1cnJlbnRUaW1lKCk7CisgICAgaWYgKCFzdGQ6OmlzZmlu
aXRlKGN1cnJlbnRUaW1lKSB8fCAhc3VwcG9ydHNTZWVraW5nKQorICAgICAgICBjdXJyZW50VGlt
ZSA9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOworCisgICAgcmV0dXJuIE5vd1BsYXlpbmdJ
bmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCksIG1fZWxlbWVudC5zb3VyY2VBcHBs
aWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtp
bmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlmaWVyKCksIGlzUGxheWluZywg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OwogfQogCiBTdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoY29uc3QgTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbiBlbnVt
ZXJhdGlvblZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApp
bmRleCAxZjJkMzRmOTUzZjM1MmUwOTUyMWI4M2QxOGUyYmQ2YzFjMjk2NjIzLi4xY2QyYzhhMGRj
N2FlZWRkNzFlNzg2Njg3YzgzZWZkMDdkYjk3ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMTQ5LDcgKzE0OSw2IEBAIHB1YmxpYzoKICAgICBNb25v
dG9uaWNUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKCkgY29uc3Q7CiAKICAgICBi
b29sIGFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3Q7Ci0g
ICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBzdGF0aWMgYm9vbCBpc01lZGlhRWxlbWVudFNlc3Npb25NZWRpYVR5cGUoTWVk
aWFUeXBlIHR5cGUpCiAgICAgewpAQCAtMTU4LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHx8IHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlb0F1ZGlvOwogICAgIH0KIAorICAgIE9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbygpIGNvbnN0IGZpbmFsOworCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCmluZGV4IDYwYTU4NDdjOGNl
YzEwYjc5Yjc0OWE2ZmFmODUwM2QxNmExOTliOTUuLjg5NzQ1YmI4M2EyMzM2ZDQyMWUxNjcwZTg3
MzBiZmI3YWM3NDY4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlh
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgK
QEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9EZXN0aW5h
dGlvbjsKIGNsYXNzIEF1ZGlvSU9DYWxsYmFjazsKIGNsYXNzIENETUZhY3Rvcnk7CitzdHJ1Y3Qg
Tm93UGxheWluZ0luZm87CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhU3RyYXRlZ3kgewog
cHVibGljOgpAQCAtNDIsNiArNDMsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ0RNRmFjdG9yaWVzKFZlY3RvcjxDRE1G
YWN0b3J5Kj4mKSA9IDA7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm93
UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgTm93UGxh
eWluZ0luZm8mKSA9IDA7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlh
U3RyYXRlZ3koKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAppbmRleCBlNzAwODIyZmYxZmVlYmQ3ODI5YWVjNzUwY2NlNDBhNjBi
OTI1NjZhLi4wZGE3NWZkYTRhM2E3YzcxNzc3ODQ0NThlZDY0MjA4NjYxYzc2YjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNjgsMTQgKzY4
LDE0IEBAIHB1YmxpYzoKICAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFyaW5nUG9saWN5
KCkgY29uc3Q7CiAgICAgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3Q7CiAKLSAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgc2FtcGxl
UmF0ZSgpIGNvbnN0OwogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3Q7CiAgICAgc2l6ZV90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdDsKIAogICAgIGJvb2wgdHJ5VG9TZXRBY3Rp
dmUoYm9vbCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3QgcHJlZmVycmVkQnVmZmVyU2l6
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QpOwogCiAg
ICAgY2xhc3MgTXV0ZWRTdGF0ZU9ic2VydmVyIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGY3NTgy
ZTIzNjFkNWY1ZWM0ZTcyNTJhZDM2OTdmMmUxNDEyODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTm93UGxheWluZ0luZm8g
eworICAgIFN0cmluZyB0aXRsZTsKKyAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlm
aWVyOworICAgIGRvdWJsZSBkdXJhdGlvbiB7IDAgfTsKKyAgICBkb3VibGUgY3VycmVudFRpbWUg
eyAwIH07CisgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90
IHVuaXF1ZUlkZW50aWZpZXIgeyAwIH07CisgICAgYm9vbCBpc1BsYXlpbmcgeyBmYWxzZSB9Owor
ICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB7IGZhbHNlIH07CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5s
aW5lIHZvaWQgTm93UGxheWluZ0luZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIDw8
IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8IHN1cHBvcnRzU2Vla2luZyA8PCB1bmlxdWVJZGVu
dGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Tm93UGxheWlu
Z0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBT
dHJpbmcgdGl0bGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aXRsZSkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGRvdWJsZSBkdXJhdGlvbjsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGR1cmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGRvdWJsZSBjdXJy
ZW50VGltZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGN1cnJlbnRUaW1lKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3VwcG9ydHNTZWVraW5nKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVp
bnQ2NF90IHVuaXF1ZUlkZW50aWZpZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1bmlxdWVJ
ZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGJvb2wgaXNQbGF5aW5nOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNQbGF5aW5nKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgV1RGTW92ZSh0
aXRsZSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKSwgZHVyYXRpb24sIGN1
cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50aWZpZXIsIGlzUGxheWluZywg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMDc4MjFlN2I4YWQ3NWViOTYxYThlMzcxZjcyY2Y0
NzY2NzkxMjY3ZS4uMTg1M2ExMjFjYWIyMjc2MGYxMWYyMjkzMGRmODkyNGM3ODg1NzRkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNs
dWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNzUsMjggKzI3Niw2IEBAIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OnByZXNlbnRh
dGlvblR5cGUoKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudC5wcmVzZW50YXRpb25UeXBlKCk7
CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi11aW50NjRfdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
dW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vz
c2lvblVuaXF1ZUlkZW50aWZpZXIoKTsKLX0KLQotU3RyaW5nIFBsYXRmb3JtTWVkaWFTZXNzaW9u
Ojp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50Lm1lZGlhU2Vzc2lvblRpdGxl
KCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZHVyYXRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25EdXJhdGlvbigpOwotfQotCi1kb3Vi
bGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1cnJlbnRUaW1lKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKTsKLX0KLSNlbmRpZgotICAgIAog
Ym9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNhblJlY2VpdmVSZW1vdGVDb250cm9s
Q29tbWFuZHMoKTsKQEAgLTMxNCwxMSArMjkzLDYgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9jbGllbnQuc3VwcG9ydHNT
ZWVraW5nKCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c291cmNlQXBwbGlj
YXRpb25JZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQuc291cmNlQXBw
bGljYXRpb25JZGVudGlmaWVyKCk7Ci19Ci0KIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246Omlz
U3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQuaXNTdXNwZW5kZWQoKTsK
QEAgLTM2NywyOCArMzQxLDYgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUHJvZHVj
ZUF1ZGlvQ2hhbmdlZCgpCiAgICAgbV9tYW5hZ2VyLT5zZXNzaW9uQ2FuUHJvZHVjZUF1ZGlvQ2hh
bmdlZCgpOwogfQogCi0jaWYgRU5BQkxFKFZJREVPKQotdWludDY0X3QgUGxhdGZvcm1NZWRpYVNl
c3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdAotewotICAg
IHJldHVybiAwOwotfQotCi1TdHJpbmcgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlh
U2Vzc2lvblRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLWRvdWJs
ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25z
dAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKTsKLX0KLQotZG91Ymxl
IFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwotfQotI2VuZGlm
Ci0KIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudENoYXJhY3RlcmlzdGljc0NoYW5n
ZWQoKQogewogICAgIG1fbWFuYWdlci0+Y2xpZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgqdGhp
cyk7CkBAIC00MDksNiArMzYxLDExIEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgUGxh
dGZvcm1NZWRpYVNlc3Npb246Om1hbmFnZXIoKQogICAgIHJldHVybiAqbV9tYW5hZ2VyOwogfQog
CitPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gUGxhdGZvcm1NZWRpYVNlc3Npb246Om5vd1BsYXlp
bmdJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6bG9nQ2hhbm5l
bCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBhOGQxOGJlNGVhYmFlOWVjODBmZjVkZWY0ZmI3YmNh
OWRhNjU3MDdhLi5lMmIzOGEwMWQwYWE1YTY2ZDM3NzkxMWVkNDAxZTUyODkwNzg5NzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNz
IFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OwogY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOwogZW51bSBjbGFzcyBEZWxheUNhbGxpbmdVcGRhdGVOb3dQbGF5aW5nIHsgTm8sIFll
cyB9Oworc3RydWN0IE5vd1BsYXlpbmdJbmZvOwogCiBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bgogICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPgpAQCAt
MTEzLDEzICsxMTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRCdWZmZXJp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQnVmZmVyaW5nKCkgeyB9CiAgICAgCi0j
aWYgRU5BQkxFKFZJREVPKQotICAgIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdDsK
LSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsKLSAgICBkb3VibGUgZHVyYXRpb24oKSBjb25zdDsK
LSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgdHlwZWRlZiB1
bmlvbiB7CiAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICB9IFJlbW90ZUNvbW1hbmRBcmd1
bWVudDsKQEAgLTE3NCw4ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
UGxheWJhY2tTZXNzaW9uU3RhdGUoKSB7IH0KICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzTm93UGxheWluZ0Nv
bnRyb2xzVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICBib29sIGhh
c1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGxheWVk
U2luY2VMYXN0SW50ZXJydXB0aW9uOyB9CiAgICAgdm9pZCBjbGVhckhhc1BsYXllZFNpbmNlTGFz
dEludGVycnVwdGlvbigpIHsgbV9oYXNQbGF5ZWRTaW5jZUxhc3RJbnRlcnJ1cHRpb24gPSBmYWxz
ZTsgfQogCkBAIC0xOTUsNiArMTg3LDggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNDYXB0dXJpbmdBdWRpbygpIGNvbnN0ID0gMDsKICAgICB9OwogCisgICAgdmlydHVhbCBPcHRp
b25hbDxOb3dQbGF5aW5nSW5mbz4gbm93UGxheWluZ0luZm8oKSBjb25zdDsKKwogcHJvdGVjdGVk
OgogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYs
IFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Jik7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CkBAIC0yMzUsMTMgKzIy
OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBz
aG91bGRSZXN1bWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgPSAw
OwogCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIHZpcnR1YWwgdWludDY0X3QgbWVkaWFTZXNzaW9u
VW5pcXVlSWRlbnRpZmllcigpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhU2Vzc2lv
blRpdGxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24o
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNv
bnN0OwotI2VuZGlmCi0gICAgCiAgICAgdmlydHVhbCBib29sIGNhblJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50
KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCA9IDA7CkBA
IC0yNjEsNyArMjQ4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdPblNl
Y29uZFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIERvY3Vt
ZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgYm9vbCBoYXNNZWRpYVN0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKaW5kZXggYWIwOWI3OTg1ZDc3
ZmM2YTc2MGMwNGM3NzllYTc3MmVlYTU3NjRkMC4uZDcyNTdjMDY5ZmIzZTQ2ZTZhMjc5ZjEzNWFl
NjZmOTMyNGFjZWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKQEAgLTM1LDYgKzM1
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgTm93UGxheWluZ0luZm87CisK
IGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYQogICAgIDogcHVibGljIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcgogICAgICwgcHJpdmF0ZSBSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGll
bnQKQEAgLTU1LDYgKzU3LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZWdpc3RlcmVkQXNOb3dQ
bGF5aW5nQXBwbGljYXRpb247IH0KICAgICB2b2lkIHByZXBhcmVUb1NlbmRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCgpIGZpbmFsOwogCisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5v
d1BsYXlpbmdJbmZvJik7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIHNjaGVkdWxlVXBkYXRlTm93
UGxheWluZ0luZm8oKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9N
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggZWIxOWE5YmY5YzAzMzhhYWFiM2U3OGZi
MzY4YjA3NzI2NWUxZDFkOC4uNjJlM2YzNDM3ZWM3MGMwODE5NGQ4YmNjNTI3MjY1MDExMDFjZTZk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzMsNyArMzMsMTAgQEAKICNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUg
Ik5vd1BsYXlpbmdJbmZvLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlIDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCkBAIC0yMDQsOCArMjA3LDcz
IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXNzaW9uQ2FuUHJvZHVjZUF1ZGlv
Q2hhbmdlZCgpCiAgICAgc2NoZWR1bGVVcGRhdGVOb3dQbGF5aW5nSW5mbygpOwogfQogCit2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCit7CisgICAg
aWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmls
aXR5KCkpCisgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eShNUk1l
ZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5l
dmVyVmlzaWJsZSk7CisKKyAgICBNUk1lZGlhUmVtb3RlU2V0Q2FuQmVOb3dQbGF5aW5nQXBwbGlj
YXRpb24oZmFsc2UpOworICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhudWxscHRy
KTsKKyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0
ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwga01SUGxheWJhY2tTdGF0
ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oTVJNZWRpYVJlbW90ZUVycm9y
IGVycm9yKSB7CisjaWYgTE9HX0RJU0FCTEVECisgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7
CisjZWxzZQorICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIk1S
TWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2lu
KHN0b3BwZWQpIGZhaWxlZCB3aXRoIGVycm9yICIsIGVycm9yKTsKKyNlbmRpZgorICAgIH0pOwor
fQorCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9v
bCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgTm93UGxheWluZ0luZm8mIG5vd1Bs
YXlpbmdJbmZvKQoreworICAgIGlmIChzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbikKKyAgICAg
ICAgTVJNZWRpYVJlbW90ZVNldENhbkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKHRydWUpOworCisg
ICAgYXV0byBpbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDQsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmICghbm93UGxheWluZ0luZm8udGl0
bGUuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBr
TVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIG5vd1BsYXlpbmdJbmZvLnRpdGxlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisgICAgaWYgKHN0ZDo6aXNmaW5pdGUobm93UGxheWlu
Z0luZm8uZHVyYXRpb24pICYmIG5vd1BsYXlpbmdJbmZvLmR1cmF0aW9uICE9IE1lZGlhUGxheWVy
OjppbnZhbGlkVGltZSgpKSB7CisgICAgICAgIGF1dG8gY2ZEdXJhdGlvbiA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJm5v
d1BsYXlpbmdJbmZvLmR1cmF0aW9uKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGlu
Zm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9EdXJhdGlvbiwgY2ZEdXJhdGlv
bi5nZXQoKSk7CisgICAgfQorCisgICAgZG91YmxlIHJhdGUgPSBub3dQbGF5aW5nSW5mby5pc1Bs
YXlpbmcgPyAxIDogMDsKKyAgICBhdXRvIGNmUmF0ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJhdGUpKTsKKyAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvUGxheWJhY2tSYXRlLCBjZlJhdGUuZ2V0KCkpOworCisgICAgYXV0byBsYXN0VXBkYXRlZE5v
d1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciA9IG5vd1BsYXlpbmdJbmZvLnVuaXF1ZUlkZW50
aWZpZXI7CisgICAgYXV0byBjZklkZW50aWZpZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckxvbmdMb25nVHlwZSwgJmxhc3RVcGRhdGVkTm93
UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
aW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIs
IGNmSWRlbnRpZmllci5nZXQoKSk7CisKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShub3dQbGF5aW5n
SW5mby5jdXJyZW50VGltZSkgJiYgbm93UGxheWluZ0luZm8uY3VycmVudFRpbWUgIT0gTWVkaWFQ
bGF5ZXI6OmludmFsaWRUaW1lKCkgJiYgbm93UGxheWluZ0luZm8uc3VwcG9ydHNTZWVraW5nKSB7
CisgICAgICAgIGF1dG8gY2ZDdXJyZW50VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmN1
cnJlbnRUaW1lKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQo
KSk7CisgICAgfQorCisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNl
dFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIW5vd1BsYXlpbmdJbmZvLnNvdXJjZUFwcGxpY2F0aW9u
SWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgIE1STWVkaWFSZW1vdGVTZXRQYXJlbnRBcHBs
aWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgbm93UGxheWluZ0luZm8uc291
cmNlQXBwbGljYXRpb25JZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisgICAg
TVJQbGF5YmFja1N0YXRlIHBsYXliYWNrU3RhdGUgPSAobm93UGxheWluZ0luZm8uaXNQbGF5aW5n
KSA/IGtNUlBsYXliYWNrU3RhdGVQbGF5aW5nIDoga01SUGxheWJhY2tTdGF0ZVBhdXNlZDsKKyAg
ICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9uUGxheWJhY2tTdGF0ZUZvck9y
aWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgcGxheWJhY2tTdGF0ZSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJyb3IgZXJyb3IpIHsKKyNpZiBM
T0dfRElTQUJMRUQKKyAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyNlbHNlCisgICAgICAg
IFdURkxvZ0Fsd2F5cygiTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXli
YWNrU3RhdGVGb3JPcmlnaW4ocGxheWluZykgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOwor
I2VuZGlmCisgICAgfSk7CisgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKGluZm8u
Z2V0KCkpOworCisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldE5v
d1BsYXlpbmdWaXNpYmlsaXR5KCkpIHsKKyAgICAgICAgTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJp
bGl0eSB2aXNpYmlsaXR5ID0gbm93UGxheWluZ0luZm8uYWxsb3dzTm93UGxheWluZ0NvbnRyb2xz
VmlzaWJpbGl0eSA/IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHlBbHdheXNWaXNpYmxlIDog
TVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlzaWJsZTsKKyAgICAgICAgTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdp
bigpLCB2aXNpYmlsaXR5KTsKKyAgICB9Cit9CisKIFBsYXRmb3JtTWVkaWFTZXNzaW9uKiBNZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2E6Om5vd1BsYXlpbmdFbGlnaWJsZVNlc3Npb24oKQogeworICAg
IC8vIEZJWE1FOiBGaXggdGhpcyBsYXllcmluZyB2aW9sYXRpb24uCiAgICAgaWYgKGF1dG8gZWxl
bWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1lbnRGb3JTaG93aW5nUGxheWJh
Y2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6UGxheWJhY2tDb250cm9sc1B1
cnBvc2U6Ok5vd1BsYXlpbmcpKQogICAgICAgICByZXR1cm4gJmVsZW1lbnQtPm1lZGlhU2Vzc2lv
bigpOwogCkBAIC0yMjAsOTQgKzI4OCw0OCBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKLSAgICBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiogY3VycmVudFNlc3Npb24gPSB0
aGlzLT5ub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uKCk7Ci0KLSAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJjdXJyZW50U2Vzc2lvbjogIiwgY3VycmVudFNlc3Npb24gPyBjdXJyZW50U2Vz
c2lvbi0+bG9nSWRlbnRpZmllcigpIDogbnVsbHB0cik7Ci0KLSAgICBpZiAoIWN1cnJlbnRTZXNz
aW9uKSB7Ci0gICAgICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3RlX01STWVkaWFSZW1vdGVTZXRO
b3dQbGF5aW5nVmlzaWJpbGl0eSgpKQotICAgICAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1Bs
YXlpbmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBNUk5vd1BsYXlp
bmdDbGllbnRWaXNpYmlsaXR5TmV2ZXJWaXNpYmxlKTsKKyAgICBPcHRpb25hbDxOb3dQbGF5aW5n
SW5mbz4gbm93UGxheWluZ0luZm87CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBub3dQbGF5aW5n
RWxpZ2libGVTZXNzaW9uKCkpCisgICAgICAgIG5vd1BsYXlpbmdJbmZvID0gc2Vzc2lvbi0+bm93
UGxheWluZ0luZm8oKTsKIAorICAgIGlmICghbm93UGxheWluZ0luZm8pIHsKICAgICAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAiY2xlYXJpbmcgbm93IHBsYXlpbmcgaW5mbyIpOworICAg
ICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLmNsZWFyTm93UGxheWlu
Z0luZm8oKTsKIAotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Q2FuQmVOb3dQbGF5aW5nQXBwbGlj
YXRpb24oZmFsc2UpOwogICAgICAgICBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
biA9IGZhbHNlOwotCi0gICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nSW5mbyhudWxs
cHRyKTsKICAgICAgICAgbV9ub3dQbGF5aW5nQWN0aXZlID0gZmFsc2U7CiAgICAgICAgIG1fbGFz
dFVwZGF0ZWROb3dQbGF5aW5nVGl0bGUgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBtX2xhc3RV
cGRhdGVkTm93UGxheWluZ0R1cmF0aW9uID0gTkFOOwogICAgICAgICBtX2xhc3RVcGRhdGVkTm93
UGxheWluZ0VsYXBzZWRUaW1lID0gTkFOOwogICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWlu
Z0luZm9VbmlxdWVJZGVudGlmaWVyID0gMDsKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1Bs
YXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oTVJNZWRpYVJlbW90ZUdldExv
Y2FsT3JpZ2luKCksIGtNUlBsYXliYWNrU3RhdGVTdG9wcGVkLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgewotI2lmIExPR19ESVNBQkxFRAot
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbHNlCi0gICAgICAgICAgICBpZiAo
ZXJyb3IpCi0gICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiTVJNZWRp
YVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4oc3Rv
cHBlZCkgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOwotI2VuZGlmCi0gICAgICAgIH0pOwog
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJ0aXRsZSA9IFwiIiwgbm93UGxheWluZ0luZm8tPnRpdGxlLCAiXCIsIGlzUGxheWluZyA9ICIs
IG5vd1BsYXlpbmdJbmZvLT5pc1BsYXlpbmcsICIsIGR1cmF0aW9uID0gIiwgbm93UGxheWluZ0lu
Zm8tPmR1cmF0aW9uLCAiLCBub3cgPSAiLCBub3dQbGF5aW5nSW5mby0+Y3VycmVudFRpbWUsICIs
IGlkID0gIiwgbm93UGxheWluZ0luZm8tPnVuaXF1ZUlkZW50aWZpZXIsICIsIHJlZ2lzdGVyZWQg
PSAiLCBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbik7CisKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLnNldE5vd1BsYXlpbmdJbmZvKCFtX3JlZ2lz
dGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgKm5vd1BsYXlpbmdJbmZvKTsKKwogICAgIGlm
ICghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24pIHsKICAgICAgICAgbV9yZWdp
c3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24gPSB0cnVlOwogICAgICAgICBwcm92aWRlUHJl
c2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3NhcnkoKTsKLSAgICAgICAgTVJNZWRpYVJlbW90
ZVNldENhbkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKHRydWUpOwogICAgIH0KIAotICAgIFN0cmlu
ZyB0aXRsZSA9IGN1cnJlbnRTZXNzaW9uLT50aXRsZSgpOwotICAgIGRvdWJsZSBkdXJhdGlvbiA9
IGN1cnJlbnRTZXNzaW9uLT5zdXBwb3J0c1NlZWtpbmcoKSA/IGN1cnJlbnRTZXNzaW9uLT5kdXJh
dGlvbigpIDogTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7Ci0gICAgZG91YmxlIHJhdGUgPSBj
dXJyZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWluZyA/
IDEgOiAwOwotICAgIGF1dG8gaW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgaWYgKCFub3dQbGF5aW5n
SW5mby0+dGl0bGUuaXNFbXB0eSgpKQorICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ1Rp
dGxlID0gbm93UGxheWluZ0luZm8tPnRpdGxlOwogCi0gICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb1RpdGxlLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKLSAg
ICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IHRpdGxlOwotICAgIH0KLQotICAg
IGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSAmJiBkdXJhdGlvbiAhPSBNZWRpYVBsYXllcjo6
aW52YWxpZFRpbWUoKSkgewotICAgICAgICBhdXRvIGNmRHVyYXRpb24gPSBhZG9wdENGKENGTnVt
YmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckRvdWJsZVR5cGUsICZkdXJh
dGlvbikpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24sIGNmRHVyYXRpb24uZ2V0KCkpOworICAgIGRv
dWJsZSBkdXJhdGlvbiA9IG5vd1BsYXlpbmdJbmZvLT5kdXJhdGlvbjsKKyAgICBpZiAoc3RkOjpp
c2Zpbml0ZShkdXJhdGlvbikgJiYgZHVyYXRpb24gIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1l
KCkpCiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVyYXRpb24gPSBkdXJhdGlvbjsK
LSAgICB9CiAKLSAgICBhdXRvIGNmUmF0ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJhdGUpKTsKLSAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxh
eWJhY2tSYXRlLCBjZlJhdGUuZ2V0KCkpOworICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5m
b1VuaXF1ZUlkZW50aWZpZXIgPSBub3dQbGF5aW5nSW5mby0+dW5pcXVlSWRlbnRpZmllcjsKIAot
ICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSBjdXJyZW50
U2Vzc2lvbi0+dW5pcXVlSWRlbnRpZmllcigpOwotICAgIGF1dG8gY2ZJZGVudGlmaWVyID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJMb25nTG9u
Z1R5cGUsICZtX2xhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIGNmSWRlbnRpZmllci5nZXQoKSk7Ci0KLSAgICBkb3Vi
bGUgY3VycmVudFRpbWUgPSBjdXJyZW50U2Vzc2lvbi0+Y3VycmVudFRpbWUoKTsKLSAgICBpZiAo
c3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgJiYgY3VycmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6
OmludmFsaWRUaW1lKCkgJiYgY3VycmVudFNlc3Npb24tPnN1cHBvcnRzU2Vla2luZygpKSB7Ci0g
ICAgICAgIGF1dG8gY2ZDdXJyZW50VGltZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmN1cnJlbnRUaW1lKSk7Ci0gICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxh
eWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CisgICAgZG91YmxlIGN1
cnJlbnRUaW1lID0gbm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1lOworICAgIGlmIChzdGQ6Omlz
ZmluaXRlKGN1cnJlbnRUaW1lKSAmJiBjdXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxp
ZFRpbWUoKSAmJiBub3dQbGF5aW5nSW5mby0+c3VwcG9ydHNTZWVraW5nKQogICAgICAgICBtX2xh
c3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lID0gY3VycmVudFRpbWU7Ci0gICAgfQotCi0g
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUgPSBcIiIsIHRpdGxlLCAiXCIsIHJh
dGUgPSAiLCByYXRlLCAiLCBkdXJhdGlvbiA9ICIsIGR1cmF0aW9uLCAiLCBub3cgPSAiLCBjdXJy
ZW50VGltZSk7CiAKLSAgICBTdHJpbmcgcGFyZW50QXBwbGljYXRpb24gPSBjdXJyZW50U2Vzc2lv
bi0+c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci0gICAgaWYgKGNhbkxvYWRfTWVkaWFS
ZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIXBhcmVudEFwcGxp
Y2F0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0
aW9uKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBwYXJlbnRBcHBsaWNhdGlvbi5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKLQotICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IGN1cnJlbnRT
ZXNzaW9uLT5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCk7Ci0gICAgTVJQbGF5
YmFja1N0YXRlIHBsYXliYWNrU3RhdGUgPSAoY3VycmVudFNlc3Npb24tPnN0YXRlKCkgPT0gUGxh
dGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcpID8ga01SUGxheWJhY2tTdGF0ZVBsYXlpbmcgOiBr
TVJQbGF5YmFja1N0YXRlUGF1c2VkOwotICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBw
bGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdp
bigpLCBwbGF5YmFja1N0YXRlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFS
ZW1vdGVFcnJvciBlcnJvcikgewotI2lmIExPR19ESVNBQkxFRAotICAgICAgICBVTlVTRURfUEFS
QU0oZXJyb3IpOwotI2Vsc2UKLSAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4o
cGxheWluZykgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOwotI2VuZGlmCi0gICAgfSk7Ci0g
ICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKGluZm8uZ2V0KCkpOworICAgIG1fbm93
UGxheWluZ0FjdGl2ZSA9IG5vd1BsYXlpbmdJbmZvLT5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNW
aXNpYmlsaXR5OwogCi0gICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNl
dE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpIHsKLSAgICAgICAgTVJOb3dQbGF5aW5nQ2xpZW50Vmlz
aWJpbGl0eSB2aXNpYmlsaXR5ID0gY3VycmVudFNlc3Npb24tPmFsbG93c05vd1BsYXlpbmdDb250
cm9sc1Zpc2liaWxpdHkoKSA/IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxpdHlBbHdheXNWaXNp
YmxlIDogTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlzaWJsZTsKLSAgICAgICAg
TVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2Nh
bE9yaWdpbigpLCB2aXNpYmlsaXR5KTsKLSAgICB9CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogI2VuZGlmIC8vIFVTRShNRURJQVJFTU9URSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCmlu
ZGV4IDkzZTViZmM0MGI4ZjE4NTgzODM4OTY2MzZmNjJlZTY5MThjOTkxNTMuLjVkZjIwYTdhYTE0
YzFjNGNhOTQ5MzdiNDliMzBlNDAxZTk4ZTkzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaApAQCAt
NTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY3RpdmVBdWRpb1JvdXRlRGlkQ2hhbmdl
KE9wdGlvbmFsPGJvb2w+JiYpOwogICAgIHZvaWQgYWN0aXZlVmlkZW9Sb3V0ZURpZENoYW5nZShP
cHRpb25hbDxib29sPiYmKTsKICNlbmRpZgorICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCB2b2lk
IHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQppbmRleCA0NTE3MjRmZTczYWNmY2Q1OTk0NjRjMGM0MmYxOGM1NmU2MzMxOTE3Li5jZjI1ZmI0
ODYwMTc2ODI1YTc3YWQ4NjI0Y2I0NWJkZjM5ODNlYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQpAQCAtMTc0LDcgKzE3NCwxMyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3Zp
ZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2FyeSgpCiAgICAgaWYgKG1faGF2ZVBy
ZXNlbnRlZEFwcGxpY2F0aW9uUElEKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXZlUHJlc2Vu
dGVkQXBwbGljYXRpb25QSUQgPSB0cnVlOworICAgIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoKTsKKyNlbmRpZgorfQogCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnByb3Zp
ZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKQoreworI2lmIEhBVkUoQ0VMRVNUSUFMKQogICAg
IGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0luaGVyaXRBcHBsaWNhdGlvblN0
YXRlRnJvbSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2Y2YxYzMwYjNl
MzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxLi5iMGU3OGM3ODdmYTU3ZWQwZGU5MzQwZjE5
N2I1ZDZlMjM0NWU3YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Myw2ICs2MywxMSBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogCisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KKyNlbmRpZgorCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHkuaCIK
ICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgpAQCAtODgsOCArOTMs
MTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2
ZXIpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFsIHsgfQogICAgIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fcHJvY2Vzcy5jb25uZWN0aW9uKCk7
IH0KLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNlc3Npb25NYW5hZ2VyKCkgZmlu
YWwgeyByZXR1cm4gbV9wcm9jZXNzLnNlc3Npb25NYW5hZ2VyKCk7IH0KLSAgICB2b2lkIHdpbGxT
dGFydENhbWVyYUNhcHR1cmUoKSBmaW5hbCB7IHNlc3Npb25NYW5hZ2VyKCkucHJlcGFyZVRvU2Vu
ZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCk7IH0KKyNpZiBQTEFURk9STShJT1MpCisgICAg
dm9pZCB3aWxsU3RhcnRDYW1lcmFDYXB0dXJlKCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICht
X3Byb3ZpZGVkUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX3Byb3ZpZGVkUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEID0gdHJ1ZTsKKyAgICAg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RCgpOworICAgIH0KKworICAgIGJvb2wgbV9wcm92aWRlZFByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RCB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1f
cHJvY2VzczsKIH07CkBAIC0yMzEsNiArMjQ1LDE4IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
CiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCisjaWYgUExBVEZPUk0oQ09D
T0EpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyTm93UGxheWluZ0luZm8o
KQoreworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbygp
OworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZv
KGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBu
b3dQbGF5aW5nSW5mbykKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1Bs
YXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyk7Cit9
CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0z
NzEsMTMgKzM5Nyw2IEBAIGNvbnN0IFN0cmluZyYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXNzaW9uTWFu
YWdlcigpCi17Ci0gICAgaWYgKCFtX3Nlc3Npb25NYW5hZ2VyKQotICAgICAgICBtX3Nlc3Npb25N
YW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpjcmVhdGUoKTsKLSAgICByZXR1
cm4gKm1fc2Vzc2lvbk1hbmFnZXI7Ci19Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogdm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVy
ZSh1aW50NjRfdCBvcmllbnRhdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGEzZWNhNWM4ZmFkNjkxODM4
MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYuLjE4MjI2YTdjMzQ5OTE4YWNiYmM0NWJmZjU0YWY2YTdi
YmZjNzAxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbik7CiAjZW5k
aWYKIAotICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciYgc2Vzc2lvbk1h
bmFnZXIoKTsKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgpAQCAtMTA4LDYgKzEwNiwxMCBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2
b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJv
b2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IFdlYkNvcmU6Ok5vd1BsYXlpbmdJ
bmZvJik7CisjZW5kaWYKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9p
ZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggOTMyYzAxMjJkZTA4MWVkZTliYjllZmI1NmY5YmM1MjU5YmE0ZDcwNC4uOGQ5
MWNlMmJjZGJkYWVjZmMyNTcxMDNjZGFjZTY5NjU0Y2M0OGQzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDEwIEBACiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktp
dDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZvKCk7Cisg
ICAgdm9pZCBTZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9u
LCBzdHJ1Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8gbm93UGxheWluZ0luZm8pOworI2VuZGlm
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5k
ZXggODcxZGVhNjBiYjcyODIxYzYxMzU0MThmMjg3Yjk1ODM2MzBmYjgzYy4uZTI5MDM0YjRmMzE1
YzFkZTYzYTE3MmE0ZDNhZDRhZmMzNTAyNTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNjc5
LDYgKzY3OSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6dXBkYXRlQ2FjaGVkU3Rh
dGUoKQogICAgIG1fY2FjaGVkU3RhdGUucmVhZHlTdGF0ZSA9IG1fcGxheWVyLT5yZWFkeVN0YXRl
KCk7CiAgICAgbV9jYWNoZWRTdGF0ZS5wYXVzZWQgPSBtX3BsYXllci0+cGF1c2VkKCk7CiAgICAg
bV9jYWNoZWRTdGF0ZS5sb2FkaW5nUHJvZ3Jlc3NlZCA9IG1fcGxheWVyLT5kaWRMb2FkaW5nUHJv
Z3Jlc3MoKTsKKyAgICBtX2NhY2hlZFN0YXRlLmhhc0F1ZGlvID0gbV9wbGF5ZXItPmhhc0F1ZGlv
KCk7CiAKICAgICBpZiAobV9idWZmZXJlZENoYW5nZWQpIHsKICAgICAgICAgbV9idWZmZXJlZENo
YW5nZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggYmRhZmE1M2Vh
YmVkODZjY2EzMTliMmFiMzhiYzQxMWM4ZGRhMDVlMy4uODU3ZDk5YTlkMTE3YjFjMDJlNWIxOWQy
YWU0NmU0YWRiMDlmNDMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTMzLDkg
KzMzLDkgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYUNvbnN0cmFp
bnRzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJBdWRp
b0J1ZmZlckxpc3QuaD4KQEAgLTQ2LDMwICs0NiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U291cmNlUHJveHkKICAg
ICA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgotICAgICwgcHVibGljIFNo
YXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQKLSAgICAsIHB1YmxpYyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6QXVkaW9DYXB0dXJlU291cmNlIHsKKyAgICAsIHB1YmxpYyBTaGFyZWRSaW5nQnVm
ZmVyU3RvcmFnZTo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBTb3VyY2VQcm94eShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlciwgUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCisg
ICAgU291cmNlUHJveHkoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291
cmNlKQogICAgICAgICA6IG1faWQoaWQpCi0gICAgICAgICwgbV9zZXNzaW9uTWFuYWdlcihtYWtl
V2Vha1B0cihzZXNzaW9uTWFuYWdlcikpCiAgICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUo
Y29ubmVjdGlvbikpCiAgICAgICAgICwgbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQogICAgICAg
ICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPiht
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPih0aGlzKSkpCiAgICAgewogICAg
ICAgICBtX3NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0gICAgICAgIGlmIChtX3NvdXJj
ZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvKQotICAgICAgICAg
ICAgc2Vzc2lvbk1hbmFnZXIuYWRkQXVkaW9DYXB0dXJlU291cmNlKCp0aGlzKTsKICAgICB9CiAK
ICAgICB+U291cmNlUHJveHkoKQogICAgIHsKICAgICAgICAgc3RvcmFnZSgpLmludmFsaWRhdGUo
KTsKICAgICAgICAgbV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLQotICAgICAgICBp
ZiAobV9zb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyAm
JiBtX3Nlc3Npb25NYW5hZ2VyKQotICAgICAgICAgICAgbV9zZXNzaW9uTWFuYWdlci0+cmVtb3Zl
QXVkaW9DYXB0dXJlU291cmNlKCp0aGlzKTsKICAgICB9CiAKICAgICBSZWFsdGltZU1lZGlhU291
cmNlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsgfQpAQCAtNzcsMTIgKzY5LDEzIEBAIHB1
YmxpYzoKICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkgeyByZXR1
cm4gbV9kZXNjcmlwdGlvbjsgfQogICAgIGludDY0X3QgbnVtYmVyT2ZGcmFtZXMoKSB7IHJldHVy
biBtX251bWJlck9mRnJhbWVzOyB9CiAKLSAgICBib29sIGlzQ2FwdHVyaW5nQXVkaW8oKSBjb25z
dCBmaW5hbCB7IHJldHVybiAhbV9pc0VuZGVkICYmIG1fc291cmNlLT5pc1Byb2R1Y2luZ0RhdGEo
KTsgfQotCiAgICAgdm9pZCBhdWRpb1VuaXRXaWxsU3RhcnQoKSBmaW5hbAogICAgIHsKLSAgICAg
ICAgaWYgKCFtX2lzRW5kZWQgJiYgbV9zZXNzaW9uTWFuYWdlcikKLSAgICAgICAgICAgIG1fc2Vz
c2lvbk1hbmFnZXItPnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFuZ2VkKCk7CisgICAgICAgIC8v
IEZJWE1FOiBXZWJQcm9jZXNzIG1pZ2h0IHdhbnQgdG8gc2V0IHRoZSBjYXRlZ29yeS9idWZmZXJT
aXplIGl0c2VsZiwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgcmVtb3ZlIHRoYXQgY29kZS4KKyAg
ICAgICAgYXV0byBidWZmZXJTaXplID0gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2Ft
cGxlUmF0ZSgpIC8gNTA7CisgICAgICAgIGlmIChBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24o
KS5wcmVmZXJyZWRCdWZmZXJTaXplKCkgPiBidWZmZXJTaXplKQorICAgICAgICAgICAgQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShidWZmZXJTaXpl
KTsKKyAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdvcnkoQXVk
aW9TZXNzaW9uOjpQbGF5QW5kUmVjb3JkLCBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQpOwog
ICAgIH0KIAogICAgIHZvaWQgc3RhcnQoKQpAQCAtMjE0LDcgKzIwNyw3IEBAIHZvaWQgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNl
V2l0aENvbnN0cmFpCiAgICAgICAgIGF1dG8gc291cmNlID0gc291cmNlT3JFcnJvci5zb3VyY2Uo
KTsKICAgICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VS
VCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1h
a2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCBtX2Nvbm5lY3Rpb25Qcm94eS0+c2Vzc2lvbk1hbmFn
ZXIoKSwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7
CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCBt
X2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBXVEZNb3ZlKHNvdXJjZSkpKTsKICAgICB9
IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVycm9y
LmVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VlZGVkLCBpbnZhbGlk
Q29uc3RyYWludHMsIFdURk1vdmUoc2V0dGluZ3MpKTsKQEAgLTI3MCw3ICsyNjMsNyBAQCB2b2lk
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNsb25lKFJlYWx0aW1lTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyIGNsb25lZElELAogICAgIEFTU0VSVChtX3Byb3hpZXMuY29udGFpbnMoY2xvbmVk
SUQpKTsKICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhuZXdTb3VyY2VJRCkpOwogICAg
IGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQoY2xvbmVkSUQpKQotICAgICAgICBtX3By
b3hpZXMuYWRkKG5ld1NvdXJjZUlELCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihuZXdTb3VyY2VJ
RCwgbV9jb25uZWN0aW9uUHJveHktPnNlc3Npb25NYW5hZ2VyKCksIG1fY29ubmVjdGlvblByb3h5
LT5jb25uZWN0aW9uKCksIHByb3h5LT5zb3VyY2UoKS5jbG9uZSgpKSk7CisgICAgICAgIG1fcHJv
eGllcy5hZGQobmV3U291cmNlSUQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KG5ld1NvdXJjZUlE
LCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBwcm94eS0+c291cmNlKCkuY2xvbmUo
KSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnJlcXVlc3RUb0Vu
ZChSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBzb3VyY2VJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuaAppbmRleCAyN2JjNzcwYzBkOWM5MTY3YTQ5YTdkMjkwZmFmZmQzOTkyODY0ODkyLi5h
NzZhZjk2ZWE1ODRjYjIxMjk1MjdiMmYxMjlhYzI4Y2M2YjJkN2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5oCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UpID0gMDsKICAgICAgICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24oKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlcigpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHdpbGxTdGFydENhbWVyYUNhcHR1cmUoKSB7IH0KICAgICB9OwogICAgIGV4cGxpY2l0
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoVW5pcXVlUmVmPENvbm5lY3Rpb25Qcm94eT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4
YjcwZDY0N2VlODI2Y2FkZDJkMmJmZjdlZGYzODdmM2M4YjA0ZmRmLi4wMzJmMGI5MDBhZDlmNDQy
MjhmMjBlNzY4NjIwYzIxYjYzYzI2ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTE2MCw3ICsxNjAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikgZmluYWwgeyBtX3Byb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHJlY2VpdmVyKTsgfQogICAgIHZv
aWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUpIGZpbmFsIHsgbV9wcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lKTsgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGZpbmFs
IHsgcmV0dXJuICptX3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9Ci0gICAgUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlcigpIGZpbmFsIHsgcmV0dXJuIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpOyB9CiAKICAgICBXZWJQcm9jZXNzUHJv
eHkmIG1fcHJvY2VzczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAppbmRleCA1ZDdhOGI4ZDExMjRiMmE1Mjhh
ZDczYmRjOTZkOWE5NzgwZGMyMDRjLi4xOGUxYmU1YjNmNjRhZmY5YmI2OWFlYWNmOGJlZjM4Y2Qy
OTEzMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dl
Yk1lZGlhU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVN0cmF0ZWd5LmgiCiAKKyNpbmNsdWRlICJHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCIKICNpbmNsdWRlICJSZW1v
dGVDRE1GYWN0b3J5LmgiCkBAIC0zMyw2ICszNCwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5
aW5nSW5mby5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNjMsNCArNjksMzAgQEAgdm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpyZWdpc3RlckNETUZhY3Rv
cmllcyhWZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9yeSo+JiBmYWN0b3IKIH0KICNlbmRpZgogCisj
aWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OmNsZWFyTm93UGxheWlu
Z0luZm8oKQoreworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9j
ZXNzKSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29u
bmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhck5v
d1BsYXlpbmdJbmZvIHsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsKK30KKwor
dm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYgbm93UGxheWlu
Z0luZm8pCit7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGlmIChtX3VzZUdQVVByb2Nl
c3MpIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25u
ZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldE5vd1Bs
YXlpbmdJbmZvIHsgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvIH0s
IDApOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwg
bm93UGxheWluZ0luZm8pOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0
ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRl
Z3kuaAppbmRleCA0ZmFiMGU5NDRmYzE0ZTY4NDM3OWUzMDA4MTYzYmUxNjJkZDg5YjRkLi42ZGVm
ZTNiMTU0OWM0NGQ0NWZhNDFlNTk1MjYzZjRiN2UwNzFjMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaApAQCAtNDUs
NiArNDUsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIHZv
aWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYpIG92
ZXJyaWRlOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBjbGVhck5vd1Bs
YXlpbmdJbmZvKCkgZmluYWw7CisgICAgdm9pZCBzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFz
Tm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbyYpIGZp
bmFsOworI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQ
VVByb2Nlc3MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGI5
MDllY2M0MzliY2QzYzZmNmRhODA0MWM2ZWYyOTNmZjM0NjY5NmYuLjczMTllNjhkNTdkZDhiZWU1
MzMxMzMxNGM2MjgwZGVlZjdjMjkyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0K
QEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVk
aWFTdHJhdGVneS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CkBAIC04MCw2ICs4MSwxNSBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1S
ZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwogICAgIH0KICNlbmRpZgorICAgIHZvaWQgY2xl
YXJOb3dQbGF5aW5nSW5mbygpIGZpbmFsCisgICAgeworICAgICAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE5v
d1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IE5vd1Bs
YXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykgZmluYWwKKyAgICB7CisgICAgICAgIE1lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIG5vd1BsYXlpbmdJbmZvKTsKKyAgICB9CiB9OwogCiBNZWRpYVN0cmF0ZWd5KiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZU1lZGlhU3RyYXRlZ3koKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392554</attachid>
            <date>2020-03-05 03:08:19 -0800</date>
            <delta_ts>2020-03-05 03:53:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208568-20200305120817.patch</filename>
            <type>text/plain</type>
            <size>56774</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZmM2I5NmQwMWZiYjQx
OWU4MDY3YzJkMGNlNDBiNWVjNjlkOTM5MC4uM2IzYzY5YjAxOTY0MDg1ZTAxNjUzM2YxNDNhNDZj
ZWY1ZWYzMTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTAzLTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvcnQgTm93UGxheWlu
ZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxheWluZyBpbiBHUFVQcm9jZXNz
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAg
ICBSZW1vdmVkIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50IE5vd1BsYXlpbmcgZ2V0dGVycyBz
aW5jZSBvbmx5IEhUTUxNZWRpYUVsZW1lbnQgaXMgZWxpZ2libGUuCisgICAgICAgIExldCBNZWRp
YUVsZW1lbnRTZXNzaW9uIGdlbmVyYXRlcyBpdHMgb3duIE5vd1BsYXlpbmdJbmZvIHdoZW4gcmVx
dWVzdGVkIGJ5IHRoZSBzZXNzaW9uIG1hbmFnZXIuCisgICAgICAgIFVzZSBwbGF0Zm9ybSBzdHJh
dGVnaWVzIHRvIGFic3RyYWN0IG91dCBob3cgdG8gZXhlY3V0ZSBOb3dQbGF5aW5nIG9yZGVycy4K
KworICAgICAgICBNYW51YWxseSB0ZXN0ZWQgZm9yIE5vd1BsYXlpbmcgZnVuY3Rpb25hbGl0eS4K
KyAgICAgICAgQWxzbyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzIGZvciB0aGUgcmVmYWN0b3Jp
bmcgYml0cy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
Ojpzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3Bs
YXlpbmdBdWRpbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
Ojpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRT
ZXNzaW9uOjphbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9NZWRpYVN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOb3dQbGF5aW5nSW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vd1BsYXlpbmdJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpub3dQbGF5aW5nSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dW5pcXVlSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6dGl0bGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmR1cmF0aW9u
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjdXJyZW50VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNl
c3Npb25VbmlxdWVJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Npb25UaXRsZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVk
aWFTZXNzaW9uRHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmFsbG93c05vd1BsYXlp
bmdDb250cm9sc1Zpc2liaWxpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6bm93UGxheWluZ0VsaWdpYmxlU2Vzc2lvbik6CisgICAg
ICAgIChNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQpOgorCiAyMDIwLTAz
LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUHV0IGFs
bCBnZW5lcmF0ZWQgSlNDZWxscyBpbiBXZWJDb3JlIGludG8gSXNvU3Vic3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZjc2YmQ1ZGEzYWIxMTI2OWVmMjFmMzVmMGYzMTM5ZTY3MjFkY2Y1Yi4uNTgzODkzMTBhZDBk
ODU1MTE1ZGZmZGI4NWJkNzRkOTJiY2Q0N2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAyMC0wMy0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
RXhwb3J0IE5vd1BsYXlpbmcgY29tbWFuZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlp
bmcgaW4gR1BVUHJvY2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgRXhwb3J0IE5vd1BsYXlpbmcgb3JkZXJzIHRvIEdQVSBwcm9jZXNz
IHRocm91Z2ggSVBDIGlmIEdQVVByb2Nlc3MgaXMgdHVybmVkIG9uLgorICAgICAgICBPdGhlcndp
c2UgdXNlIHRoZSByZWd1bGFyIGluIHByb2Nlc3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIE1h
a2Ugc3VyZSB0byBzeW5jIHRoZSBoYXNBdWRpbyBzdGF0ZSBzbyB0aGF0IGl0IGdldHMgc2V0IHBy
b3Blcmx5IGluIFdlYlByb2Nlc3MuCisKKyAgICAgICAgUmVtb3ZlIHRoZSB1c2Ugb2YgYSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgZm9yIGNhcHR1cmUgc2luY2UgaXQgaXMgbm93IHVzaW5n
IHBsYXRmb3JtIHN0cmF0ZWdpZXMgaW4gdHdvIHBsYWNlcy4KKyAgICAgICAgSW5zdGVhZCB1c2Ug
ZGlyZWN0bHkgc3RhdGljIG1ldGhvZHMgb2YgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUyB0byBpbXBs
ZW1lbnQgcGlkIGZvcndhcmRpbmcgYW5kIEF1ZGlvU2Vzc2lvbiB0byBzZXQgY2F0ZWdvcnkgYW5k
IGJ1ZmZlciBzaXplLgorICAgICAgICBBIGZvbGxvdy11cCByZWZhY3RvcmluZyBzaG91bGQgcHJv
YmFibHkgcmVhcmNoaXRlY3QgQXVkaW9TZXNzaW9uIGhhbmRsaW5nLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldE5vd1BsYXlpbmdJbmZvKToK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vzc2lvbk1hbmFn
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRh
dGVDYWNoZWRTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpTb3VyY2VQcm94eTo6U291cmNlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQcm94eTo6flNvdXJjZVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVk
aWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y2xvbmUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyYXRl
Z3k6OmNsZWFyTm93UGxheWluZ0luZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmF0
ZWd5OjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5oOgorCiAyMDIwLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSBtZXRob2RzIG9mdGVuIGNyZWF0
ZSBwcm9jZXNzIHBvb2xzIGFuZCBsYXVuY2ggbmV0d29yayBwcm9jZXNzZXMgdW5uZWNlc3Nhcmls
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQ2OTgwOWE5ZjUwYzZkNTY0M2Q0ODcz
YTM4YTA3ZjBhZmMyNTM1ZTkuLjg1Yzc3MzMwMmNiMjFkODM2ZDhhMDY0Y2FjODYxZTZkOTg2M2Jl
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0w
My0wNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3J0
IE5vd1BsYXlpbmcgY29tbWFuZHMgdG8gR1BVUHJvY2VzcyB3aGVuIG1lZGlhIHBsYXlpbmcgaW4g
R1BVUHJvY2VzcyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24u
CisKKyAgICAgICAgVXNlIGluLXByb2Nlc3Mgbm93IHBsYXlpbmcgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisKIDIw
MjAtMDMtMDQgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGlu
aXRpYWwgbGF5b3V0IHRocm90dGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZGJhYTFkN2MwNjRh
OGNkNmU5M2E0M2JlNWFlMjYyMGU1ZDI5NjgyNi4uOGQ4N2E2ZmQ5OWRiN2QzYTUzOTBhNDUxYjVh
MmJhOWQyMmQyMTUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMDMxLDYgKzEwMzEsNyBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmgKICAgICBwbGF0Zm9ybS9hdWRpby9BdWRpb1NvdXJjZVByb3ZpZGVyLmgK
ICAgICBwbGF0Zm9ybS9hdWRpby9BdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgKKyAgICBwbGF0Zm9y
bS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCiAgICAgcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRp
b0RhdGEuaAogICAgIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKICAgICBw
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGQ0NzAwYTY5
NTA1YjE2MmFiZWFjMzNhYzkyODgyYjFkZTcwMzFlNDIuLjRhMmUxN2IwMDcxY2ZjN2Y3N2VmNzI2
ZmYyY2U1ZWQ3ZmJlM2RiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTM3MywxNiArMzczLDYgQEAgRG9jdW1lbnRJZGVudGlm
aWVyIEF1ZGlvQ29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0CiAgICAg
cmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRp
ZmllciB7IH07CiB9CiAKLVN0cmluZyBBdWRpb0NvbnRleHQ6OnNvdXJjZUFwcGxpY2F0aW9uSWRl
bnRpZmllcigpIGNvbnN0Ci17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1l
bnQoKTsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUo
KSA6IG51bGxwdHIpIHsKLSAgICAgICAgaWYgKE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5n
Q29udGV4dCA9IGZyYW1lLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpKQotICAgICAgICAg
ICAgcmV0dXJuIG5ldHdvcmtpbmdDb250ZXh0LT5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KIGJvb2wgQXVkaW9Db250
ZXh0Ojppc1N1c3BlbmRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFkb2N1bWVudCgpIHx8IGRv
Y3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggMDY4ZWE2ZGM0YWQwMGU0ODViNDI4M2MyMTY1
MWNjYTU2Nzc2NTFkZS4uMTYzMmE4ODNmZGY3NWZjNzUwY2Y3ZjEwYzgwNmEyNTI1ZGE3ZmIyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBA
IC0zNTUsNyArMzU1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250
cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
LCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3Zl
cnJpZGUgeyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tS
ZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZGYwMjNlYmQ0ZWRkYmY2OTM0MDU3MjM2OTdhZGU5YmY1Mzk2ODU4OS4u
ZmE4OWVjNWZhNmYzN2JmOTI1ZWQzMmMxODY0OWMzYWE5MzMxZTU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA4NSw2ICsx
MDg1LDcgQEAKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2
MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAw
MEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0
YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNDE2RkQyNUYyNDBGQTRFNTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZGRDI1
RDI0MEVFMUFFMDA2NjYxRDggLyogTm93UGxheWluZ0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xF
bGVtZW50cy5oICovOyB9OwogCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTc2MTJBQjFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5jcHAgKi87IH07CiAJCTQxNzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRp
YUVuZHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICov
OyB9OwpAQCAtNzM2Nyw2ICs3MzY4LDcgQEAKIAkJNDE2RDc1OUYyMEM2NDQxMzAwRDAyRDJDIC8q
IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTZFMEIzNzIwOUJDM0MyMDA0QTk1RDkgLyogRmV0Y2hJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTZFMjlBNTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0
aW5nUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyUmVwb3J0
aW5nUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2RkQyNUQyNDBFRTFB
RTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5vd1BsYXlpbmdJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NzBBMkU5MUQ4QzBDQzAwMDMxODQ1MiAvKiBKU0RPTVdyYXBwZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTkx
MzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yODc3Myw2ICsyODc3NSw3IEBACiAJCQkJRkQzMTYwNkIxMkIwMjZG
NzAwQzFBMzU5IC8qIEhSVEZQYW5uZXIuaCAqLywKIAkJCQlGREIxNzAwMzE0QTJCQUIyMDBBMkI1
RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCAqLywKIAkJCQlGREIxNzAwNDE0QTJCQUIy
MDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggKi8sCisJCQkJNDE2RkQyNUQyNDBF
RTFBRTAwNjY2MUQ4IC8qIE5vd1BsYXlpbmdJbmZvLmggKi8sCiAJCQkJRkQzMTYwNkMxMkIwMjZG
NzAwQzFBMzU5IC8qIFBhbm5lci5jcHAgKi8sCiAJCQkJRkQzMTYwNkQxMkIwMjZGNzAwQzFBMzU5
IC8qIFBhbm5lci5oICovLAogCQkJCUNERTY2N0ExMUU0QkJBNEQwMEU4MTU0QSAvKiBQbGF0Zm9y
bUF1ZGlvRGF0YS5oICovLApAQCAtMzE2NjQsNiArMzE2NjcsNyBAQAogCQkJCTdDQzJEREZCMUVD
OTQxNUEwMDI3Qjc3NCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMUZFNkRGQTE1MDA0QzJBMDAwNEVCQzQgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyog
Tm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNkZEMjVGMjQwRkE0RTUwMDY2
NjFEOCAvKiBOb3dQbGF5aW5nSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMEIwRDdF
MkI4MjAwN0MzOTgzIC8qIE5QX2pzb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkyN0ZE
MjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjE5QjNC
MERDQTg3QUIwMDQwRTNBMCAvKiBucGZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQ1MTE0Y2EyMmYwM2FjMjFmZjc1MmEx
ZmQ1NjYxMDYzMzg0MDgwZDMuLjMyYTljNWI1NGZiYTZmNGM2ZmIxZjgyODIyYjA5NzA2MTBkZTFk
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC01OTIsNiArNTky
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpOwog
ICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKIAorICAgIHVpbnQ2NF90IG1l
ZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKSBjb25zdDsKKyAgICBTdHJpbmcgbWVkaWFTZXNz
aW9uVGl0bGUoKSBjb25zdDsKKyAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVy
KCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoSW5pdGlhbGl6YXRpb24oKTsKQEAgLTczNSw3ICs3MzksNiBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBtZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkgb3Zl
cnJpZGU7CiAKLSAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlQXBwbGljYXRpb25JZGVudGlm
aWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVy
KCk7IH0KICAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYVBsYXllclByZWZlcnJlZEF1ZGlvQ2hhcmFj
dGVyaXN0aWNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTg4MiwxMCArODg1LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzdW1l
QXV0b3BsYXlpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wg
c2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKLSAgICB1aW50NjRfdCBtZWRpYVNlc3Npb25VbmlxdWVJ
ZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Ci0gICAgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZHVyYXRpb24oKTsgfQotICAgIGRvdWJsZSBtZWRpYVNlc3Npb25D
dXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KICAg
ICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlOwogICAg
IGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCA4YjIzZjRhODc1OWQx
ZDJkYWI4ZDM4ZjU0MzIyMzg1ODhlNDA3YTljLi43NmU2MDUwOGVkYzI3NTg3NmFkZDAyODYyNDcx
M2ZlMGIxMmE3NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAj
aW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOb3dQbGF5aW5nSW5mby5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJRdWlya3MuaCIKQEAgLTk3NywxNiAr
OTc4LDI0IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6dXBkYXRlSXNNYWluQ29udGVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1faXNNYWluQ29udGVudDsKIH0KIAotYm9vbCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjphbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5KCkgY29uc3QKK2Jv
b2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5
aW5nQXVkaW8oKSBjb25zdAogewogICAgIGF1dG8gcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgp
LnBhZ2UoKTsKLSAgICByZXR1cm4gcGFnZSAmJiAhcGFnZS0+aXNWaXNpYmxlQW5kQWN0aXZlKCk7
CisgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9w
bGF5aW5nQXVkaW8oKTsKIH0KIAotYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQbGF5
YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpIGNvbnN0CitPcHRpb25hbDxOb3dQbGF5
aW5nSW5mbz4gTWVkaWFFbGVtZW50U2Vzc2lvbjo6bm93UGxheWluZ0luZm8oKSBjb25zdAogewot
ICAgIGF1dG8gcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsKLSAgICByZXR1cm4g
cGFnZSAmJiBwYWdlLT5hbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygp
OworICAgIGF1dG8qIHBhZ2UgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgYm9v
bCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5ID0gcGFnZSAmJiAhcGFnZS0+aXNW
aXNpYmxlQW5kQWN0aXZlKCk7CisgICAgYm9vbCBpc1BsYXlpbmcgPSBzdGF0ZSgpID09IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5nOworICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nID0gbV9l
bGVtZW50LnN1cHBvcnRzU2Vla2luZygpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IHN1cHBvcnRz
U2Vla2luZyA/IG1fZWxlbWVudC5kdXJhdGlvbigpIDogTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1l
KCk7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gbV9lbGVtZW50LmN1cnJlbnRUaW1lKCk7Cisg
ICAgaWYgKCFzdGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSB8fCAhc3VwcG9ydHNTZWVraW5nKQor
ICAgICAgICBjdXJyZW50VGltZSA9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOworCisgICAg
cmV0dXJuIE5vd1BsYXlpbmdJbmZvIHsgbV9lbGVtZW50Lm1lZGlhU2Vzc2lvblRpdGxlKCksIG1f
ZWxlbWVudC5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSwgZHVyYXRpb24sIGN1cnJlbnRU
aW1lLCBzdXBwb3J0c1NlZWtpbmcsIG1fZWxlbWVudC5tZWRpYVNlc3Npb25VbmlxdWVJZGVudGlm
aWVyKCksIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9Owog
fQogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoY29uc3QgTWVkaWFQbGF5YmFj
a0RlbmlhbFJlYXNvbiBlbnVtZXJhdGlvblZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uaAppbmRleCAxZjJkMzRmOTUzZjM1MmUwOTUyMWI4M2QxOGUyYmQ2YzFj
Mjk2NjIzLi4xY2QyYzhhMGRjN2FlZWRkNzFlNzg2Njg3YzgzZWZkMDdkYjk3ZDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtMTQ5LDcgKzE0OSw2IEBA
IHB1YmxpYzoKICAgICBNb25vdG9uaWNUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
KCkgY29uc3Q7CiAKICAgICBib29sIGFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWlu
Z0F1ZGlvKCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgYm9vbCBpc01lZGlhRWxlbWVudFNl
c3Npb25NZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpCiAgICAgewpAQCAtMTU4LDYgKzE1Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHx8IHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlb0F1ZGlvOwog
ICAgIH0KIAorICAgIE9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBub3dQbGF5aW5nSW5mbygpIGNv
bnN0IGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQog
ICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRp
YUVsZW1lbnRTZXNzaW9uIjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVkaWFTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5o
CmluZGV4IDYwYTU4NDdjOGNlYzEwYjc5Yjc0OWE2ZmFmODUwM2QxNmExOTliOTUuLjg5NzQ1YmI4
M2EyMzM2ZDQyMWUxNjcwZTg3MzBiZmI3YWM3NDY4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZWRpYVN0cmF0ZWd5LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIEF1ZGlvSU9DYWxsYmFjazsKIGNsYXNzIENE
TUZhY3Rvcnk7CitzdHJ1Y3QgTm93UGxheWluZ0luZm87CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IE1lZGlhU3RyYXRlZ3kgewogcHVibGljOgpAQCAtNDIsNiArNDMsMTEgQEAgcHVibGljOgogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ0RNRmFj
dG9yaWVzKFZlY3RvcjxDRE1GYWN0b3J5Kj4mKSA9IDA7CiAjZW5kaWYKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNh
dGlvbiwgY29uc3QgTm93UGxheWluZ0luZm8mKSA9IDA7CisjZW5kaWYKKwogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgfk1lZGlhU3RyYXRlZ3koKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBlNzAwODIyZmYxZmVlYmQ3
ODI5YWVjNzUwY2NlNDBhNjBiOTI1NjZhLi4wZGE3NWZkYTRhM2E3YzcxNzc3ODQ0NThlZDY0MjA4
NjYxYzc2YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uaApAQCAtNjgsMTQgKzY4LDE0IEBAIHB1YmxpYzoKICAgICBSb3V0ZVNoYXJpbmdQb2xpY3kg
cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlE
KCkgY29uc3Q7CiAKLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0OwogICAgIHNpemVfdCBidWZmZXJTaXplKCkg
Y29uc3Q7CiAgICAgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdDsKIAogICAg
IGJvb2wgdHJ5VG9TZXRBY3RpdmUoYm9vbCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qg
cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVy
U2l6ZShzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVy
U2l6ZShzaXplX3QpOwogCiAgICAgY2xhc3MgTXV0ZWRTdGF0ZU9ic2VydmVyIHsKICAgICBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOGY3NTgyZTIzNjFkNWY1ZWM0ZTcyNTJhZDM2OTdmMmUxNDEyODk3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0lu
Zm8uaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1
Y3QgTm93UGxheWluZ0luZm8geworICAgIFN0cmluZyB0aXRsZTsKKyAgICBTdHJpbmcgc291cmNl
QXBwbGljYXRpb25JZGVudGlmaWVyOworICAgIGRvdWJsZSBkdXJhdGlvbiB7IDAgfTsKKyAgICBk
b3VibGUgY3VycmVudFRpbWUgeyAwIH07CisgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcgeyBmYWxz
ZSB9OworICAgIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIgeyAwIH07CisgICAgYm9vbCBpc1Bs
YXlpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJp
bGl0eSB7IGZhbHNlIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgTm93UGxheWluZ0luZm86OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgc291cmNlQXBwbGlj
YXRpb25JZGVudGlmaWVyIDw8IGR1cmF0aW9uIDw8IGN1cnJlbnRUaW1lIDw8IHN1cHBvcnRzU2Vl
a2luZyA8PCB1bmlxdWVJZGVudGlmaWVyIDw8IGlzUGxheWluZyA8PCBhbGxvd3NOb3dQbGF5aW5n
Q29udHJvbHNWaXNpYmlsaXR5OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUg
T3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IE5vd1BsYXlpbmdJbmZvOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgdGl0bGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
aXRsZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBTdHJpbmcgc291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGRvdWJsZSBkdXJhdGlvbjsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGR1cmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGRvdWJsZSBjdXJyZW50VGltZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGN1cnJl
bnRUaW1lKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGJvb2wgc3VwcG9ydHNTZWVraW5n
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3VwcG9ydHNTZWVraW5nKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXI7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh1bmlxdWVJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGJvb2wgaXNQbGF5aW5nOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNQbGF5aW5nKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGJvb2wgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlz
aWJpbGl0eTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsbG93c05vd1BsYXlpbmdDb250cm9s
c1Zpc2liaWxpdHkpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIE5vd1BsYXlp
bmdJbmZvIHsgV1RGTW92ZSh0aXRsZSksIFdURk1vdmUoc291cmNlQXBwbGljYXRpb25JZGVudGlm
aWVyKSwgZHVyYXRpb24sIGN1cnJlbnRUaW1lLCBzdXBwb3J0c1NlZWtpbmcsIHVuaXF1ZUlkZW50
aWZpZXIsIGlzUGxheWluZywgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSB9Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMDc4MjFlN2I4YWQ3
NWViOTYxYThlMzcxZjcyY2Y0NzY2NzkxMjY3ZS4uMTg1M2ExMjFjYWIyMjc2MGYxMWYyMjkzMGRm
ODkyNGM3ODg1NzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJOb3dQbGF5aW5nSW5mby5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yNzUs
MjggKzI3Niw2IEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgUGxhdGZvcm1NZWRp
YVNlc3Npb246OnByZXNlbnRhdGlvblR5cGUoKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudC5w
cmVzZW50YXRpb25UeXBlKCk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi11aW50NjRfdCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6dW5pcXVlSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY2xpZW50Lm1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZpZXIoKTsKLX0KLQotU3RyaW5nIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjp0aXRsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50
Lm1lZGlhU2Vzc2lvblRpdGxlKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
ZHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVNlc3Npb25EdXJh
dGlvbigpOwotfQotCi1kb3VibGUgUGxhdGZvcm1NZWRpYVNlc3Npb246OmN1cnJlbnRUaW1lKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQubWVkaWFTZXNzaW9uQ3VycmVudFRpbWUoKTsK
LX0KLSNlbmRpZgotICAgIAogYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2FuUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNhblJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKTsKQEAgLTMxNCwxMSArMjkzLDYgQEAgYm9vbCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3VwcG9ydHNTZWVraW5nKCkgY29uc3QKICAgICByZXR1cm4g
bV9jbGllbnQuc3VwcG9ydHNTZWVraW5nKCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9jbGllbnQuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci19Ci0KIGJvb2wgUGxhdGZv
cm1NZWRpYVNlc3Npb246OmlzU3VzcGVuZGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGll
bnQuaXNTdXNwZW5kZWQoKTsKQEAgLTM2NywyOCArMzQxLDYgQEAgdm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6Y2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgbV9tYW5hZ2VyLT5zZXNzaW9u
Q2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpOwogfQogCi0jaWYgRU5BQkxFKFZJREVPKQotdWludDY0
X3QgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblVuaXF1ZUlkZW50aWZp
ZXIoKSBjb25zdAotewotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgUGxhdGZvcm1NZWRpYVNl
c3Npb25DbGllbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7Ci19Ci0KLWRvdWJsZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudDo6bWVkaWFTZXNz
aW9uRHVyYXRpb24oKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aW52YWxpZFRp
bWUoKTsKLX0KLQotZG91YmxlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OjptZWRpYVNlc3Np
b25DdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlk
VGltZSgpOwotfQotI2VuZGlmCi0KIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudENo
YXJhY3RlcmlzdGljc0NoYW5nZWQoKQogewogICAgIG1fbWFuYWdlci0+Y2xpZW50Q2hhcmFjdGVy
aXN0aWNzQ2hhbmdlZCgqdGhpcyk7CkBAIC00MDksNiArMzYxLDExIEBAIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlciYgUGxhdGZvcm1NZWRpYVNlc3Npb246Om1hbmFnZXIoKQogICAgIHJldHVy
biAqbV9tYW5hZ2VyOwogfQogCitPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gUGxhdGZvcm1NZWRp
YVNlc3Npb246Om5vd1BsYXlpbmdJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB9OworfQor
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAppbmRleCBhOGQxOGJlNGVhYmFl
OWVjODBmZjVkZWY0ZmI3YmNhOWRhNjU3MDdhLi5lMmIzOGEwMWQwYWE1YTY2ZDM3NzkxMWVkNDAx
ZTUyODkwNzg5NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgTWVkaWFQbGF5
YmFja1RhcmdldDsKIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50OwogY2xhc3MgUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogZW51bSBjbGFzcyBEZWxheUNhbGxpbmdVcGRhdGVO
b3dQbGF5aW5nIHsgTm8sIFllcyB9Oworc3RydWN0IE5vd1BsYXlpbmdJbmZvOwogCiBjbGFzcyBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbgogICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uPgpAQCAtMTEzLDEzICsxMTQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHN1c3BlbmRCdWZmZXJpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQnVmZmVy
aW5nKCkgeyB9CiAgICAgCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIHVpbnQ2NF90IHVuaXF1ZUlk
ZW50aWZpZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgdGl0bGUoKSBjb25zdDsKLSAgICBkb3VibGUg
ZHVyYXRpb24oKSBjb25zdDsKLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdDsKLSNlbmRp
ZgotCiAgICAgdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICB9
IFJlbW90ZUNvbW1hbmRBcmd1bWVudDsKQEAgLTE3NCw4ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKSB7IH0KICAgICBTdHJpbmcg
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
YWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0KICAgICBib29sIGhhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzUGxheWVkU2luY2VMYXN0SW50ZXJydXB0aW9uOyB9CiAgICAgdm9pZCBjbGVh
ckhhc1BsYXllZFNpbmNlTGFzdEludGVycnVwdGlvbigpIHsgbV9oYXNQbGF5ZWRTaW5jZUxhc3RJ
bnRlcnJ1cHRpb24gPSBmYWxzZTsgfQogCkBAIC0xOTUsNiArMTg3LDggQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmdBdWRpbygpIGNvbnN0ID0gMDsKICAgICB9Owog
CisgICAgdmlydHVhbCBPcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbm93UGxheWluZ0luZm8oKSBj
b25zdDsKKwogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlciYsIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Jik7CiAgICAgUGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
OyB9CkBAIC0yMzUsMTMgKzIyOSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWF5UmVz
dW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3Vz
cGVuZFBsYXliYWNrKCkgPSAwOwogCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIHZpcnR1YWwgdWlu
dDY0X3QgbWVkaWFTZXNzaW9uVW5pcXVlSWRlbnRpZmllcigpIGNvbnN0OwotICAgIHZpcnR1YWwg
U3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBkb3VibGUgbWVk
aWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Np
b25DdXJyZW50VGltZSgpIGNvbnN0OwotI2VuZGlmCi0gICAgCiAgICAgdmlydHVhbCBib29sIGNh
blJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVt
b3RlQ29tbWFuZEFyZ3VtZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlZWtp
bmcoKSBjb25zdCA9IDA7CkBAIC0yNjEsNyArMjQ4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1BsYXlpbmdPblNlY29uZFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICB2aXJ0dWFsIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVy
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNNZWRpYVN0cmVhbVNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgK
aW5kZXggYWIwOWI3OTg1ZDc3ZmM2YTc2MGMwNGM3NzllYTc3MmVlYTU3NjRkMC4uZDcyNTdjMDY5
ZmIzZTQ2ZTZhMjc5ZjEzNWFlNjZmOTMyNGFjZWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLmgKQEAgLTM1LDYgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3Qg
Tm93UGxheWluZ0luZm87CisKIGNsYXNzIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYQogICAgIDog
cHVibGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcgogICAgICwgcHJpdmF0ZSBSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQKQEAgLTU1LDYgKzU3LDkgQEAgcHVibGljOgogICAgIGJvb2wg
cmVnaXN0ZXJlZEFzTm93UGxheWluZ0FwcGxpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb247IH0KICAgICB2b2lkIHByZXBhcmVU
b1NlbmRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCgpIGZpbmFsOwogCisgICAgc3RhdGljIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpOworICAgIHN0YXRpYyBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBw
bGljYXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJik7CisKIHByb3RlY3RlZDoKICAgICB2b2lk
IHNjaGVkdWxlVXBkYXRlTm93UGxheWluZ0luZm8oKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZU5v
d1BsYXlpbmdJbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggZWIxOWE5
YmY5YzAzMzhhYWFiM2U3OGZiMzY4YjA3NzI2NWUxZDFkOC4uNjJlM2YzNDM3ZWM3MGMwODE5NGQ4
YmNjNTI3MjY1MDExMDFjZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAt
MzMsNyArMzMsMTAgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJh
dGVneS5oIgorI2luY2x1ZGUgIk5vd1BsYXlpbmdJbmZvLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRl
IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
CkBAIC0yMDQsOCArMjA3LDczIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXNz
aW9uQ2FuUHJvZHVjZUF1ZGlvQ2hhbmdlZCgpCiAgICAgc2NoZWR1bGVVcGRhdGVOb3dQbGF5aW5n
SW5mbygpOwogfQogCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xlYXJOb3dQbGF5
aW5nSW5mbygpCit7CisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNl
dE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpCisgICAgICAgIE1STWVkaWFSZW1vdGVTZXROb3dQbGF5
aW5nVmlzaWJpbGl0eShNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgTVJOb3dQbGF5aW5n
Q2xpZW50VmlzaWJpbGl0eU5ldmVyVmlzaWJsZSk7CisKKyAgICBNUk1lZGlhUmVtb3RlU2V0Q2Fu
QmVOb3dQbGF5aW5nQXBwbGljYXRpb24oZmFsc2UpOworICAgIE1STWVkaWFSZW1vdGVTZXROb3dQ
bGF5aW5nSW5mbyhudWxscHRyKTsKKyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxp
Y2F0aW9uUGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4o
KSwga01SUGxheWJhY2tTdGF0ZVN0b3BwZWQsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4o
TVJNZWRpYVJlbW90ZUVycm9yIGVycm9yKSB7CisjaWYgTE9HX0RJU0FCTEVECisgICAgICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CisjZWxzZQorICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIk1STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5
YmFja1N0YXRlRm9yT3JpZ2luKHN0b3BwZWQpIGZhaWxlZCB3aXRoIGVycm9yICIsIGVycm9yKTsK
KyNlbmRpZgorICAgIH0pOworfQorCit2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0
Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgTm93
UGxheWluZ0luZm8mIG5vd1BsYXlpbmdJbmZvKQoreworICAgIGlmIChzZXRBc05vd1BsYXlpbmdB
cHBsaWNhdGlvbikKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNldENhbkJlTm93UGxheWluZ0FwcGxp
Y2F0aW9uKHRydWUpOworCisgICAgYXV0byBpbmZvID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDQsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmICgh
bm93UGxheWluZ0luZm8udGl0bGUuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvVGl0bGUsIG5vd1Bs
YXlpbmdJbmZvLnRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworCisgICAgaWYgKHN0ZDo6
aXNmaW5pdGUobm93UGxheWluZ0luZm8uZHVyYXRpb24pICYmIG5vd1BsYXlpbmdJbmZvLmR1cmF0
aW9uICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKSB7CisgICAgICAgIGF1dG8gY2ZEdXJh
dGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyRG91YmxlVHlwZSwgJm5vd1BsYXlpbmdJbmZvLmR1cmF0aW9uKSk7CisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9E
dXJhdGlvbiwgY2ZEdXJhdGlvbi5nZXQoKSk7CisgICAgfQorCisgICAgZG91YmxlIHJhdGUgPSBu
b3dQbGF5aW5nSW5mby5pc1BsYXlpbmcgPyAxIDogMDsKKyAgICBhdXRvIGNmUmF0ZSA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlw
ZSwgJnJhdGUpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBjZlJhdGUuZ2V0KCkpOworCisgICAg
YXV0byBsYXN0VXBkYXRlZE5vd1BsYXlpbmdJbmZvVW5pcXVlSWRlbnRpZmllciA9IG5vd1BsYXlp
bmdJbmZvLnVuaXF1ZUlkZW50aWZpZXI7CisgICAgYXV0byBjZklkZW50aWZpZXIgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckxvbmdMb25nVHlw
ZSwgJmxhc3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyKSk7CisgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b1VuaXF1ZUlkZW50aWZpZXIsIGNmSWRlbnRpZmllci5nZXQoKSk7CisKKyAgICBpZiAoc3RkOjpp
c2Zpbml0ZShub3dQbGF5aW5nSW5mby5jdXJyZW50VGltZSkgJiYgbm93UGxheWluZ0luZm8uY3Vy
cmVudFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkgJiYgbm93UGxheWluZ0luZm8u
c3VwcG9ydHNTZWVraW5nKSB7CisgICAgICAgIGF1dG8gY2ZDdXJyZW50VGltZSA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwg
Jm5vd1BsYXlpbmdJbmZvLmN1cnJlbnRUaW1lKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwg
Y2ZDdXJyZW50VGltZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1v
dGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9uKCkgJiYgIW5vd1BsYXlpbmdJbmZv
LnNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgIE1STWVkaWFS
ZW1vdGVTZXRQYXJlbnRBcHBsaWNhdGlvbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwg
bm93UGxheWluZ0luZm8uc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworCisgICAgTVJQbGF5YmFja1N0YXRlIHBsYXliYWNrU3RhdGUgPSAobm93UGxh
eWluZ0luZm8uaXNQbGF5aW5nKSA/IGtNUlBsYXliYWNrU3RhdGVQbGF5aW5nIDoga01SUGxheWJh
Y2tTdGF0ZVBhdXNlZDsKKyAgICBNUk1lZGlhUmVtb3RlU2V0Tm93UGxheWluZ0FwcGxpY2F0aW9u
UGxheWJhY2tTdGF0ZUZvck9yaWdpbihNUk1lZGlhUmVtb3RlR2V0TG9jYWxPcmlnaW4oKSwgcGxh
eWJhY2tTdGF0ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihNUk1lZGlhUmVtb3RlRXJy
b3IgZXJyb3IpIHsKKyNpZiBMT0dfRElTQUJMRUQKKyAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9y
KTsKKyNlbHNlCisgICAgICAgIFdURkxvZ0Fsd2F5cygiTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlp
bmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4ocGxheWluZykgZmFpbGVkIHdpdGgg
ZXJyb3IgIiwgZXJyb3IpOworI2VuZGlmCisgICAgfSk7CisgICAgTVJNZWRpYVJlbW90ZVNldE5v
d1BsYXlpbmdJbmZvKGluZm8uZ2V0KCkpOworCisgICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVf
TVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpIHsKKyAgICAgICAgTVJOb3dQ
bGF5aW5nQ2xpZW50VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gbm93UGxheWluZ0luZm8uYWxsb3dz
Tm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA/IE1STm93UGxheWluZ0NsaWVudFZpc2liaWxp
dHlBbHdheXNWaXNpYmxlIDogTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVyVmlzaWJs
ZTsKKyAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVkaWFS
ZW1vdGVHZXRMb2NhbE9yaWdpbigpLCB2aXNpYmlsaXR5KTsKKyAgICB9Cit9CisKIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uKiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6Om5vd1BsYXlpbmdFbGlnaWJs
ZVNlc3Npb24oKQogeworICAgIC8vIEZJWE1FOiBGaXggdGhpcyBsYXllcmluZyB2aW9sYXRpb24u
CiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IEhUTUxNZWRpYUVsZW1lbnQ6OmJlc3RNZWRpYUVsZW1l
bnRGb3JTaG93aW5nUGxheWJhY2tDb250cm9sc01hbmFnZXIoTWVkaWFFbGVtZW50U2Vzc2lvbjo6
UGxheWJhY2tDb250cm9sc1B1cnBvc2U6Ok5vd1BsYXlpbmcpKQogICAgICAgICByZXR1cm4gJmVs
ZW1lbnQtPm1lZGlhU2Vzc2lvbigpOwogCkBAIC0yMjAsOTQgKzI4OCw0OCBAQCB2b2lkIE1lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYTo6dXBkYXRlTm93UGxheWluZ0luZm8oKQogCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKLSAgICBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbiog
Y3VycmVudFNlc3Npb24gPSB0aGlzLT5ub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uKCk7Ci0KLSAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJjdXJyZW50U2Vzc2lvbjogIiwgY3VycmVudFNl
c3Npb24gPyBjdXJyZW50U2Vzc2lvbi0+bG9nSWRlbnRpZmllcigpIDogbnVsbHB0cik7Ci0KLSAg
ICBpZiAoIWN1cnJlbnRTZXNzaW9uKSB7Ci0gICAgICAgIGlmIChjYW5Mb2FkX01lZGlhUmVtb3Rl
X01STWVkaWFSZW1vdGVTZXROb3dQbGF5aW5nVmlzaWJpbGl0eSgpKQotICAgICAgICAgICAgTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1STWVkaWFSZW1vdGVHZXRMb2NhbE9y
aWdpbigpLCBNUk5vd1BsYXlpbmdDbGllbnRWaXNpYmlsaXR5TmV2ZXJWaXNpYmxlKTsKKyAgICBP
cHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbm93UGxheWluZ0luZm87CisgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBub3dQbGF5aW5nRWxpZ2libGVTZXNzaW9uKCkpCisgICAgICAgIG5vd1BsYXlpbmdJ
bmZvID0gc2Vzc2lvbi0+bm93UGxheWluZ0luZm8oKTsKIAorICAgIGlmICghbm93UGxheWluZ0lu
Zm8pIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiY2xlYXJpbmcgbm93IHBs
YXlpbmcgaW5mbyIpOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVn
eSgpLmNsZWFyTm93UGxheWluZ0luZm8oKTsKIAotICAgICAgICBNUk1lZGlhUmVtb3RlU2V0Q2Fu
QmVOb3dQbGF5aW5nQXBwbGljYXRpb24oZmFsc2UpOwogICAgICAgICBtX3JlZ2lzdGVyZWRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIE1STWVkaWFSZW1vdGVTZXRO
b3dQbGF5aW5nSW5mbyhudWxscHRyKTsKICAgICAgICAgbV9ub3dQbGF5aW5nQWN0aXZlID0gZmFs
c2U7CiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nVGl0bGUgPSBlbXB0eVN0cmluZygp
OwogICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0R1cmF0aW9uID0gTkFOOwogICAgICAg
ICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lID0gTkFOOwogICAgICAgICBtX2xh
c3RVcGRhdGVkTm93UGxheWluZ0luZm9VbmlxdWVJZGVudGlmaWVyID0gMDsKLSAgICAgICAgTVJN
ZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNrU3RhdGVGb3JPcmlnaW4o
TVJNZWRpYVJlbW90ZUdldExvY2FsT3JpZ2luKCksIGtNUlBsYXliYWNrU3RhdGVTdG9wcGVkLCBk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgewot
I2lmIExPR19ESVNBQkxFRAotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbHNl
Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAiTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXliYWNr
U3RhdGVGb3JPcmlnaW4oc3RvcHBlZCkgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOwotI2Vu
ZGlmCi0gICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJ0aXRsZSA9IFwiIiwgbm93UGxheWluZ0luZm8tPnRpdGxlLCAi
XCIsIGlzUGxheWluZyA9ICIsIG5vd1BsYXlpbmdJbmZvLT5pc1BsYXlpbmcsICIsIGR1cmF0aW9u
ID0gIiwgbm93UGxheWluZ0luZm8tPmR1cmF0aW9uLCAiLCBub3cgPSAiLCBub3dQbGF5aW5nSW5m
by0+Y3VycmVudFRpbWUsICIsIGlkID0gIiwgbm93UGxheWluZ0luZm8tPnVuaXF1ZUlkZW50aWZp
ZXIsICIsIHJlZ2lzdGVyZWQgPSAiLCBtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
bik7CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpLnNldE5vd1Bs
YXlpbmdJbmZvKCFtX3JlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgKm5vd1BsYXlp
bmdJbmZvKTsKKwogICAgIGlmICghbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24p
IHsKICAgICAgICAgbV9yZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24gPSB0cnVlOwog
ICAgICAgICBwcm92aWRlUHJlc2VudGluZ0FwcGxpY2F0aW9uUElESWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgTVJNZWRpYVJlbW90ZVNldENhbkJlTm93UGxheWluZ0FwcGxpY2F0aW9uKHRydWUpOwog
ICAgIH0KIAotICAgIFN0cmluZyB0aXRsZSA9IGN1cnJlbnRTZXNzaW9uLT50aXRsZSgpOwotICAg
IGRvdWJsZSBkdXJhdGlvbiA9IGN1cnJlbnRTZXNzaW9uLT5zdXBwb3J0c1NlZWtpbmcoKSA/IGN1
cnJlbnRTZXNzaW9uLT5kdXJhdGlvbigpIDogTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7Ci0g
ICAgZG91YmxlIHJhdGUgPSBjdXJyZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxheWluZyA/IDEgOiAwOwotICAgIGF1dG8gaW5mbyA9IGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCA0LCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgaWYgKCFub3dQbGF5aW5nSW5mby0+dGl0bGUuaXNFbXB0eSgpKQorICAgICAgICBtX2xhc3RV
cGRhdGVkTm93UGxheWluZ1RpdGxlID0gbm93UGxheWluZ0luZm8tPnRpdGxlOwogCi0gICAgaWYg
KCF0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1RpdGxlLCB0aXRsZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKLSAgICAgICAgbV9sYXN0VXBkYXRlZE5vd1BsYXlpbmdUaXRsZSA9IHRp
dGxlOwotICAgIH0KLQotICAgIGlmIChzdGQ6OmlzZmluaXRlKGR1cmF0aW9uKSAmJiBkdXJhdGlv
biAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkgewotICAgICAgICBhdXRvIGNmRHVyYXRp
b24gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckRvdWJsZVR5cGUsICZkdXJhdGlvbikpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRHVyYXRpb24sIGNmRHVyYXRp
b24uZ2V0KCkpOworICAgIGRvdWJsZSBkdXJhdGlvbiA9IG5vd1BsYXlpbmdJbmZvLT5kdXJhdGlv
bjsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShkdXJhdGlvbikgJiYgZHVyYXRpb24gIT0gTWVkaWFQ
bGF5ZXI6OmludmFsaWRUaW1lKCkpCiAgICAgICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nRHVy
YXRpb24gPSBkdXJhdGlvbjsKLSAgICB9CiAKLSAgICBhdXRvIGNmUmF0ZSA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJnJh
dGUpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvUGxheWJhY2tSYXRlLCBjZlJhdGUuZ2V0KCkpOworICAgIG1fbGFzdFVw
ZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIgPSBub3dQbGF5aW5nSW5mby0+dW5p
cXVlSWRlbnRpZmllcjsKIAotICAgIG1fbGFzdFVwZGF0ZWROb3dQbGF5aW5nSW5mb1VuaXF1ZUlk
ZW50aWZpZXIgPSBjdXJyZW50U2Vzc2lvbi0+dW5pcXVlSWRlbnRpZmllcigpOwotICAgIGF1dG8g
Y2ZJZGVudGlmaWVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJMb25nTG9uZ1R5cGUsICZtX2xhc3RVcGRhdGVkTm93UGxheWluZ0luZm9Vbmlx
dWVJZGVudGlmaWVyKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb1VuaXF1ZUlkZW50aWZpZXIsIGNmSWRlbnRpZmllci5n
ZXQoKSk7Ci0KLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBjdXJyZW50U2Vzc2lvbi0+Y3VycmVu
dFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShjdXJyZW50VGltZSkgJiYgY3VycmVudFRp
bWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkgJiYgY3VycmVudFNlc3Npb24tPnN1cHBv
cnRzU2Vla2luZygpKSB7Ci0gICAgICAgIGF1dG8gY2ZDdXJyZW50VGltZSA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyRG91YmxlVHlwZSwgJmN1
cnJlbnRUaW1lKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQo
KSk7CisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gbm93UGxheWluZ0luZm8tPmN1cnJlbnRUaW1l
OworICAgIGlmIChzdGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSAmJiBjdXJyZW50VGltZSAhPSBN
ZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSAmJiBub3dQbGF5aW5nSW5mby0+c3VwcG9ydHNTZWVr
aW5nKQogICAgICAgICBtX2xhc3RVcGRhdGVkTm93UGxheWluZ0VsYXBzZWRUaW1lID0gY3VycmVu
dFRpbWU7Ci0gICAgfQotCi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidGl0bGUgPSBc
IiIsIHRpdGxlLCAiXCIsIHJhdGUgPSAiLCByYXRlLCAiLCBkdXJhdGlvbiA9ICIsIGR1cmF0aW9u
LCAiLCBub3cgPSAiLCBjdXJyZW50VGltZSk7CiAKLSAgICBTdHJpbmcgcGFyZW50QXBwbGljYXRp
b24gPSBjdXJyZW50U2Vzc2lvbi0+c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCk7Ci0gICAg
aWYgKGNhbkxvYWRfTWVkaWFSZW1vdGVfTVJNZWRpYVJlbW90ZVNldFBhcmVudEFwcGxpY2F0aW9u
KCkgJiYgIXBhcmVudEFwcGxpY2F0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgTVJNZWRpYVJlbW90
ZVNldFBhcmVudEFwcGxpY2F0aW9uKE1STWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBwYXJl
bnRBcHBsaWNhdGlvbi5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKLQotICAgIG1fbm93UGxheWlu
Z0FjdGl2ZSA9IGN1cnJlbnRTZXNzaW9uLT5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5KCk7Ci0gICAgTVJQbGF5YmFja1N0YXRlIHBsYXliYWNrU3RhdGUgPSAoY3VycmVudFNlc3Np
b24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcpID8ga01SUGxheWJh
Y2tTdGF0ZVBsYXlpbmcgOiBrTVJQbGF5YmFja1N0YXRlUGF1c2VkOwotICAgIE1STWVkaWFSZW1v
dGVTZXROb3dQbGF5aW5nQXBwbGljYXRpb25QbGF5YmFja1N0YXRlRm9yT3JpZ2luKE1STWVkaWFS
ZW1vdGVHZXRMb2NhbE9yaWdpbigpLCBwbGF5YmFja1N0YXRlLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeKE1STWVkaWFSZW1vdGVFcnJvciBlcnJvcikgewotI2lmIExPR19ESVNBQkxFRAot
ICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwotI2Vsc2UKLSAgICAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAiTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdBcHBsaWNhdGlvblBsYXli
YWNrU3RhdGVGb3JPcmlnaW4ocGxheWluZykgZmFpbGVkIHdpdGggZXJyb3IgIiwgZXJyb3IpOwot
I2VuZGlmCi0gICAgfSk7Ci0gICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdJbmZvKGluZm8u
Z2V0KCkpOworICAgIG1fbm93UGxheWluZ0FjdGl2ZSA9IG5vd1BsYXlpbmdJbmZvLT5hbGxvd3NO
b3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5OwogCi0gICAgaWYgKGNhbkxvYWRfTWVkaWFSZW1v
dGVfTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KCkpIHsKLSAgICAgICAgTVJO
b3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eSB2aXNpYmlsaXR5ID0gY3VycmVudFNlc3Npb24tPmFs
bG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkoKSA/IE1STm93UGxheWluZ0NsaWVudFZp
c2liaWxpdHlBbHdheXNWaXNpYmxlIDogTVJOb3dQbGF5aW5nQ2xpZW50VmlzaWJpbGl0eU5ldmVy
VmlzaWJsZTsKLSAgICAgICAgTVJNZWRpYVJlbW90ZVNldE5vd1BsYXlpbmdWaXNpYmlsaXR5KE1S
TWVkaWFSZW1vdGVHZXRMb2NhbE9yaWdpbigpLCB2aXNpYmlsaXR5KTsKLSAgICB9CiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogI2VuZGlmIC8vIFVTRShNRURJQVJFTU9URSkKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5oCmluZGV4IDkzZTViZmM0MGI4ZjE4NTgzODM4OTY2MzZmNjJlZTY5MThj
OTkxNTMuLjVkZjIwYTdhYTE0YzFjNGNhOTQ5MzdiNDliMzBlNDAxZTk4ZTkzNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY3RpdmVB
dWRpb1JvdXRlRGlkQ2hhbmdlKE9wdGlvbmFsPGJvb2w+JiYpOwogICAgIHZvaWQgYWN0aXZlVmlk
ZW9Sb3V0ZURpZENoYW5nZShPcHRpb25hbDxib29sPiYmKTsKICNlbmRpZgorICAgIHN0YXRpYyBX
RUJDT1JFX0VYUE9SVCB2b2lkIHByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5tbQppbmRleCA0NTE3MjRmZTczYWNmY2Q1OTk0NjRjMGM0MmYxOGM1
NmU2MzMxOTE3Li5jZjI1ZmI0ODYwMTc2ODI1YTc3YWQ4NjI0Y2I0NWJkZjM5ODNlYzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFT
ZXNzaW9uTWFuYWdlcklPUy5tbQpAQCAtMTc0LDcgKzE3NCwxMyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSURJZk5lY2Vzc2FyeSgp
CiAgICAgaWYgKG1faGF2ZVByZXNlbnRlZEFwcGxpY2F0aW9uUElEKQogICAgICAgICByZXR1cm47
CiAgICAgbV9oYXZlUHJlc2VudGVkQXBwbGljYXRpb25QSUQgPSB0cnVlOworICAgIHByb3ZpZGVQ
cmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKKyNlbmRpZgorfQogCit2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnByb3ZpZGVQcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKQoreworI2lmIEhB
VkUoQ0VMRVNUSUFMKQogICAgIGlmICghY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9QSURUb0lu
aGVyaXRBcHBsaWNhdGlvblN0YXRlRnJvbSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCA2Y2YxYzMwYjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxLi5iMGU3OGM3
ODdmYTU3ZWQwZGU5MzQwZjE5N2I1ZDZlMjM0NWU3YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02Myw2
ICs2MywxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4K
KyNlbmRpZgorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICNpbmNsdWRlICJSZW1vdGVD
RE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5UHJveHlNZXNzYWdl
cy5oIgpAQCAtODgsOCArOTMsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgcmVjZWl2ZXIpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFsIHsg
fQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fcHJv
Y2Vzcy5jb25uZWN0aW9uKCk7IH0KLSAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXImIHNl
c3Npb25NYW5hZ2VyKCkgZmluYWwgeyByZXR1cm4gbV9wcm9jZXNzLnNlc3Npb25NYW5hZ2VyKCk7
IH0KLSAgICB2b2lkIHdpbGxTdGFydENhbWVyYUNhcHR1cmUoKSBmaW5hbCB7IHNlc3Npb25NYW5h
Z2VyKCkucHJlcGFyZVRvU2VuZFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KCk7IH0KKyNpZiBQ
TEFURk9STShJT1MpCisgICAgdm9pZCB3aWxsU3RhcnRDYW1lcmFDYXB0dXJlKCkgZmluYWwKKyAg
ICB7CisgICAgICAgIGlmIChtX3Byb3ZpZGVkUHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Byb3ZpZGVkUHJlc2VudGluZ0FwcGxpY2F0aW9u
UElEID0gdHJ1ZTsKKyAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cHJvdmlkZVByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRCgpOworICAgIH0KKworICAgIGJvb2wgbV9wcm92aWRlZFByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRCB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIG1fcHJvY2VzczsKIH07CkBAIC0yMzEsNiArMjQ1LDE4IEBAIHZvaWQg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQog
CisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNs
ZWFyTm93UGxheWluZ0luZm8oKQoreworICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6Y2xl
YXJOb3dQbGF5aW5nSW5mbygpOworfQorCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0
IE5vd1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykKK3sKKyAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBu
b3dQbGF5aW5nSW5mbyk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CkBAIC0zNzEsMTMgKzM5Nyw2IEBAIGNvbnN0IFN0cmluZyYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiB9CiAj
ZW5kaWYKIAotUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXNzaW9uTWFuYWdlcigpCi17Ci0gICAgaWYgKCFtX3Nlc3Npb25NYW5hZ2VyKQot
ICAgICAgICBtX3Nlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpj
cmVhdGUoKTsKLSAgICByZXR1cm4gKm1fc2Vzc2lvbk1hbmFnZXI7Ci19Ci0KICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRPcmllbnRh
dGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmllbnRhdGlvbikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IGEzZWNhNWM4ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYuLjE4MjI2YTdjMzQ5OTE4
YWNiYmM0NWJmZjU0YWY2YTdiYmZjNzAxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtODQsOCArODQsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBv
cmllbnRhdGlvbik7CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlciYgc2Vzc2lvbk1hbmFnZXIoKTsKLQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgpA
QCAtMTA4LDYgKzEwNiwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCBjcmVhdGVSZW5k
ZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICB2b2lkIGNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB2b2lkIHNl
dE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IFdl
YkNvcmU6Ok5vd1BsYXlpbmdJbmZvJik7CisjZW5kaWYKIAogICAgIC8vIElQQzo6Q29ubmVjdGlv
bjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTMyYzAxMjJkZTA4MWVkZTliYjllZmI1NmY5
YmM1MjU5YmE0ZDcwNC4uOGQ5MWNlMmJjZGJkYWVjZmMyNTcxMDNjZGFjZTY5NjU0Y2M0OGQzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDEwIEBACiBtZXNzYWdl
cyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAg
ICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW5k
ZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDbGVhck5v
d1BsYXlpbmdJbmZvKCk7CisgICAgdm9pZCBTZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93
UGxheWluZ0FwcGxpY2F0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8gbm93UGxh
eWluZ0luZm8pOworI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKaW5kZXggODcxZGVhNjBiYjcyODIxYzYxMzU0MThmMjg3Yjk1ODM2MzBm
YjgzYy4uZTI5MDM0YjRmMzE1YzFkZTYzYTE3MmE0ZDNhZDRhZmMzNTAyNTI2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcApAQCAtNjc5LDYgKzY3OSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6dXBkYXRlQ2FjaGVkU3RhdGUoKQogICAgIG1fY2FjaGVkU3RhdGUucmVhZHlTdGF0ZSA9IG1f
cGxheWVyLT5yZWFkeVN0YXRlKCk7CiAgICAgbV9jYWNoZWRTdGF0ZS5wYXVzZWQgPSBtX3BsYXll
ci0+cGF1c2VkKCk7CiAgICAgbV9jYWNoZWRTdGF0ZS5sb2FkaW5nUHJvZ3Jlc3NlZCA9IG1fcGxh
eWVyLT5kaWRMb2FkaW5nUHJvZ3Jlc3MoKTsKKyAgICBtX2NhY2hlZFN0YXRlLmhhc0F1ZGlvID0g
bV9wbGF5ZXItPmhhc0F1ZGlvKCk7CiAKICAgICBpZiAobV9idWZmZXJlZENoYW5nZWQpIHsKICAg
ICAgICAgbV9idWZmZXJlZENoYW5nZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5j
cHAKaW5kZXggYmRhZmE1M2VhYmVkODZjY2EzMTliMmFiMzhiYzQxMWM4ZGRhMDVlMy4uODU3ZDk5
YTlkMTE3YjFjMDJlNWIxOWQyYWU0NmU0YWRiMDlmNDMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvU2Vz
c2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVZpZGVvU2FtcGxlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJBdWRpb0J1ZmZlckxpc3QuaD4KQEAgLTQ2LDMwICs0NiwyMiBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTo6U291cmNlUHJveHkKICAgICA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
cgotICAgICwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQKLSAgICAsIHB1
YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QXVkaW9DYXB0dXJlU291cmNlIHsKKyAgICAsIHB1
YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTb3VyY2VQcm94eShSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZmllciBpZCwgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdl
ciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBSZWY8UmVhbHRpbWVNZWRpYVNv
dXJjZT4mJiBzb3VyY2UpCisgICAgU291cmNlUHJveHkoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1l
TWVkaWFTb3VyY2U+JiYgc291cmNlKQogICAgICAgICA6IG1faWQoaWQpCi0gICAgICAgICwgbV9z
ZXNzaW9uTWFuYWdlcihtYWtlV2Vha1B0cihzZXNzaW9uTWFuYWdlcikpCiAgICAgICAgICwgbV9j
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgICAgICwgbV9zb3VyY2UoV1RGTW92
ZShzb3VyY2UpKQogICAgICAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPih0
aGlzKSkpCiAgICAgewogICAgICAgICBtX3NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotCi0g
ICAgICAgIGlmIChtX3NvdXJjZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6
OkF1ZGlvKQotICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXIuYWRkQXVkaW9DYXB0dXJlU291cmNl
KCp0aGlzKTsKICAgICB9CiAKICAgICB+U291cmNlUHJveHkoKQogICAgIHsKICAgICAgICAgc3Rv
cmFnZSgpLmludmFsaWRhdGUoKTsKICAgICAgICAgbV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKLQotICAgICAgICBpZiAobV9zb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpBdWRpbyAmJiBtX3Nlc3Npb25NYW5hZ2VyKQotICAgICAgICAgICAgbV9zZXNz
aW9uTWFuYWdlci0+cmVtb3ZlQXVkaW9DYXB0dXJlU291cmNlKCp0aGlzKTsKICAgICB9CiAKICAg
ICBSZWFsdGltZU1lZGlhU291cmNlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsgfQpAQCAt
NzcsMTIgKzY5LDEzIEBAIHB1YmxpYzoKICAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKCkgeyByZXR1cm4gbV9kZXNjcmlwdGlvbjsgfQogICAgIGludDY0X3QgbnVtYmVy
T2ZGcmFtZXMoKSB7IHJldHVybiBtX251bWJlck9mRnJhbWVzOyB9CiAKLSAgICBib29sIGlzQ2Fw
dHVyaW5nQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0VuZGVkICYmIG1fc291cmNl
LT5pc1Byb2R1Y2luZ0RhdGEoKTsgfQotCiAgICAgdm9pZCBhdWRpb1VuaXRXaWxsU3RhcnQoKSBm
aW5hbAogICAgIHsKLSAgICAgICAgaWYgKCFtX2lzRW5kZWQgJiYgbV9zZXNzaW9uTWFuYWdlcikK
LSAgICAgICAgICAgIG1fc2Vzc2lvbk1hbmFnZXItPnNlc3Npb25DYW5Qcm9kdWNlQXVkaW9DaGFu
Z2VkKCk7CisgICAgICAgIC8vIEZJWE1FOiBXZWJQcm9jZXNzIG1pZ2h0IHdhbnQgdG8gc2V0IHRo
ZSBjYXRlZ29yeS9idWZmZXJTaXplIGl0c2VsZiwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgcmVt
b3ZlIHRoYXQgY29kZS4KKyAgICAgICAgYXV0byBidWZmZXJTaXplID0gQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpIC8gNTA7CisgICAgICAgIGlmIChBdWRpb1Nlc3Np
b246OnNoYXJlZFNlc3Npb24oKS5wcmVmZXJyZWRCdWZmZXJTaXplKCkgPiBidWZmZXJTaXplKQor
ICAgICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVm
ZmVyU2l6ZShidWZmZXJTaXplKTsKKyAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkuc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpQbGF5QW5kUmVjb3JkLCBSb3V0ZVNoYXJpbmdQ
b2xpY3k6OkRlZmF1bHQpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoKQpAQCAtMjE0LDcgKzIw
Nyw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3Vy
Y2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpCiAgICAgICAgIGF1dG8gc291cmNlID0gc291
cmNlT3JFcnJvci5zb3VyY2UoKTsKICAgICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdz
KCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIG1f
cHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCBtX2Nvbm5lY3Rpb25Q
cm94eS0+c2Vzc2lvbk1hbmFnZXIoKSwgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rpb24oKSwg
V1RGTW92ZShzb3VyY2UpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8
U291cmNlUHJveHk+KGlkLCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBXVEZNb3Zl
KHNvdXJjZSkpKTsKICAgICB9IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RG
TW92ZShzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3VjY2VlZGVkLCBpbnZhbGlkQ29uc3RyYWludHMsIFdURk1vdmUoc2V0dGluZ3MpKTsKQEAgLTI3
MCw3ICsyNjMsNyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNsb25lKFJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGNsb25lZElELAogICAgIEFTU0VSVChtX3Byb3hp
ZXMuY29udGFpbnMoY2xvbmVkSUQpKTsKICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhu
ZXdTb3VyY2VJRCkpOwogICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQoY2xvbmVk
SUQpKQotICAgICAgICBtX3Byb3hpZXMuYWRkKG5ld1NvdXJjZUlELCBtYWtlVW5pcXVlPFNvdXJj
ZVByb3h5PihuZXdTb3VyY2VJRCwgbV9jb25uZWN0aW9uUHJveHktPnNlc3Npb25NYW5hZ2VyKCks
IG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0aW9uKCksIHByb3h5LT5zb3VyY2UoKS5jbG9uZSgp
KSk7CisgICAgICAgIG1fcHJveGllcy5hZGQobmV3U291cmNlSUQsIG1ha2VVbmlxdWU8U291cmNl
UHJveHk+KG5ld1NvdXJjZUlELCBtX2Nvbm5lY3Rpb25Qcm94eS0+Y29ubmVjdGlvbigpLCBwcm94
eS0+c291cmNlKCkuY2xvbmUoKSkpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk6OnJlcXVlc3RUb0VuZChSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBzb3VyY2VJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAppbmRleCAyN2JjNzcwYzBkOWM5MTY3YTQ5YTdkMjkw
ZmFmZmQzOTkyODY0ODkyLi5hNzZhZjk2ZWE1ODRjYjIxMjk1MjdiMmYxMjlhYzI4Y2M2YjJkN2U5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UpID0gMDsKICAgICAgICAgdmly
dHVhbCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlcigpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydENhbWVyYUNhcHR1cmUoKSB7IH0KICAg
ICB9OwogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoVW5pcXVlUmVm
PENvbm5lY3Rpb25Qcm94eT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA4YjcwZDY0N2VlODI2Y2FkZDJkMmJmZjdlZGYzODdmM2M4YjA0ZmRm
Li4wMzJmMGI5MDBhZDlmNDQyMjhmMjBlNzY4NjIwYzIxYjYzYzI2ODkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE2MCw3ICsxNjAsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikgZmlu
YWwgeyBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIHJl
Y2VpdmVyKTsgfQogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpIGZpbmFsIHsgbV9wcm9jZXNzLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lKTsgfQogICAgIElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbigpIGZpbmFsIHsgcmV0dXJuICptX3Byb2Nlc3MuY29ubmVjdGlvbigpOyB9Ci0g
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyJiBzZXNzaW9uTWFuYWdlcigpIGZpbmFsIHsg
cmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpOyB9CiAK
ICAgICBXZWJQcm9jZXNzUHJveHkmIG1fcHJvY2VzczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAppbmRleCA1
ZDdhOGI4ZDExMjRiMmE1MjhhZDczYmRjOTZkOWE5NzgwZGMyMDRjLi4xOGUxYmU1YjNmNjRhZmY5
YmI2OWFlYWNmOGJlZjM4Y2QyOTEzMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVN0cmF0ZWd5LmgiCiAK
KyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHku
aCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCkBAIC0zMyw2ICszNCwxMSBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXVk
aW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3dQbGF5aW5nSW5mby5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtNjMsNCArNjksMzAgQEAgdm9pZCBXZWJNZWRpYVN0cmF0ZWd5
OjpyZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8V2ViQ29yZTo6Q0RNRmFjdG9yeSo+JiBmYWN0
b3IKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYk1lZGlhU3RyYXRl
Z3k6OmNsZWFyTm93UGxheWluZ0luZm8oKQoreworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAg
ICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKKyAgICAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDbGVhck5vd1BsYXlpbmdJbmZvIHsgfSwgMCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKyAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxh
eWluZ0luZm8oKTsKK30KKwordm9pZCBXZWJNZWRpYVN0cmF0ZWd5OjpzZXROb3dQbGF5aW5nSW5m
byhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3dQbGF5
aW5nSW5mbyYgbm93UGxheWluZ0luZm8pCit7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAg
IGlmIChtX3VzZUdQVVByb2Nlc3MpIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlNldE5vd1BsYXlpbmdJbmZvIHsgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24s
IG5vd1BsYXlpbmdJbmZvIH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisg
ICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbiwgbm93UGxheWluZ0luZm8pOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAppbmRleCA0ZmFiMGU5NDRmYzE0ZTY4NDM3OWUzMDA4MTYz
YmUxNjJkZDg5YjRkLi42ZGVmZTNiMTU0OWM0NGQ0NWZhNDFlNTk1MjYzZjRiN2UwNzFjMjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlh
U3RyYXRlZ3kuaApAQCAtNDUsNiArNDUsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQogICAgIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6
OkNETUZhY3RvcnkqPiYpIG92ZXJyaWRlOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBjbGVhck5vd1BsYXlpbmdJbmZvKCkgZmluYWw7CisgICAgdm9pZCBzZXROb3dQbGF5
aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBjb25zdCBXZWJDb3JlOjpO
b3dQbGF5aW5nSW5mbyYpIGZpbmFsOworI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3MgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCmluZGV4IGI5MDllY2M0MzliY2QzYzZmNmRhODA0MWM2ZWYyOTNmZjM0NjY5NmYu
LjczMTllNjhkNTdkZDhiZWU1MzMxMzMxNGM2MjgwZGVlZjdjMjkyYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ0RN
RmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTWVkaWFTdHJhdGVneS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+
CkBAIC04MCw2ICs4MSwxNSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q0RN
RmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwogICAgIH0KICNl
bmRpZgorICAgIHZvaWQgY2xlYXJOb3dQbGF5aW5nSW5mbygpIGZpbmFsCisgICAgeworICAgICAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OmNsZWFyTm93UGxheWluZ0luZm8oKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBub3dQbGF5aW5nSW5mbykgZmluYWwKKyAgICB7
CisgICAgICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oc2V0
QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIG5vd1BsYXlpbmdJbmZvKTsKKyAgICB9CiB9OwogCiBN
ZWRpYVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZU1lZGlhU3RyYXRlZ3ko
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>