<?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>203649</bug_id>
          
          <creation_ts>2019-10-30 17:37:44 -0700</creation_ts>
          <short_desc>Add experimental TextTrackCue API</short_desc>
          <delta_ts>2019-11-01 15:50:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1585691</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-30 17:37:44 -0700</bug_when>
    <thetext>Add the &quot;Generic&quot; TextTrackCue API presented at TPAC and FOMS. The API is disabled-by-default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585692</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-30 17:38:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/55675172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585694</commentid>
    <comment_count>2</comment_count>
      <attachid>382399</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-30 17:54:43 -0700</bug_when>
    <thetext>Created attachment 382399
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585699</commentid>
    <comment_count>3</comment_count>
      <attachid>382402</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-30 18:17:35 -0700</bug_when>
    <thetext>Created attachment 382402
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586435</commentid>
    <comment_count>4</comment_count>
      <attachid>382402</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-11-01 10:40:32 -0700</bug_when>
    <thetext>Comment on attachment 382402
WIP

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

&gt; Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp:180
&gt; +void MediaControlsHost::updateCaptionDisplaySizes(bool forceUpdate)

A parameter of “enum class ForceUpdate { Yes, No }” might be nice here

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1193
&gt; +        for (size_t i = 0; i &lt; activeCues.size(); ++i) {

Can this be?: for (auto&amp; cue : activeCues)

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1199
&gt; +                RefPtr&lt;TextTrackCueBox&gt; displayBox = cue-&gt;getDisplayTree(m_videoDisplaySize.size(), m_fontSize);

Auto?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1223
&gt; +    if (!region) {

Or: if (auto region = ....)  { ... } else { ... }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586469</commentid>
    <comment_count>5</comment_count>
      <attachid>382604</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-11-01 11:42:33 -0700</bug_when>
    <thetext>Created attachment 382604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586539</commentid>
    <comment_count>6</comment_count>
      <attachid>382624</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-11-01 13:55:49 -0700</bug_when>
    <thetext>Created attachment 382624
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586613</commentid>
    <comment_count>7</comment_count>
      <attachid>382624</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-01 15:50:02 -0700</bug_when>
    <thetext>Comment on attachment 382624
Patch for landing

Clearing flags on attachment: 382624

Committed r251950: &lt;https://trac.webkit.org/changeset/251950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586614</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-01 15:50:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382399</attachid>
            <date>2019-10-30 17:54:43 -0700</date>
            <delta_ts>2019-10-30 18:17:33 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-203649-20191030175443.patch</filename>
            <type>text/plain</type>
            <size>76673</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg0MjEyYjZmNDgyZjgx
MmU0YzJhNjdjNTJkZTU2MjNmZDdmZDE5MS4uOTM0OThkMGQ3ZjRiMzIyNjZlOWIxZjQ0M2JmOGJm
NzcyZWQ3ODk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMC0zMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJp
bWVudGFsIFRleHRUcmFja0N1ZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzY0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NzUxNzI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0
b3IuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFj
a2N1ZS1kaXNwbGF5Y3VlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9z
dDo6dXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoTmVlZHNSdW50
aW1lQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OnByb2Nlc3NBY3RpdmVWVFRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlQWN0aXZl
Q3Vlc0ZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU3R5bGVGb3JUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnNldE1vZGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlQm94U2hhZG93
UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNo
YWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OmN1ZUF0dHJpYnV0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZUJveDo6VGV4dFRyYWNrQ3VlQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZUJveDo6Z2V0Q3VlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTGVn
YWxOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWROb2RlRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
Ojp0YWdQc2V1ZG9PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVBzZXVkb0F0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjpkaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnRvSlNP
TiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmRlYnVnU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6aXNSZW5kZXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0RGlzcGxheVRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpyZW1vdmVEaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94Ojp+VGV4dFRyYWNrQ3VlQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWU6OnJlY2FsY3VsYXRlU3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjppc1JlbmRlcmFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1
ZUdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNF
cXVhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljOjppc09y
ZGVyZWRCZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJp
Yzo6aXNQb3NpdGlvbmVkQWJvdmUgY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlR2VuZXJpYy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OlZUVEN1ZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRDdWU6OmdldERpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZTo6cmVtb3ZlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpzZXRG
b250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ZUVEN1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWVFRDdWVCb3g6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVC
b3g6OmdldEN1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6
OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC90cmFjay9WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6Y3JlYXRlKToK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpnZXREaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpWVFRSZWdpb246OnByZXBhcmVSZWdpb25EaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRt
bC90cmFjay9WVFRSZWdpb24uaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUpOgorCiAyMDE5LTEw
LTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgY29kZSBhcm91bmQgaW4gQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWMw
YmJkNTQ0NWMwYjRhOWMxNTgzM2EyNGJlN2IxNjgyYjVlNThiZi4uMWQ2MDcyZjEwZjVlOGRjNTNl
ZmQ4YWU4ZTIzZDM4NzBiNDAwMTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0x
MC0zMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgZXhwZXJpbWVudGFsIFRleHRUcmFja0N1ZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTU2NzUxNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dLMl0gVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSgpIHRvIHNpbXBsaWZ5IHRoZSBwcmVwYXJlVG9TdXNwZW5kIGxvZ2ljCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmNwcAppbmRleCAxMGZmNzJmYmIzZGQ1NGRkODdlMmYyMjI3OGU3ZGViNTJjOTEz
YmU3Li44M2NlNjhkMWM1NzkyNjRjZDZmMzI5NDE0MWRlMjc2MTVjZTQzYmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5jcHAKQEAgLTE3NywxMCArMTc3LDEwIEBAIHZvaWQgTWVkaWFDb250cm9sc0hvc3Q6
OmV4aXRlZEZ1bGxzY3JlZW4oKQogICAgICAgICBtX3RleHRUcmFja0NvbnRhaW5lci0+ZXhpdGVk
RnVsbHNjcmVlbigpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbHNIb3N0Ojp1cGRhdGVDYXB0aW9u
RGlzcGxheVNpemVzKCkKK3ZvaWQgTWVkaWFDb250cm9sc0hvc3Q6OnVwZGF0ZUNhcHRpb25EaXNw
bGF5U2l6ZXMoYm9vbCBmb3JjZVVwZGF0ZSkKIHsKICAgICBpZiAobV90ZXh0VHJhY2tDb250YWlu
ZXIpCi0gICAgICAgIG1fdGV4dFRyYWNrQ29udGFpbmVyLT51cGRhdGVTaXplcyh0cnVlKTsKKyAg
ICAgICAgbV90ZXh0VHJhY2tDb250YWluZXItPnVwZGF0ZVNpemVzKGZvcmNlVXBkYXRlKTsKIH0K
ICAgICAKIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2so
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRleCBlZjVkMDU3MmFkNGFjMDBmNWI3NmExMmRlYzM3
OWYxZjI4NDQ3MWU1Li41YWI4OTdiNGViMGQ4ZDlkYzU4YTE0ZDVjNWFmY2I0N2I1MDk5OGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVk
aWFDb250cm9sc0hvc3QuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRGb3JjZUNvbnRyb2xzRGlzcGxheSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1Jl
dHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkRp
c3BsYXlTaXplcygpOworICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyhib29sIGZv
cmNlVXBkYXRlID0gZmFsc2UpOwogICAgIHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKTsKICAgICB2
b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDZlY2FjZWU5Zjg4MmFmNTdmNTI4
OGIxMzE3OTk4NmUyMGI4OGQ0ODQuLjc1Mjk1NzIzMTIzZTg1YmM3MDhjZWMzOWE1ODkyNzAxMjkx
MTgyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
Q3VlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAKQEAgLTY3LDEyICs2NywxNCBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VAogICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpEYXRhOgogICAgICAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxEYXRhQ3VlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoY3VlKSk7CiAgICAgY2FzZSBUZXh0
VHJhY2tDdWU6OldlYlZUVDoKLSAgICBjYXNlIFRleHRUcmFja0N1ZTo6R2VuZXJpYzoKKyAgICBj
YXNlIFRleHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ6CiAgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyPFZUVEN1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGN1ZSkpOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4ganNOdWxs
KCk7CisgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkdlbmVyaWM6CisgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyPFRleHRUcmFja0N1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGN1ZSkpOwogICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBqc051bGwoKTsKIH0K
IAogSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUmIGN1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCA3NzEy
ZDIxYjNhZDk3MWRiNzcxNDc0NDM2ZTcwZjAzN2VkNzNkMDNkLi4yMTAzNWNjZTE5YjRjM2U5NmM1
ODNlYTEzMGYxOTdjZmU0MjUwODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMTYsNiArMjE2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKFN0YXRpY1JhbmdlKSBcCiAgICAgbWFjcm8oU3R5bGVQcm9wZXJ0
eU1hcFJlYWRPbmx5KSBcCiAgICAgbWFjcm8oU3R5bGVQcm9wZXJ0eU1hcCkgXAorICAgIG1hY3Jv
KFRleHRUcmFja0N1ZSkgXAogICAgIG1hY3JvKFVuZG9JdGVtKSBcCiAgICAgbWFjcm8oVW5kb01h
bmFnZXIpIFwKICAgICBtYWNybyhWUkRpc3BsYXkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNWQ1OTA4ZDhkMzIwZTI0
YjY2ZGM1ZTE1MTg2NzI2YjI0NzM0NTc5Ni4uNDk5ZWY1ZGI0NjU2ZjFjNDBhOTI1Y2Q0MzBmODQ0
MGJlNTBjYzgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTE3MjQsNyArMTcyNCw4IEBAIHN1YiBOZWVkc1J1bnRpbWVD
aGVjawogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGlzYWJsZWRC
eVF1aXJrfQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2VjdXJl
Q29udGV4dH0KICAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnRl
eHRIYXNTZXJ2aWNlV29ya2VyU2NoZW1lfQotICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q3VzdG9tRW5hYmxlZH07CisgICAgICAgIHx8ICRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21FbmFibGVkfQorICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfTsKIH0KIAogIyBodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1vcGVyYXRpb25zCkBAIC0zODIzLDYgKzM4
MjQsMTUgQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAg
ICAgIHB1c2goQGNvbmp1bmN0cywgICIke25hbWV9OjplbmFibGVkRm9yQ29udGV4dCgiIC4gJGNv
bnRleHRSZWYgLiAiKSIpOwogICAgIH0KIAorICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgICAgICBhc3NlcnQo
Ik11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nLiIpIGlm
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNldHRp
bmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKworICAgICAgICBteSBAc2V0dGluZ3MgPSBzcGxp
dCgvJi8sICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRC
eVNldHRpbmd9KTsKKyAgICAgICAgZm9yZWFjaCBteSAkc2V0dGluZyAoQHNldHRpbmdzKSB7Cisg
ICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4gVG9NZXRob2ROYW1lKCRzZXR0aW5nKSAuICJF
bmFibGVkKCkiKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG15ICRyZXN1bHQgPSBqb2luKCIg
JiYgIiwgQGNvbmp1bmN0cyk7CiAgICAgJHJlc3VsdCA9ICIoJHJlc3VsdCkiIGlmIEBjb25qdW5j
dHMgPiAxOwogICAgIHJldHVybiAkcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgppbmRleCA5ZjRhZGMzZGFhNGE4ODc0NjRk
NzQ2OTVhZDliMDY1OTJkZmMxOTI1Li45NTU5ZTJjNjA3OTEwM2E4Y2VkZjFkYzhiY2E2OTdlZjE1
YmVmN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgpAQCAtODIsNiArODIsMTAgQEAKICAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQi
LCAiRXhlY1N0YXRlIiwgIlJ1bnRpbWVGbGFncyIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0K
ICAgICAgICAgfSwKKyAgICAgICAgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI6IHsKKyAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRlcmZhY2UiXSwK
KyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQorICAgICAgICB9LAogICAgICAgICAiQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IDQyYzUxZmVmNGI2NWNiNzQ0YTgw
NGU2ZGFmODMwMzNlZjJmYjA3ZDEuLmE0ZDhkM2U2NWRlNTA5ZDYyYjk4NWM3M2ZhNjJiZWVmYzA3
OTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJv
Y2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJv
Y2Vzcy1pZGxzLnBsCkBAIC0yODMsNyArMjgzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JB
dHRyaWJ1dGVzCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlTmFtZSAoc29ydCBrZXlzICV7JGV4
dGVuZGVkQXR0cmlidXRlc30pIHsKICAgICAgIG5leHQgdW5sZXNzICgkYXR0cmlidXRlTmFtZSBl
cSAiQ29uZGl0aW9uYWwiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQXRSdW50aW1lIiB8
fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEZvcldvcmxkIgogICAgICAgICB8fCAkYXR0cmli
dXRlTmFtZSBlcSAiRW5hYmxlZEJ5U2V0dGluZyIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlNlY3Vy
ZUNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJQcml2YXRlSWRlbnRpZmllciIKLSAgICAg
ICAgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlB1YmxpY0lkZW50aWZpZXIiIHx8ICRhdHRyaWJ1dGVO
YW1lIGVxICJEaXNhYmxlZEJ5UXVpcmsiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlR
dWlyayIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRGb3JDb250ZXh0IiB8fCAkYXR0cmli
dXRlTmFtZSBlcSAiQ3VzdG9tRW5hYmxlZCIpOworICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBl
cSAiUHVibGljSWRlbnRpZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWly
ayIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVF1aXJrIgorICAgICAgICB8fCAkYXR0
cmlidXRlTmFtZSBlcSAiRW5hYmxlZEZvckNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJD
dXN0b21FbmFibGVkIikgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5
U2V0dGluZyI7CiAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFtZTsK
ICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAiPSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5h
bWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAgICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRl
c0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5pZGwKaW5kZXggNDAyYzViYTAxYTgyNDU2Zjg4ZGY0ZWEzZWUwNjUyZWQyY2FhYzdlOC4u
MzAxMTk5MzljOThjMTllOWI5MzAyNzVkMzVjYjY2NTI1NDVlZjQxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbApAQCAtMjEsNiArMjEsNyBAQAogICAgIENvbnN0cnVj
dG9yLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCiAgICAgQ3VzdG9tVG9KU09i
amVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgRE9NSklULAogXSBpbnRl
cmZhY2UgRG9jdW1lbnRGcmFnbWVudCA6IE5vZGUgewogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDY1ZmNlNDZlZDBlYmEwYzgzYjBhZjc0YTRlMmY5N2E4
OTYxNmI4MTQuLjdlNTJjMDA4NjZmNTUwMzg5OTNhNzZkNWIxZWUwNmY4MWJmOTU5NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTcyLDYgKzk3MiwxMSBA
QCBpbmxpbmUgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVSZW5kZXJlcigpCiB7CiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIt
PnVwZGF0ZUZyb21FbGVtZW50KCk7CisKKyNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBU
KQorICAgIGlmIChtX21lZGlhQ29udHJvbHNIb3N0KQorICAgICAgICBtX21lZGlhQ29udHJvbHNI
b3N0LT51cGRhdGVDYXB0aW9uRGlzcGxheVNpemVzKGZhbHNlKTsKKyNlbmRpZgogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCkBAIC0xNzQ4LDEwICsxNzUz
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNv
bnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
dXJyZW50Q3Vlc1NpemU7ICsraSkgewogICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUg
PSBjdXJyZW50Q3Vlc1tpXS5kYXRhKCk7Ci0KLSAgICAgICAgaWYgKGN1ZS0+aXNSZW5kZXJhYmxl
KCkpCi0gICAgICAgICAgICB0b1ZUVEN1ZShjdWUuZ2V0KCkpLT51cGRhdGVEaXNwbGF5VHJlZSht
b3ZpZVRpbWUpOwotCisgICAgICAgIGN1ZS0+dXBkYXRlRGlzcGxheVRyZWUobW92aWVUaW1lKTsK
ICAgICAgICAgaWYgKCFjdWUtPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBhY3RpdmVTZXRDaGFu
Z2VkID0gdHJ1ZTsKICAgICB9CkBAIC0yMDY0LDcgKzIwNjYsOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmIGN1ZSkK
ICAgICAvLyBTaW5jZSB0aGUgY3VlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtZWRpYSBlbGVt
ZW50IGFuZCBsaWtlbHkgdGhlCiAgICAgLy8gVGV4dFRyYWNrIG1pZ2h0IGFsc28gYmUgZGVzdHJ1
Y3RlZCwgbm90aWZ5aW5nIHRoZSByZWdpb24gb2YgdGhlIGN1ZQogICAgIC8vIHJlbW92YWwgc2hv
dWxkbid0IGJlIGRvbmUuCi0gICAgaWYgKGN1ZS5pc1JlbmRlcmFibGUoKSkKKyAgICBhdXRvIGlz
VlRUID0gaXM8VlRUQ3VlPihjdWUpOworICAgIGlmIChpc1ZUVCkKICAgICAgICAgdG9WVFRDdWUo
JmN1ZSktPm5vdGlmeVJlZ2lvbldoZW5SZW1vdmluZ0Rpc3BsYXlUcmVlKGZhbHNlKTsKIAogICAg
IHNpemVfdCBpbmRleCA9IG1fY3VycmVudGx5QWN0aXZlQ3Vlcy5maW5kKGludGVydmFsKTsKQEAg
LTIwNzMsMTEgKzIwNzYsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJiBjdWUpCiAgICAgICAgIG1fY3VycmVudGx5
QWN0aXZlQ3Vlcy5yZW1vdmUoaW5kZXgpOwogICAgIH0KIAotICAgIGlmIChjdWUuaXNSZW5kZXJh
YmxlKCkpCi0gICAgICAgIHRvVlRUQ3VlKCZjdWUpLT5yZW1vdmVEaXNwbGF5VHJlZSgpOworICAg
IGN1ZS5yZW1vdmVEaXNwbGF5VHJlZSgpOwogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMo
Y3VycmVudE1lZGlhVGltZSgpKTsKIAotICAgIGlmIChjdWUuaXNSZW5kZXJhYmxlKCkpCisgICAg
aWYgKGlzVlRUKQogICAgICAgICB0b1ZUVEN1ZSgmY3VlKS0+bm90aWZ5UmVnaW9uV2hlblJlbW92
aW5nRGlzcGxheVRyZWUodHJ1ZSk7CiB9CiAKQEAgLTY1ODYsNiArNjU4OCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxheShUZXh0VHJhY2tWaXNpYmls
aXR5Q2hlY2tUeXBlIGNoCiAgICAgICAgIHJldHVybjsKIAogICAgIGVuc3VyZU1lZGlhQ29udHJv
bHNTaGFkb3dSb290KCk7CisgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogI2Vsc2UKICAg
ICBpZiAoIW1faGF2ZVZpc2libGVUZXh0VHJhY2sgJiYgIWhhc01lZGlhQ29udHJvbHMoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjYwOSw3ICs2NjEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9M
U19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc0hvc3QpCi0gICAgICAgIG1fbWVkaWFD
b250cm9sc0hvc3QtPnVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKKyAgICAgICAgbV9tZWRp
YUNvbnRyb2xzSG9zdC0+dXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyh0cnVlKTsKICNlbmRpZgog
CiAgICAgaWYgKG1fcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IGNkZGM1Yjc5NWQ2MjQ5NmFjYTE3MzMwNjk5
NTNhYjI4MmZlYTMxNjEuLjhmMjliYThiNzQ0YjMyM2MyNTgyYmEwZmMzM2ExMzczNjNjOTg3Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4
dFRyYWNrQ3VlR2VuZXJpYy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRl
ICJWVFRSZWdpb25MaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAg
LTExMjUsMTQgKzExMjYsMTMgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKICAgICAvLyAxLiBJZiB0aGUgbWVkaWEgZWxlbWVudCBp
cyBhbiBhdWRpbyBlbGVtZW50LCBvciBpcyBhbm90aGVyIHBsYXliYWNrCiAgICAgLy8gbWVjaGFu
aXNtIHdpdGggbm8gcmVuZGVyaW5nIGFyZWEsIGFib3J0IHRoZXNlIHN0ZXBzLiBUaGVyZSBpcyBu
b3RoaW5nIHRvCiAgICAgLy8gcmVuZGVyLgotICAgIGlmICghbWVkaWFFbGVtZW50IHx8ICFtZWRp
YUVsZW1lbnQtPmlzVmlkZW8oKSkKKyAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFFbGVt
ZW50LT5pc1ZpZGVvKCkgfHwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIDIuIExldCB2aWRlbyBiZSB0aGUgbWVkaWEgZWxlbWVu
dCBvciBvdGhlciBwbGF5YmFjayBtZWNoYW5pc20uCiAgICAgSFRNTFZpZGVvRWxlbWVudCYgdmlk
ZW8gPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbWVkaWFFbGVtZW50KTsKIAogICAgIC8v
IDMuIExldCBvdXRwdXQgYmUgYW4gZW1wdHkgbGlzdCBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Q1NTIGJsb2NrIGJveGVzLgotICAgIFZlY3RvcjxSZWZQdHI8SFRNTERpdkVsZW1lbnQ+PiBvdXRw
dXQ7CiAKICAgICAvLyA0LiBJZiB0aGUgdXNlciBhZ2VudCBpcyBleHBvc2luZyBhIHVzZXIgaW50
ZXJmYWNlIGZvciB2aWRlbywgYWRkIHRvCiAgICAgLy8gb3V0cHV0IG9uZSBvciBtb3JlIGNvbXBs
ZXRlbHkgdHJhbnNwYXJlbnQgcG9zaXRpb25lZCBDU1MgYmxvY2sgYm94ZXMgdGhhdApAQCAtMTE3
MywxNyArMTE3MywxMiBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgICAgICByZW1vdmVDaGlsZHJlbigpOwogCiAgICAgYWN0
aXZlQ3Vlcy5yZW1vdmVBbGxNYXRjaGluZyhbXSAoQ3VlSW50ZXJ2YWwmIGN1ZUludGVydmFsKSB7
Ci0gICAgICAgIGlmICghaXM8VlRUQ3VlPihjdWVJbnRlcnZhbC5kYXRhKCkpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgUmVmPFZUVEN1ZT4gY3VlID0gZG93bmNhc3Q8VlRU
Q3VlPigqY3VlSW50ZXJ2YWwuZGF0YSgpKTsKLQotICAgICAgICByZXR1cm4gIWN1ZS0+aXNSZW5k
ZXJhYmxlKCkKLSAgICAgICAgICAgIHx8ICFjdWUtPnRyYWNrKCkKKyAgICAgICAgUmVmUHRyPFRl
eHRUcmFja0N1ZT4gY3VlID0gY3VlSW50ZXJ2YWwuZGF0YSgpOworICAgICAgICByZXR1cm4gIWN1
ZS0+dHJhY2soKQogICAgICAgICAgICAgfHwgIWN1ZS0+dHJhY2soKS0+aXNSZW5kZXJlZCgpCiAg
ICAgICAgICAgICB8fCBjdWUtPnRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkRp
c2FibGVkCiAgICAgICAgICAgICB8fCAhY3VlLT5pc0FjdGl2ZSgpCi0gICAgICAgICAgICB8fCBj
dWUtPnRleHQoKS5pc0VtcHR5KCk7CisgICAgICAgICAgICB8fCAhY3VlLT5pc1JlbmRlcmFibGUo
KTsKICAgICB9KTsKIAogICAgIC8vIFNvcnQgdGhlIGFjdGl2ZSBjdWVzIGZvciB0aGUgYXBwcm9w
cmlhdGUgZGlzcGxheSBvcmRlci4gRm9yIGV4YW1wbGUsIGZvciByb2xsLXVwCkBAIC0xMTkxLDM3
ICsxMTg2LDIwIEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSgpCiAgICAgLy8gc28gdGhhdCB0aGUgbmV3ZXN0IGNhcHRpb25zIGFwcGVh
ciBhdCB0aGUgYm90dG9tLgogICAgIHN0ZDo6c29ydChhY3RpdmVDdWVzLmJlZ2luKCksIGFjdGl2
ZUN1ZXMuZW5kKCksICZjb21wYXJlQ3VlSW50ZXJ2YWxGb3JEaXNwbGF5KTsKIAotICAgIC8vIDEw
LiBGb3IgZWFjaCB0ZXh0IHRyYWNrIGN1ZSBjdWUgaW4gY3VlcyB0aGF0IGhhcyBub3QgeWV0IGhh
ZAotICAgIC8vIGNvcnJlc3BvbmRpbmcgQ1NTIGJveGVzIGFkZGVkIHRvIG91dHB1dCwgaW4gdGV4
dCB0cmFjayBjdWUgb3JkZXIsIHJ1biB0aGUKLSAgICAvLyBmb2xsb3dpbmcgc3Vic3RlcHM6Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGlmICghbWVkaWFDb250cm9sbGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgUmVmUHRyPFZUVEN1ZT4gY3VlID0gZG93bmNh
c3Q8VlRUQ3VlPihhY3RpdmVDdWVzW2ldLmRhdGEoKSk7Ci0KLSAgICAgICAgREVCVUdfTE9HKExP
R0lERU5USUZJRVIsICJhZGRpbmcgYW5kIHBvc2l0aW9uaW5nIGN1ZSAiLCBpLCAiOiBcIiIsIGN1
ZS0+dGV4dCgpLCAiXCIsIHN0YXJ0PSIsIGN1ZS0+c3RhcnRUaW1lKCksICIsIGVuZD0iLCBjdWUt
PmVuZFRpbWUoKSwgIiwgbGluZT0iLCBjdWUtPmxpbmUoKSk7Ci0gICAgICAgIFJlZjxWVFRDdWVC
b3g+IGRpc3BsYXlCb3ggPSBjdWUtPmdldERpc3BsYXlUcmVlKG1fdmlkZW9EaXNwbGF5U2l6ZS5z
aXplKCksIG1fZm9udFNpemUpOwotICAgICAgICBSZWZQdHI8VlRUUmVnaW9uPiByZWdpb24gPSBj
dWUtPnRyYWNrKCktPnJlZ2lvbnMoKS0+Z2V0UmVnaW9uQnlJZChjdWUtPnJlZ2lvbklkKCkpOwot
ICAgICAgICBpZiAoIXJlZ2lvbikgewotICAgICAgICAgICAgLy8gSWYgY3VlIGhhcyBhbiBlbXB0
eSB0ZXh0IHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciBvciB0aGVyZSBpcyBubwotICAgICAg
ICAgICAgLy8gV2ViVlRUIHJlZ2lvbiB3aG9zZSByZWdpb24gaWRlbnRpZmllciBpcyBpZGVudGlj
YWwgdG8gY3VlJ3MgdGV4dAotICAgICAgICAgICAgLy8gdHJhY2sgY3VlIHJlZ2lvbiBpZGVudGlm
aWVyLCBydW4gdGhlIGZvbGxvd2luZyBzdWJzdGVwczoKLSAgICAgICAgICAgIGlmIChkaXNwbGF5
Qm94LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKGRpc3BsYXlCb3gucHRyKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gTm90ZTogdGhlIGRpc3BsYXkgdHJlZSBvZiBhIGN1ZSBpcyByZW1v
dmVkIHdoZW4gdGhlIGFjdGl2ZSBmbGFnIG9mIHRoZSBjdWUgaXMgdW5zZXQuCi0gICAgICAgICAg
ICAgICAgYXBwZW5kQ2hpbGQoZGlzcGxheUJveCk7Ci0gICAgICAgICAgICAgICAgY3VlLT5zZXRG
b250U2l6ZShtX2ZvbnRTaXplLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXpl
SXNJbXBvcnRhbnQpOworICAgIGlmIChtZWRpYUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKCkpIHsKKyAgICAgICAgLy8gMTAuIEZvciBlYWNoIHRleHQgdHJhY2sgY3VlIGN1ZSBp
biBjdWVzIHRoYXQgaGFzIG5vdCB5ZXQgaGFkCisgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgQ1NT
IGJveGVzIGFkZGVkIHRvIG91dHB1dCwgaW4gdGV4dCB0cmFjayBjdWUgb3JkZXIsIHJ1biB0aGUK
KyAgICAgICAgLy8gZm9sbG93aW5nIHN1YnN0ZXBzOgorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGF1dG8gY3VlID0g
YWN0aXZlQ3Vlc1tpXS5kYXRhKCk7CisgICAgICAgICAgICBjdWUtPnNldEZvbnRTaXplKG1fZm9u
dFNpemUsIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemVJc0ltcG9ydGFudCk7
CisgICAgICAgICAgICBpZiAoaXM8VlRUQ3VlPihjdWUpIHx8IGlzPFRleHRUcmFja0N1ZUdlbmVy
aWM+KGN1ZSkpCisgICAgICAgICAgICAgICAgcHJvY2Vzc0FjdGl2ZVZUVEN1ZSgqZG93bmNhc3Q8
VlRUQ3VlPihjdWUpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0
cjxUZXh0VHJhY2tDdWVCb3g+IGRpc3BsYXlCb3ggPSBjdWUtPmdldERpc3BsYXlUcmVlKG1fdmlk
ZW9EaXNwbGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemUpOworICAgICAgICAgICAgICAgIGlmIChk
aXNwbGF5Qm94LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKGRpc3BsYXlCb3guZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCgqZGlzcGxheUJveCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBMZXQgcmVnaW9uIGJlIHRo
ZSBXZWJWVFQgcmVnaW9uIHdob3NlIHJlZ2lvbiBpZGVudGlmaWVyCi0gICAgICAgICAgICAvLyBt
YXRjaGVzIHRoZSB0ZXh0IHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciBvZiBjdWUuCi0gICAg
ICAgICAgICBSZWY8SFRNTERpdkVsZW1lbnQ+IHJlZ2lvbk5vZGUgPSByZWdpb24tPmdldERpc3Bs
YXlUcmVlKCk7Ci0KLSAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgcmVnaW9uIHRvIHRoZSB2aWV3
cG9ydCwgaWYgaXQgd2FzIG5vdCBhbHJlYWR5LgotICAgICAgICAgICAgaWYgKCFjb250YWlucyhy
ZWdpb25Ob2RlLnB0cigpKSkKLSAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZChyZWdpb24tPmdl
dERpc3BsYXlUcmVlKCkpOwotCi0gICAgICAgICAgICByZWdpb24tPmFwcGVuZFRleHRUcmFja0N1
ZUJveChXVEZNb3ZlKGRpc3BsYXlCb3gpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTIzNSw2
ICsxMjEzLDM0IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSgpCiAgICAgfQogfQogCit2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OnByb2Nlc3NBY3RpdmVWVFRDdWUoVlRUQ3VlJiBjdWUpCit7CisgICAg
QVNTRVJUKGlzPFZUVEN1ZT4oY3VlKSB8fCBpczxUZXh0VHJhY2tDdWVHZW5lcmljPihjdWUpKTsK
KworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiYWRkaW5nIGFuZCBwb3NpdGlvbmluZyBj
dWU6IFwiIiwgY3VlLnRleHQoKSwgIlwiLCBzdGFydD0iLCBjdWUuc3RhcnRUaW1lKCksICIsIGVu
ZD0iLCBjdWUuZW5kVGltZSgpLCAiLCBsaW5lPSIsIGN1ZS5saW5lKCkpOworICAgIFJlZjxUZXh0
VHJhY2tDdWVCb3g+IGRpc3BsYXlCb3ggPSAqY3VlLmdldERpc3BsYXlUcmVlKG1fdmlkZW9EaXNw
bGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemUpOworICAgIFJlZlB0cjxWVFRSZWdpb24+IHJlZ2lv
biA9IGN1ZS50cmFjaygpLT5yZWdpb25zKCktPmdldFJlZ2lvbkJ5SWQoY3VlLnJlZ2lvbklkKCkp
OworICAgIGlmICghcmVnaW9uKSB7CisgICAgICAgIC8vIElmIGN1ZSBoYXMgYW4gZW1wdHkgdGV4
dCB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIgb3IgdGhlcmUgaXMgbm8KKyAgICAgICAgLy8g
V2ViVlRUIHJlZ2lvbiB3aG9zZSByZWdpb24gaWRlbnRpZmllciBpcyBpZGVudGljYWwgdG8gY3Vl
J3MgdGV4dAorICAgICAgICAvLyB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIsIHJ1biB0aGUg
Zm9sbG93aW5nIHN1YnN0ZXBzOgorICAgICAgICBpZiAoZGlzcGxheUJveC0+aGFzQ2hpbGROb2Rl
cygpICYmICFjb250YWlucyhkaXNwbGF5Qm94LnB0cigpKSkgeworICAgICAgICAgICAgLy8gTm90
ZTogdGhlIGRpc3BsYXkgdHJlZSBvZiBhIGN1ZSBpcyByZW1vdmVkIHdoZW4gdGhlIGFjdGl2ZSBm
bGFnIG9mIHRoZSBjdWUgaXMgdW5zZXQuCisgICAgICAgICAgICBhcHBlbmRDaGlsZChkaXNwbGF5
Qm94KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIExldCByZWdpb24gYmUg
dGhlIFdlYlZUVCByZWdpb24gd2hvc2UgcmVnaW9uIGlkZW50aWZpZXIKKyAgICAgICAgLy8gbWF0
Y2hlcyB0aGUgdGV4dCB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIgb2YgY3VlLgorICAgICAg
ICBSZWY8SFRNTERpdkVsZW1lbnQ+IHJlZ2lvbk5vZGUgPSByZWdpb24tPmdldERpc3BsYXlUcmVl
KCk7CisKKyAgICAgICAgLy8gQXBwZW5kIHRoZSByZWdpb24gdG8gdGhlIHZpZXdwb3J0LCBpZiBp
dCB3YXMgbm90IGFscmVhZHkuCisgICAgICAgIGlmICghY29udGFpbnMocmVnaW9uTm9kZS5wdHIo
KSkpCisgICAgICAgICAgICBhcHBlbmRDaGlsZChyZWdpb24tPmdldERpc3BsYXlUcmVlKCkpOwor
CisgICAgICAgIHJlZ2lvbi0+YXBwZW5kVGV4dFRyYWNrQ3VlQm94KFdURk1vdmUoZGlzcGxheUJv
eCkpOworICAgIH0KK30KKwogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Ojp1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKQogewogICAgIGlmICghZG9jdW1lbnQoKS5w
YWdlKCkpCkBAIC0xMjUwLDEyICsxMjU2LDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50Ojp1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKQogCiAgICAgZm9yIChh
dXRvJiBhY3RpdmVDdWUgOiBtZWRpYUVsZW1lbnQtPmN1cnJlbnRseUFjdGl2ZUN1ZXMoKSkgewog
ICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBhY3RpdmVDdWUuZGF0YSgpOwotICAg
ICAgICBpZiAoIWN1ZS0+aXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICB0b1ZUVEN1ZShjdWUuZ2V0KCkpLT5zZXRGb250U2l6ZShtX2ZvbnRTaXplLCBtX3Zp
ZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQpOworICAgICAgICBp
ZiAoY3VlLT5pc1JlbmRlcmFibGUoKSkKKyAgICAgICAgICAgIGN1ZS0+c2V0Rm9udFNpemUobV9m
b250U2l6ZSwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKSwgbV9mb250U2l6ZUlzSW1wb3J0YW50
KTsKICAgICB9Ci0KIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Ojp1cGRhdGVUZXh0U3Ryb2tlU3R5bGUoKQpAQCAtMTI5NSw2ICsxMjk4LDEzIEBAIHZvaWQg
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlVGltZXJGaXJlZCgp
CiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0
byBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CisgICAgaWYgKCFtZWRp
YUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgYWN0aXZlQ3VlIDog
bWVkaWFFbGVtZW50LT5jdXJyZW50bHlBY3RpdmVDdWVzKCkpCisgICAgICAgIGFjdGl2ZUN1ZS5k
YXRhKCktPnJlY2FsY3VsYXRlU3R5bGVzKCk7CisKICAgICBpZiAobV90ZXh0VHJhY2tSZXByZXNl
bnRhdGlvbikKICAgICAgICAgdXBkYXRlU3R5bGVGb3JUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
OwogCkBAIC0xMzQ2LDYgKzEzNTYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OnVwZGF0ZVN0eWxlRm9yVGV4dFRyYWNrUmVwcmVzZW50YXRpbwogewogICAg
IGlmICghbV91cGRhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvblN0eWxlKQogICAgICAgICByZXR1
cm47CisKICAgICBtX3VwZGF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uU3R5bGUgPSBmYWxzZTsK
IAogICAgIGlmIChtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCA3YzJjYzY1Zjk2
MzA3OWYwNjUzZDMyZDZmZWFkM2M4ZjU1NmM2M2M5Li5jZjQxNDIxNmZhY2UyMjU3YzIwMWQ1YWRk
MGYwMGY2OGE3MmMzMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDY3LDYgKzQ2Nyw4IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAKK2NsYXNzIFZUVEN1ZTsKKwogY2xhc3MgTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCBmaW5hbAogICAgIDogcHVibGljIE1lZGlhQ29udHJv
bERpdkVsZW1lbnQKICAgICAsIHB1YmxpYyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudApA
QCAtNDg3LDYgKzQ4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7
CiAgICAgdm9pZCB1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKTsKICAgICB2b2lkIHVwZGF0ZVRl
eHRTdHJva2VTdHlsZSgpOworICAgIHZvaWQgcHJvY2Vzc0FjdGl2ZVZUVEN1ZShWVFRDdWUmKTsK
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXgg
NTlhMTkyNDYyMDliMDA5YWMwMTRhYmE5YjcyMGYzMjJkNTYxNzk3Ny4uMTgwYzk2Y2M3YWY4YWRm
MTVhNWYxYTYyYzU3NjA2OGE0ZWIwNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcApAQCAtMjM3LDExICsyMzcsOCBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZShN
b2RlIG1vZGUpCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAq
bV9jdWVzKTsKIAogICAgIGlmIChtb2RlICE9IE1vZGU6OlNob3dpbmcgJiYgbV9jdWVzKSB7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBtX2N1ZXMtPml0ZW0oaSk7Ci0g
ICAgICAgICAgICBpZiAoY3VlLT5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICB0b1ZU
VEN1ZShjdWUuZ2V0KCkpLT5yZW1vdmVEaXNwbGF5VHJlZSgpOwotICAgICAgICB9CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAg
ICAgbV9jdWVzLT5pdGVtKGkpLT5yZW1vdmVEaXNwbGF5VHJlZSgpOwogICAgIH0KIAogICAgIG1f
bW9kZSA9IG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAK
aW5kZXggOGVhYzc1MWNkN2NhNjg5ODE5YWEwNmMyZTNhZWVmMzc5YjNlNTQwOS4uZmFjMDZiZGY1
ZjE4MGI2NmIyODY0ZWY5NmUyZWMxMmY1NTIzYmI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMzYsOSArMzYsMTUgQEAKIAogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVk
ZSAiRE9NUmVjdC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4
dFRyYWNrQ3VlTGlzdC5oIgpAQCAtNDgsMTEgKzU0LDEzIEBACiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrQ3VlKTsKK1dURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tDdWVCb3gpOwogCiBjb25zdCBBdG9tU3Ry
aW5nJiBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkKIHsKQEAgLTYwLDEyICs2OCwx
NjUgQEAgY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCgp
CiAgICAgcmV0dXJuIGN1ZTsKIH0KIAorY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrQ3VlOjpj
dWVCb3hTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlh
LXRleHQtdHJhY2stZGlzcGxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICByZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7Cit9CisKK2NvbnN0IEF0
b21TdHJpbmcmIFRleHRUcmFja0N1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGN1ZUJhY2tkcm9wU2hh
ZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBjdWVCYWNrZHJv
cFNoYWRvd1BzZXVkb0lkOworfQorCitzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3VlQXR0
cmlidXROYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
Y3VlVGFnKG51bGxBdG9tKCksICJjdWUiLCBudWxsQXRvbSgpKTsKKyAgICByZXR1cm4gY3VlVGFn
OworfQorCitzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3VlQmFja2dyb3VuZEF0dHJpYnV0
TmFtZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGN1ZUJh
Y2tncm91bmRUYWcobnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiLCBudWxsQXRvbSgpKTsKKyAg
ICByZXR1cm4gY3VlQmFja2dyb3VuZFRhZzsKK30KKworVGV4dFRyYWNrQ3VlQm94OjpUZXh0VHJh
Y2tDdWVCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDdWUmIGN1ZSkKKyAgICA6IEhU
TUxFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAsIG1fY3VlKG1ha2VX
ZWFrUHRyKGN1ZSkpCit7CisgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7
CisgICAgc2V0UHNldWRvKFRleHRUcmFja0N1ZTo6Y3VlQm94U2hhZG93UHNldWRvSWQoKSk7Cit9
CisKK1RleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlQm94OjpnZXRDdWUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1ZS5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzTGVnYWxOb2Rl
KE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmJy
VGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpkaXZUYWcpCisgICAg
ICAgIHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAgICAgfHwgbm9k
ZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cFRhZykKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6cmJUYWcpCisgICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OnJ0VGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpydGNUYWcpCisg
ICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnJ1YnlUYWcpCisgICAgICAgIHx8
IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNwYW5UYWcpCisgICAgICAgIHx8IG5vZGUubm9k
ZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREU7Cit9CisKK3N0YXRpYyBFeGNlcHRpb24gaW52YWxp
ZE5vZGVFeGNlcHRpb24oTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZE5vZGVUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIkludmFsaWQgbm9kZSB0eXBlOiAiLCBub2Rl
Lm5vZGVOYW1lKCkpIH07Cit9CisKK3N0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0Zvcklu
dmFsaWROb2RlVHlwZXMoTm9kZSYgcm9vdCkKK3sKKyAgICBpZiAoIWlzTGVnYWxOb2RlKHJvb3Qp
KQorICAgICAgICByZXR1cm4gaW52YWxpZE5vZGVFeGNlcHRpb24ocm9vdCk7CisKKyAgICBmb3Ig
KGF1dG8qIGNoaWxkID0gcm9vdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghaXNMZWdhbE5vZGUoKmNoaWxkKSkKKyAgICAg
ICAgICAgIHJldHVybiBpbnZhbGlkTm9kZUV4Y2VwdGlvbigqY2hpbGQpOworCisgICAgICAgIGlm
IChpczxDb250YWluZXJOb2RlPigqY2hpbGQpKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcygqY2hpbGQpOworICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK2Vu
dW0gUmVxdWlyZWROb2RlcyB7CisgICAgQ3VlID0gMSA8PCAwLAorICAgIEN1ZUJhY2tncm91bmQg
PSAxIDw8IDEsCit9OworCitzdGF0aWMgT3B0aW9uU2V0PFJlcXVpcmVkTm9kZXM+IHRhZ1BzZXVk
b09iamVjdHMoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgT3B0aW9uU2V0PFJlcXVpcmVkTm9kZXM+IG5vZGVUeXBl
cyA9IHsgfTsKKworICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsK
KyAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGN1ZUF0
dHJpYnV0TmFtZSgpKSkgeworICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhUZXh0VHJhY2tDdWU6
OmN1ZVNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBub2RlVHlwZXMgPSB7IFJlcXVpcmVkTm9k
ZXM6OkN1ZSB9OworICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKSkpIHsKKyAgICAgICAgZWxl
bWVudC5zZXRQc2V1ZG8oVGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkp
OworICAgICAgICBub2RlVHlwZXMgPSB7IFJlcXVpcmVkTm9kZXM6OkN1ZUJhY2tncm91bmQgfTsK
KyAgICB9CisKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBub2RlVHlwZXMuYWRk
KHRhZ1BzZXVkb09iamVjdHMoKmNoaWxkKSk7CisKKyAgICByZXR1cm4gbm9kZVR5cGVzOworfQor
CitzdGF0aWMgdm9pZCByZW1vdmVQc2V1ZG9BdHRyaWJ1dGVzKE5vZGUmIG5vZGUpCit7CisgICAg
aWYgKCFpczxFbGVtZW50Pihub2RlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgIGlmIChlbGVtZW50Lmhhc0F0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY3VlQXR0cmlidXROYW1lKCkpIHx8IGVsZW1lbnQu
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjdWVCYWNrZ3JvdW5kQXR0cmlidXRO
YW1lKCkpKQorICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShIVE1MTmFtZXM6OnBzZXVk
b0F0dHIpOworCisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGVsZW1lbnQuZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcmVtb3ZlUHNldWRv
QXR0cmlidXRlcygqY2hpbGQpOworfQorCitFeGNlcHRpb25PcjxSZWY8VGV4dFRyYWNrQ3VlPj4g
VGV4dFRyYWNrQ3VlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBEb2N1bWVudEZyYWdtZW50JiBjdWVEb2N1bWVudCkKK3sK
KyAgICBBU1NFUlQoY29udGV4dC5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVChpczxEb2N1bWVu
dEZyYWdtZW50PihjdWVEb2N1bWVudCkpOworCisgICAgaWYgKCFjdWVEb2N1bWVudC5maXJzdENo
aWxkKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJvciwg
IkVtcHR5IGN1ZSBmcmFnbWVudCIgfTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IGN1ZURvY3Vt
ZW50LmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBjaGVja0ZvckludmFsaWROb2RlVHlwZXMoKm5vZGUpOworICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgYXV0byBmcmFnbWVudCA9IERvY3Vt
ZW50RnJhZ21lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkpOworICAgIGZv
ciAoTm9kZSogbm9kZSA9IGN1ZURvY3VtZW50LmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBmcmFnbWVudC0+ZW5z
dXJlUHJlSW5zZXJ0aW9uVmFsaWRpdHkoKm5vZGUsIG51bGxwdHIpOworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisgICAgfQorICAgIGN1ZURvY3VtZW50LmNsb25lQ2hpbGROb2RlcyhmcmFnbWVu
dCk7CisKKyAgICBPcHRpb25TZXQ8UmVxdWlyZWROb2Rlcz4gbm9kZVR5cGVzID0geyB9OworICAg
IGZvciAoTm9kZSogbm9kZSA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpKQorICAgICAgICBub2RlVHlwZXMuYWRkKHRhZ1BzZXVkb09iamVj
dHMoKm5vZGUpKTsKKworICAgIGlmICghbm9kZVR5cGVzLmNvbnRhaW5zKFJlcXVpcmVkTm9kZXM6
OkN1ZSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgbWFr
ZVN0cmluZygiTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGU6ICIsIGN1ZUF0dHJpYnV0TmFtZSgp
LnRvU3RyaW5nKCkpIH07CisgICAgaWYgKCFub2RlVHlwZXMuY29udGFpbnMoUmVxdWlyZWROb2Rl
czo6Q3VlQmFja2dyb3VuZCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgbWFrZVN0cmluZygiTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGU6ICIsIGN1ZUJh
Y2tncm91bmRBdHRyaWJ1dE5hbWUoKS50b1N0cmluZygpKSB9OworCisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGV4dFRyYWNrQ3VlKGNvbnRleHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3ZlKGZyYWdt
ZW50LmdldCgpKSkpOworfQorCitUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgRG9jdW1lbnRGcmFnbWVudCYmIGN1ZUZyYWdtZW50KQorICAgIDogVGV4dFRy
YWNrQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQpCit7CisgICAgbV9jdWVOb2RlID0gJmN1ZUZyYWdt
ZW50OworfQorCiBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCkKICAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAs
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQotICAgICwgbV9pc0FjdGl2ZShmYWxz
ZSkKLSAgICAsIG1fcGF1c2VPbkV4aXQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpOwogfQpAQCAtODUsNiArMjQ2LDggQEAgdm9pZCBU
ZXh0VHJhY2tDdWU6OmRpZENoYW5nZSgpCiAgICAgaWYgKC0tbV9wcm9jZXNzaW5nQ3VlQ2hhbmdl
cykKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRlID0gdHJ1
ZTsKKwogICAgIGlmIChtX3RyYWNrKQogICAgICAgICBtX3RyYWNrLT5jdWVEaWRDaGFuZ2UodGhp
cyk7CiB9CkBAIC0xNjYsNiArMzI5LDEzIEBAIGJvb2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgp
CiB2b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgbV9p
c0FjdGl2ZSA9IGFjdGl2ZTsKKworICAgIGlmIChtX2lzQWN0aXZlIHx8ICFtX2Rpc3BsYXlUcmVl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgZGlzcGxheSB0cmVlIGlzIG5ldmVyIGV4
cG9zZWQgdG8gYXV0aG9yIHNjcmlwdHMgc28gaXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBo
ZXJlLgorICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dl
ZFNjb3BlKCptX2Rpc3BsYXlUcmVlKTsKKyAgICBtX2Rpc3BsYXlUcmVlLT5yZW1vdmUoKTsKIH0K
IAogYm9vbCBUZXh0VHJhY2tDdWU6OmlzT3JkZXJlZEJlZm9yZShjb25zdCBUZXh0VHJhY2tDdWUq
IG90aGVyKSBjb25zdApAQCAtMjI1LDggKzM5NSw4IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjp0b0pT
T04oSlNPTjo6T2JqZWN0JiB2YWx1ZSkgY29uc3QKIHsKICAgICBBU0NJSUxpdGVyYWwgdHlwZSA9
ICJHZW5lcmljIl9zOwogICAgIHN3aXRjaCAoY3VlVHlwZSgpKSB7Ci0gICAgY2FzZSBUZXh0VHJh
Y2tDdWU6OkdlbmVyaWM6Ci0gICAgICAgIHR5cGUgPSAiR2VuZXJpYyJfczsKKyAgICBjYXNlIFRl
eHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ6CisgICAgICAgIHR5cGUgPSAiQ29udmVydGVk
VG9XZWJWVFQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpXZWJW
VFQ6CiAgICAgICAgIHR5cGUgPSAiV2ViVlRUIl9zOwpAQCAtMjM0LDYgKzQwNCw5IEBAIHZvaWQg
VGV4dFRyYWNrQ3VlOjp0b0pTT04oSlNPTjo6T2JqZWN0JiB2YWx1ZSkgY29uc3QKICAgICBjYXNl
IFRleHRUcmFja0N1ZTo6RGF0YToKICAgICAgICAgdHlwZSA9ICJEYXRhIl9zOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFRleHRUcmFja0N1ZTo6R2VuZXJpYzoKKyAgICAgICAgdHlwZSA9ICJH
ZW5lcmljIl9zOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICB2YWx1ZS5zZXRTdHJpbmco
InR5cGUiX3MsIHR5cGUpOwpAQCAtMjUzLDExICs0MjYsMTA4IEBAIFN0cmluZyBUZXh0VHJhY2tD
dWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiBTdHJpbmcgVGV4dFRyYWNrQ3VlOjpkZWJ1Z1N0cmlu
ZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRleHQ7Ci0gICAgaWYgKGlzUmVuZGVyYWJsZSgpKQor
ICAgIGlmIChpczxWVFRDdWU+KHRoaXMpKQogICAgICAgICB0ZXh0ID0gdG9WVFRDdWUodGhpcykt
PnRleHQoKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygiMHgiLCBoZXgocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBpZD0iLCBpZCgpLCAiIGludGVydmFsPSIsIHN0YXJ0VGlt
ZSgpLCAiLS0+IiwgZW5kVGltZSgpLCAiIGN1ZT0iLCB0ZXh0LCAnKScpOwogfQogCitSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQoreworICAgIGlm
ICghbV9jdWVOb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2xvbmVk
RnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVudCgpKTsKKyAg
ICBtX2N1ZU5vZGUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudCk7CisKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBjbG9uZWRGcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcmVtb3ZlUHNldWRvQXR0cmlidXRlcygqbm9k
ZSk7CisKKyAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQ7Cit9CisKK2Jvb2wgVGV4dFRyYWNrQ3Vl
Ojppc1JlbmRlcmFibGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1ZU5vZGUgJiYgbV9jdWVO
b2RlLT5maXJzdENoaWxkKCk7Cit9CisKK1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFRleHRUcmFj
a0N1ZTo6Z2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYsIGludCkKK3sKKyAgICBpZiAobV9k
aXNwbGF5VHJlZSAmJiAhbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRlKQorICAgICAgICByZXR1cm4g
bV9kaXNwbGF5VHJlZTsKKworICAgIHJlYnVpbGREaXNwbGF5VHJlZSgpOworCisgICAgcmV0dXJu
IG1fZGlzcGxheVRyZWU7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpyZW1vdmVEaXNwbGF5VHJl
ZSgpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlUcmVlKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBUaGUgZGlzcGxheSB0cmVlIGlzIG5ldmVyIGV4cG9zZWQgdG8gYXV0aG9yIHNjcmlwdHMgc28g
aXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBoZXJlLgorICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKCptX2Rpc3BsYXlUcmVlKTsKKyAg
ICBtX2Rpc3BsYXlUcmVlLT5yZW1vdmUoKTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnNldEZv
bnRTaXplKGludCBmb250U2l6ZSwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIGlmIChmb250U2l6ZSA9PSBtX2ZvbnRTaXplICYmIGltcG9ydGFudCA9PSBtX2ZvbnRTaXpl
SXNJbXBvcnRhbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlzcGxheVRyZWVOZWVkc1Vw
ZGF0ZSA9IHRydWU7CisgICAgbV9mb250U2l6ZUlzSW1wb3J0YW50ID0gaW1wb3J0YW50OworICAg
IG1fZm9udFNpemUgPSBmb250U2l6ZTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGRE
aXNwbGF5VHJlZSgpCit7CisgICAgaWYgKCFtX2N1ZU5vZGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3Bl
Rm9yUmVmZXJlbmNlVHJlZSgqbV9jdWVOb2RlKTsKKworICAgIGlmICghbV9kaXNwbGF5VHJlZSkg
eworICAgICAgICBtX2Rpc3BsYXlUcmVlID0gVGV4dFRyYWNrQ3VlQm94OjpjcmVhdGUob3duZXJE
b2N1bWVudCgpLCAqdGhpcyk7CisgICAgICAgIG1fZGlzcGxheVRyZWUtPnNldFBzZXVkbyhBdG9t
U3RyaW5nKCItd2Via2l0LWdlbmVyaWMtY3VlLXJvb3QiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIH0KKworICAgIG1fZGlzcGxheVRyZWUtPnJlbW92ZUNoaWxkcmVu
KCk7CisgICAgYXV0byBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShv
d25lckRvY3VtZW50KCkpOworICAgIG1fY3VlTm9kZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZy
YWdtZW50KTsKKyAgICBtX2Rpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChjbG9uZWRGcmFnbWVudCk7
CisKKyAgICBpZiAobV9mb250U2l6ZSAmJiBvd25lckRvY3VtZW50KCkucGFnZSgpKSB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQob3duZXJE
b2N1bWVudCgpLnBhZ2UoKS0+Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIDo6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCd7Jyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmlu
ZyhDU1NQcm9wZXJ0eUZvbnRTaXplKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV9mb250U2l6ZSwgInB4IikpOworICAg
ICAgICBpZiAobV9mb250U2l6ZUlzSW1wb3J0YW50KQorICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgIWltcG9ydGFudCIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjsgfSIpOworCisgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUo
SFRNTE5hbWVzOjpzdHlsZVRhZywgb3duZXJEb2N1bWVudCgpLCBmYWxzZSk7CisgICAgICAgIHN0
eWxlLT5zZXRUZXh0Q29udGVudChidWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBtX2Rpc3Bs
YXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgfQorCisgICAgaWYgKHRyYWNrKCkpIHsK
KyAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHN0eWxlU2hlZXRzID0gdHJhY2soKS0+c3R5bGVTaGVl
dHMoKSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NTdHJpbmcgOiAqc3R5bGVT
aGVldHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIG1fZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoY3NzU3RyaW5nKTsK
KyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRh
dGUgPSBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IGFlZGRiZDNkNzkxZmU4YzI1
MjkwOWE5NmIyNjNmZTIyODZiNzNmMjQuLmViYjQ1OTc1MWExNDcyYWM1ZmY3ODdkYTk0YWNmOWEz
MDI0YTBhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAt
MzQsMTcgKzM0LDQ0IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0VHJhY2s7CitjbGFz
cyBUZXh0VHJhY2tDdWU7CiAKLWNsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKK2NsYXNz
IFRleHRUcmFja0N1ZUJveCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CisgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChUZXh0VHJhY2tDdWVCb3gpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGV4
dFRyYWNrQ3VlQm94PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDdWUmIGN1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRUcmFja0N1ZUJveChk
b2N1bWVudCwgY3VlKSk7CisgICAgfQorCisgICAgVGV4dFRyYWNrQ3VlKiBnZXRDdWUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmKSB7
IH0KKworcHJvdGVjdGVkOgorICAgIFRleHRUcmFja0N1ZUJveChEb2N1bWVudCYsIFRleHRUcmFj
a0N1ZSYpOworICAgIH5UZXh0VHJhY2tDdWVCb3goKSB7IH0KKworcHJpdmF0ZToKKworICAgIFdl
YWtQdHI8VGV4dFRyYWNrQ3VlPiBtX2N1ZTsKK307CisKK2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGV4dFRyYWNrQ3VlPiB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2tDdWUpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
U3RyaW5nJiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGN1ZUJveFNoYWRvd1BzZXVkb0lkKCk7CisKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPFRleHRUcmFja0N1ZT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBEb2N1bWVudEZyYWdtZW50Jik7CiAKICAgICBUZXh0VHJh
Y2sqIHRyYWNrKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUcmFjayhUZXh0VHJhY2sqKTsKQEAgLTc1
LDkgKzEwMiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRXF1aXZhbGVudFN0YXJ0VGltZShj
b25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdDsKIAotICAgIGVudW0gQ3VlVHlwZSB7IERhdGEsIEdl
bmVyaWMsIFdlYlZUVCB9OwotICAgIHZpcnR1YWwgQ3VlVHlwZSBjdWVUeXBlKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGVudW0gQ3VlVHlwZSB7IEdlbmVyaWMsIERhdGEsIENvbnZlcnRlZFRvV2ViVlRULCBX
ZWJWVFQgfTsKKyAgICB2aXJ0dWFsIEN1ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEN1
ZVR5cGU6OkdlbmVyaWM7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3Q7
CiAKICAgICBlbnVtIEN1ZU1hdGNoUnVsZXMgeyBNYXRjaEFsbEZpZWxkcywgSWdub3JlRHVyYXRp
b24gfTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFcXVhbChjb25zdCBUZXh0VHJhY2tDdWUmLCBDdWVN
YXRjaFJ1bGVzKSBjb25zdDsKQEAgLTg2LDEzICsxMTMsMjMgQEAgcHVibGljOgogICAgIHZvaWQg
d2lsbENoYW5nZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoKTsKIAorICAgIHZpcnR1
YWwgUmVmUHRyPFRleHRUcmFja0N1ZUJveD4gZ2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYs
IGludCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7CisKKyAgICB2aXJ0
dWFsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hUTUwoKTsKKwogICAgIFN0cmlu
ZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKICAgICBTdHJpbmcgZGVidWdTdHJpbmcoKSBjb25zdDsK
IAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJl
ZjsKIAorICAgIHZpcnR1YWwgdm9pZCByZWNhbGN1bGF0ZVN0eWxlcygpIHsgbV9kaXNwbGF5VHJl
ZU5lZWRzVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGb250U2l6ZShpbnQs
IGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZURpc3BsYXlUcmVlKGNvbnN0IE1lZGlhVGltZSYpIHsgfTsKKwogcHJvdGVjdGVkOgorICAgIFRl
eHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIERvY3VtZW50RnJhZ21lbnQmJik7CiAgICAgVGV4dFRy
YWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCk7CiAKICAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIHsg
cmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CkBA
IC0xMTEsNiArMTQ4LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjdWVDb250ZW50
c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0OwogCisgICAgdm9pZCByZWJ1aWxkRGlz
cGxheVRyZWUoKTsKKwogICAgIFN0cmluZyBtX2lkOwogICAgIE1lZGlhVGltZSBtX3N0YXJ0VGlt
ZTsKICAgICBNZWRpYVRpbWUgbV9lbmRUaW1lOwpAQCAtMTIwLDggKzE1OSwxNSBAQCBwcml2YXRl
OgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi0gICAgYm9vbCBtX2lzQWN0aXZlIDogMTsKLSAgICBib29sIG1fcGF1c2VPbkV4aXQgOiAx
OworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2N1ZU5vZGU7CisgICAgUmVmUHRyPFRl
eHRUcmFja0N1ZUJveD4gbV9kaXNwbGF5VHJlZTsKKworICAgIGludCBtX2ZvbnRTaXplIHsgMCB9
OworICAgIGJvb2wgbV9mb250U2l6ZUlzSW1wb3J0YW50IHsgZmFsc2UgfTsKKworICAgIGJvb2wg
bV9pc0FjdGl2ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BhdXNlT25FeGl0IHsgZmFsc2UgfTsK
KyAgICBib29sIG1fZGlzcGxheVRyZWVOZWVkc1VwZGF0ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmlkbAppbmRleCA0NGZlMTY4YWFkNjU1ZDZhNzljNjY0YWRiMTVhMzg3MmExODg1MzI1Li5kNTRk
MDE1ZjVjMGUxYzJiMDNkNmM5MjE4OWE4ZTM5ZjAzZWE4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICszMCwxMCBAQAogICAgIEN1c3RvbVRv
SlNPYmplY3QsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgU2tpcFZUYWJsZVZhbGlk
YXRpb24sCisgICAgQ29uc3RydWN0b3IoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUs
IERvY3VtZW50RnJhZ21lbnQgY3VlTm9kZSksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAorICAgIENvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZz1HZW5l
cmljQ3VlQVBJLAorICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCiBdIGludGVyZmFj
ZSBUZXh0VHJhY2tDdWUgOiBFdmVudFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRl
eHRUcmFjayB0cmFjazsKIApAQCAtMzksNCArNDQsNiBAQAogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmVudGVyOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25leGl0OworCisg
ICAgW0VuYWJsZWRCeVNldHRpbmc9R2VuZXJpY0N1ZUFQSV0gRG9jdW1lbnRGcmFnbWVudCBnZXRD
dWVBc0hUTUwoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVHZW5lcmljLmNwcAppbmRleCAxNWRmYTIzMzg1OWRjYmFiMDc1ZjE0YWQ4NjJhMzY4MmMz
MDNiNjRlLi5jNGI2ZmQ5Y2Q1MzY1MDE2ODAzZjg1YmYxYzE3YjMxOTVkOTdhMjNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKQEAg
LTIyOSw3ICsyMjksNyBAQCBib29sIFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzRXF1YWwoY29uc3Qg
VGV4dFRyYWNrQ3VlJiBjdWUsIFRleHRUcmFja0N1ZTo6Q3VlTWF0YwogICAgIGlmICghVGV4dFRy
YWNrQ3VlOjppc0VxdWFsKGN1ZSwgbWF0Y2gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoY3VlLmN1ZVR5cGUoKSAhPSBUZXh0VHJhY2tDdWU6OkdlbmVyaWMpCisgICAgaWYgKGN1
ZS5jdWVUeXBlKCkgIT0gVGV4dFRyYWNrQ3VlOjpDb252ZXJ0ZWRUb1dlYlZUVCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGN1ZUNvbnRlbnRzTWF0Y2goY3VlKTsKQEAgLTI0
OSw3ICsyNDksNyBAQCBib29sIFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzT3JkZXJlZEJlZm9yZShj
b25zdCBUZXh0VHJhY2tDdWUqIHRoYXQpIGNvbnN0CiAgICAgaWYgKFZUVEN1ZTo6aXNPcmRlcmVk
QmVmb3JlKHRoYXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICh0aGF0LT5jdWVU
eXBlKCkgPT0gR2VuZXJpYyAmJiBzdGFydFRpbWUoKSA9PSB0aGF0LT5zdGFydFRpbWUoKSAmJiBl
bmRUaW1lKCkgPT0gdGhhdC0+ZW5kVGltZSgpKSB7CisgICAgaWYgKHRoYXQtPmN1ZVR5cGUoKSA9
PSBDb252ZXJ0ZWRUb1dlYlZUVCAmJiBzdGFydFRpbWUoKSA9PSB0aGF0LT5zdGFydFRpbWUoKSAm
JiBlbmRUaW1lKCkgPT0gdGhhdC0+ZW5kVGltZSgpKSB7CiAgICAgICAgIC8vIEZ1cnRoZXIgb3Jk
ZXIgZ2VuZXJpYyBjdWVzIGJ5IHRoZWlyIGNhbGN1bGF0ZWQgbGluZSB2YWx1ZS4KICAgICAgICAg
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiB0aGlzUG9zaXRpb24gPSBnZXRQb3NpdGlvbkNvb3Jk
aW5hdGVzKCk7CiAgICAgICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gdGhhdFBvc2l0aW9u
ID0gdG9WVFRDdWUodGhhdCktPmdldFBvc2l0aW9uQ29vcmRpbmF0ZXMoKTsKQEAgLTI2MSwxNCAr
MjYxLDE0IEBAIGJvb2wgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNPcmRlcmVkQmVmb3JlKGNvbnN0
IFRleHRUcmFja0N1ZSogdGhhdCkgY29uc3QKIAogYm9vbCBUZXh0VHJhY2tDdWVHZW5lcmljOjpp
c1Bvc2l0aW9uZWRBYm92ZShjb25zdCBUZXh0VHJhY2tDdWUqIHRoYXQpIGNvbnN0CiB7Ci0gICAg
aWYgKHRoYXQtPmN1ZVR5cGUoKSA9PSBHZW5lcmljICYmIHN0YXJ0VGltZSgpID09IHRoYXQtPnN0
YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0aGF0LT5lbmRUaW1lKCkpIHsKKyAgICBpZiAodGhh
dC0+Y3VlVHlwZSgpID09IENvbnZlcnRlZFRvV2ViVlRUICYmIHN0YXJ0VGltZSgpID09IHRoYXQt
PnN0YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0aGF0LT5lbmRUaW1lKCkpIHsKICAgICAgICAg
Ly8gRnVydGhlciBvcmRlciBnZW5lcmljIGN1ZXMgYnkgdGhlaXIgY2FsY3VsYXRlZCBsaW5lIHZh
bHVlLgogICAgICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IHRoaXNQb3NpdGlvbiA9IGdl
dFBvc2l0aW9uQ29vcmRpbmF0ZXMoKTsKICAgICAgICAgc3RkOjpwYWlyPGRvdWJsZSwgZG91Ymxl
PiB0aGF0UG9zaXRpb24gPSB0b1ZUVEN1ZSh0aGF0KS0+Z2V0UG9zaXRpb25Db29yZGluYXRlcygp
OwogICAgICAgICByZXR1cm4gdGhpc1Bvc2l0aW9uLnNlY29uZCA+IHRoYXRQb3NpdGlvbi5zZWNv
bmQgfHwgKHRoaXNQb3NpdGlvbi5zZWNvbmQgPT0gdGhhdFBvc2l0aW9uLnNlY29uZCAmJiB0aGlz
UG9zaXRpb24uZmlyc3QgPCB0aGF0UG9zaXRpb24uZmlyc3QpOwogICAgIH0KICAgICAKLSAgICBp
ZiAodGhhdC0+Y3VlVHlwZSgpID09IEdlbmVyaWMpCisgICAgaWYgKHRoYXQtPmN1ZVR5cGUoKSA9
PSBDb252ZXJ0ZWRUb1dlYlZUVCkKICAgICAgICAgcmV0dXJuIHN0YXJ0VGltZSgpID4gdGhhdC0+
c3RhcnRUaW1lKCk7CiAgICAgCiAgICAgcmV0dXJuIFZUVEN1ZTo6aXNPcmRlcmVkQmVmb3JlKHRo
YXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVH
ZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMu
aAppbmRleCAyY2Q3MTAwY2UxNWFhM2NhNjFiNWZjYjgzNTUwMDQ3ZTA5MjY5YWVhLi5mZDBjYjNl
YjMxMThjYzNmMzNjOWI2ODg2YWEwZjYyYTA2NGYxZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaApAQCAtODIsNyArODIsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY3VlQ29udGVudHNNYXRjaChjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGRvZXNFeHRlbmRDdWUoY29uc3QgVGV4dFRyYWNrQ3VlJikgY29u
c3QgZmluYWw7CiAKLSAgICBDdWVUeXBlIGN1ZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBH
ZW5lcmljOyB9CisgICAgQ3VlVHlwZSBjdWVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29u
dmVydGVkVG9XZWJWVFQ7IH0KIAogICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwogICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0cnVjdCBMb2dBcmd1
bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljPiB7CiB9CiAKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYykKLXN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkgeyByZXR1cm4gY3VlLmN1
ZVR5cGUoKSA9PSBXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OkdlbmVyaWM7IH0KK3N0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkgeyByZXR1cm4gY3VlLmN1
ZVR5cGUoKSA9PSBXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OkNvbnZlcnRlZFRvV2ViVlRUOyB9CiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCmluZGV4IDllMDJjMjZjMDgzMzkxMmM5MTEzNzY1OWZlN2JiZDdlOGYwZjNj
MGIuLmU2MmMwNjZkYzIzYmRlYzhjMDZiNDM3YTI3OWIxN2VmODA3MzY0MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEzIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTksOCArNTksOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChWVFRDdWVC
b3gpOwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFZUVEN1ZSk7CitXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoVlRUQ3VlQm94KTsKIAogLy8gVGhpcyBjb25zdGFudCBzaG91bGQgY29y
cmVzcG9uZCB3aXRoIHRoZSBwZXJjZW50YWdlIHJldHVybmVkIGJ5IENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OmNhcHRpb25Gb250U2l6ZVNjYWxlQW5kSW1wb3J0YW5jZS4KIHN0YXRpYyBjb25zdGV4
cHIgZG91YmxlIERFRkFVTFRDQVBUSU9ORk9OVFNJWkVQRVJDRU5UQUdFID0gNTsKQEAgLTEyNiwz
MSArMTI2LDE5IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIHZlcnRpY2FsR3Jvd2luZ1JpZ2h0S2V5
d29yZCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVmPFZUVEN1ZUJv
eD4gVlRUQ3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKLXsK
LSAgICBWVFRDdWVCb3gmIGN1ZUJveCA9ICpuZXcgVlRUQ3VlQm94KGRvY3VtZW50LCBjdWUpOwot
ICAgIGN1ZUJveC5zZXRQc2V1ZG8oVlRUQ3VlQm94Ojp2dHRDdWVCb3hTaGFkb3dQc2V1ZG9JZCgp
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoY3VlQm94KTsKLX0KLQogVlRUQ3VlQm94OjpWVFRDdWVC
b3goRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKLSAgICA6IEhUTUxFbGVtZW50KGRp
dlRhZywgZG9jdW1lbnQpCi0gICAgLCBtX2N1ZShtYWtlV2Vha1B0cihjdWUpKQotewotICAgIHNl
dFBzZXVkbyh2dHRDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKLX0KLQotVlRUQ3VlKiBWVFRDdWVC
b3g6OmdldEN1ZSgpIGNvbnN0CisgICAgOiBUZXh0VHJhY2tDdWVCb3goZG9jdW1lbnQsIGN1ZSkK
IHsKLSAgICByZXR1cm4gbV9jdWUuZ2V0KCk7CiB9CiAKIHZvaWQgVlRUQ3VlQm94OjphcHBseUNT
U1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogewotICAgIGlmICghbV9jdWUp
CisgICAgYXV0byB0ZXh0VHJhY2tDdWUgPSBnZXRDdWUoKTsKKyAgICBpZiAoIXRleHRUcmFja0N1
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjdWUgPSBtYWtlUmVmKCptX2N1ZSk7Cisg
ICAgQVNTRVJUKGlzPFZUVEN1ZT4odGV4dFRyYWNrQ3VlKSB8fCBpczxUZXh0VHJhY2tDdWVHZW5l
cmljPih0ZXh0VHJhY2tDdWUpKTsKKyAgICBhdXRvIGN1ZSA9IG1ha2VSZWYoKnRvVlRUQ3VlKHRl
eHRUcmFja0N1ZSkpOwogCiAgICAgLy8gRklYTUU6IEFwcGx5IGFsbCB0aGUgaW5pdGlhbCBDU1Mg
cG9zaXRpb25pbmcgcHJvcGVydGllcy4gaHR0cDovL3drYi51Zy83OTkxNgogICAgIGlmICghY3Vl
LT5yZWdpb25JZCgpLmlzRW1wdHkoKSkgewpAQCAtMjQyLDEyICsyMzAsNiBAQCB2b2lkIFZUVEN1
ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICBj
dWUtPmVsZW1lbnQoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5T3ZlcmZsb3cs
IENTU1ZhbHVlVmlzaWJsZSk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIFZUVEN1ZUJveDo6dnR0
Q3VlQm94U2hhZG93UHNldWRvSWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRp
YS10ZXh0LXRyYWNrLWRpc3BsYXkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
Ci0gICAgcmV0dXJuIHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkOwotfQotCiBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyVlRUQ3VlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwpAQCAt
MjU1LDEyICsyMzcsNiBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVlRUQ3VlQm94OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgYwogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IEF0b21TdHJpbmcmIFZUVEN1ZTo6Y3VlQmFja2Ry
b3BTaGFkb3dQc2V1ZG9JZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtdGV4dC10
cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OwotICAgIHJldHVybiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkOwotfQotCiBSZWY8VlRUQ3Vl
PiBWVFRDdWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBX
ZWJWVFRDdWVEYXRhJiBkYXRhKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZShj
b250ZXh0LCBkYXRhKSk7CkBAIC04NjcsMTEgKzg0MywxMSBAQCB2b2lkIFZUVEN1ZTo6dXBkYXRl
RGlzcGxheVRyZWUoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgbV9jdWVIaWdobGln
aHRCb3gtPmFwcGVuZENoaWxkKCpyZWZlcmVuY2VUcmVlKTsKIH0KIAotVlRUQ3VlQm94JiBWVFRD
dWU6OmdldERpc3BsYXlUcmVlKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSwgaW50IGZvbnRTaXpl
KQorUmVmUHRyPFRleHRUcmFja0N1ZUJveD4gVlRUQ3VlOjpnZXREaXNwbGF5VHJlZShjb25zdCBJ
bnRTaXplJiB2aWRlb1NpemUsIGludCBmb250U2l6ZSkKIHsKICAgICBSZWY8VlRUQ3VlQm94PiBk
aXNwbGF5VHJlZSA9IGRpc3BsYXlUcmVlSW50ZXJuYWwoKTsKICAgICBpZiAoIW1fZGlzcGxheVRy
ZWVTaG91bGRDaGFuZ2UgfHwgIXRyYWNrKCktPmlzUmVuZGVyZWQoKSkKLSAgICAgICAgcmV0dXJu
IGRpc3BsYXlUcmVlLmdldCgpOworICAgICAgICByZXR1cm4gZGlzcGxheVRyZWU7CiAKICAgICAv
LyAxMC4xIC0gMTAuMTAKICAgICBjYWxjdWxhdGVEaXNwbGF5UGFyYW1ldGVycygpOwpAQCAtOTE3
LDE1ICs4OTMsMjggQEAgVlRUQ3VlQm94JiBWVFRDdWU6OmdldERpc3BsYXlUcmVlKGNvbnN0IElu
dFNpemUmIHZpZGVvU2l6ZSwgaW50IGZvbnRTaXplKQogICAgICAgICB9CiAgICAgfQogCisgICAg
aWYgKG1fZm9udFNpemUpCisgICAgICAgIGRpc3BsYXlUcmVlLT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIG1fZm9udFNpemUsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgsIG1fZm9udFNpemVJc0ltcG9ydGFudCk7CisKICAgICBtX2Rpc3BsYXlUcmVlU2hvdWxk
Q2hhbmdlID0gZmFsc2U7CiAKKyAgICBpZiAodHJhY2soKSkgeworICAgICAgICBpZiAoYXV0byog
cmVnaW9ucyA9IHRyYWNrKCktPnJlZ2lvbnMoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcmVn
aW9uID0gcmVnaW9ucy0+Z2V0UmVnaW9uQnlJZChtX3JlZ2lvbklkKSkKKyAgICAgICAgICAgICAg
ICByZWdpb24tPmN1ZVN0eWxlQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8g
MTAuMTUuIExldCBjdWUncyB0ZXh0IHRyYWNrIGN1ZSBkaXNwbGF5IHN0YXRlIGhhdmUgdGhlIENT
UyBib3hlcyBpbgogICAgIC8vIGJveGVzLgotICAgIHJldHVybiBkaXNwbGF5VHJlZS5nZXQoKTsK
KyAgICByZXR1cm4gZGlzcGxheVRyZWU7CiB9CiAKIHZvaWQgVlRUQ3VlOjpyZW1vdmVEaXNwbGF5
VHJlZSgpCiB7CisgICAgaWYgKCFoYXNEaXNwbGF5VHJlZSgpKQorICAgICAgICByZXR1cm47CisK
ICAgICAvLyBUaGUgcmVnaW9uIG5lZWRzIHRvIGJlIGluZm9ybWVkIGFib3V0IHRoZSBjdWUgcmVt
b3ZhbC4KICAgICBpZiAobV9ub3RpZnlSZWdpb24gJiYgdHJhY2soKSkgewogICAgICAgICBpZiAo
VlRUUmVnaW9uTGlzdCogcmVnaW9ucyA9IHRyYWNrKCktPnJlZ2lvbnMoKSkgewpAQCAtOTM2LDkg
KzkyNSw2IEBAIHZvaWQgVlRUQ3VlOjpyZW1vdmVEaXNwbGF5VHJlZSgpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoIWhhc0Rpc3BsYXlUcmVlKCkpCi0gICAgICAgIHJldHVybjsKLQogICAg
IC8vIFRoZSBkaXNwbGF5IHRyZWUgaXMgbmV2ZXIgZXhwb3NlZCB0byBhdXRob3Igc2NyaXB0cyBz
byBpdCdzIHNhZmUgdG8gZGlzcGF0Y2ggZXZlbnRzIGhlcmUuCiAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoZGlzcGxheVRyZWVJbnRlcm5h
bCgpKTsKICAgICBkaXNwbGF5VHJlZUludGVybmFsKCkucmVtb3ZlKCk7CkBAIC0xMjQ4LDExICsx
MjM0LDEyIEBAIGJvb2wgVlRUQ3VlOjpkb2VzRXh0ZW5kQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSYg
Y3VlKSBjb25zdAogICAgIAogdm9pZCBWVFRDdWU6OnNldEZvbnRTaXplKGludCBmb250U2l6ZSwg
Y29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KQogewotICAgIGlmICghaGFzRGlzcGxheVRy
ZWUoKSB8fCAhZm9udFNpemUpCisgICAgaWYgKGZvbnRTaXplID09IG1fZm9udFNpemUgJiYgaW1w
b3J0YW50ID09IG1fZm9udFNpemVJc0ltcG9ydGFudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSA9IHRydWU7Ci0gICAgZGlzcGxheVRyZWVJbnRlcm5h
bCgpLnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udFNpemUs
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgsIGltcG9ydGFudCk7CisgICAgbV9mb250U2l6ZUlz
SW1wb3J0YW50ID0gaW1wb3J0YW50OworICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsKIH0KIAog
VlRUQ3VlKiB0b1ZUVEN1ZShUZXh0VHJhY2tDdWUqIGN1ZSkKQEAgLTEyNjIsNyArMTI0OSw3IEBA
IFZUVEN1ZSogdG9WVFRDdWUoVGV4dFRyYWNrQ3VlKiBjdWUpCiAKIGNvbnN0IFZUVEN1ZSogdG9W
VFRDdWUoY29uc3QgVGV4dFRyYWNrQ3VlKiBjdWUpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oY3VlLT5pc1JlbmRlcmFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxWVFRDdWU+KGN1ZSkgfHwgaXM8VGV4dFRyYWNr
Q3VlR2VuZXJpYz4oY3VlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFZUVEN1ZSo+
KGN1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCmluZGV4IDFiZjdmNTUzYTI2
ODA0YThmODViMGIyNTU5ODNlYzIzMzczMjJlNzEuLjQ1MTUxNDIyZDQ4Y2FlYjgyYjY3YTEyZDg5
ZWZlODY0NTc5OGY4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaApAQCAtNDksMTUg
KzQ5LDE2IEBAIGNsYXNzIFdlYlZUVEN1ZURhdGE7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotY2xhc3MgVlRUQ3VlQm94IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNz
IFZUVEN1ZUJveCA6IHB1YmxpYyBUZXh0VHJhY2tDdWVCb3ggewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoVlRUQ3VlQm94KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZUVEN1ZUJveD4g
Y3JlYXRlKERvY3VtZW50JiwgVlRUQ3VlJik7CisgICAgc3RhdGljIFJlZjxWVFRDdWVCb3g+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZUVEN1ZSYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVlRUQ3VlQm94KGRvY3VtZW50LCBjdWUpKTsKKyAgICB9CiAKLSAg
ICBWVFRDdWUqIGdldEN1ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBhcHBseUNTU1Byb3Bl
cnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKTsKKyAgICB2b2lkIGFwcGx5Q1NTUHJvcGVy
dGllcyhjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0
cmluZyYgdnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKTsKICAgICB2b2lkIHNldEZvbnRTaXplRnJv
bUNhcHRpb25Vc2VyUHJlZnMoaW50IGZvbnRTaXplKSB7IG1fZm9udFNpemVGcm9tQ2FwdGlvblVz
ZXJQcmVmcyA9IGZvbnRTaXplOyB9CiAKIHByb3RlY3RlZDoKQEAgLTc0LDcgKzc1LDcgQEAgcHJp
dmF0ZToKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBWVFRDdWUg
OiBwdWJsaWMgVGV4dFRyYWNrQ3VlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VlRUQ3VlPiB7Citj
bGFzcyBWVFRDdWUgOiBwdWJsaWMgVGV4dFRyYWNrQ3VlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFZUVEN1ZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWVFRDdWU+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQs
IGNvbnN0IFN0cmluZyYgY29udGVudCkKQEAgLTg5LDggKzkwLDYgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZjxWVFRDdWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
V2ViVlRUQ3VlRGF0YSYpOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1ZUJhY2tk
cm9wU2hhZG93UHNldWRvSWQoKTsKLQogICAgIHZpcnR1YWwgflZUVEN1ZSgpOwogCiAgICAgZW51
bSBBdXRvS2V5d29yZCB7CkBAIC0xMjMsNyArMTIyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgY3VlU2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgdm9p
ZCBzZXRDdWVTZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKIAotICAgIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBnZXRDdWVBc0hUTUwoKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZ2V0
Q3VlQXNIVE1MKCkgZmluYWw7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUN1
ZVJlbmRlcmluZ1RyZWUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcmVnaW9uSWQoKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lvbklkOyB9CkBAIC0xMzMsMTEgKzEzMiwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJc0FjdGl2ZShib29sKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzRGlzcGxheVRy
ZWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlUcmVlOyB9Ci0gICAgVlRUQ3VlQm94JiBnZXRE
aXNwbGF5VHJlZShjb25zdCBJbnRTaXplJiB2aWRlb1NpemUsIGludCBmb250U2l6ZSk7CisgICAg
UmVmUHRyPFRleHRUcmFja0N1ZUJveD4gZ2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYsIGlu
dCkgZmluYWw7CiAgICAgSFRNTFNwYW5FbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
Km1fY3VlSGlnaGxpZ2h0Qm94OyB9CiAKLSAgICB2b2lkIHVwZGF0ZURpc3BsYXlUcmVlKGNvbnN0
IE1lZGlhVGltZSYpOwotICAgIHZvaWQgcmVtb3ZlRGlzcGxheVRyZWUoKTsKKyAgICB2b2lkIHVw
ZGF0ZURpc3BsYXlUcmVlKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3Zl
RGlzcGxheVRyZWUoKSBmaW5hbDsKICAgICB2b2lkIG1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29u
dGFpbmVyTm9kZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpOwogCiAgICAg
aW50IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCk7CkBAIC0xNjgsMTQgKzE2NywxNSBA
QCBwdWJsaWM6CiAgICAgfTsKICAgICBDdWVBbGlnbm1lbnQgZ2V0QWxpZ25tZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jdWVBbGlnbm1lbnQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGb250U2l6
ZShpbnQsIGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCk7CisgICAgdm9pZCByZWNhbGN1
bGF0ZVN0eWxlcygpIGZpbmFsIHsgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSA9IHRydWU7IH0K
KyAgICB2b2lkIHNldEZvbnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNFcXVhbChjb25zdCBUZXh0VHJhY2tDdWUmLCBDdWVN
YXRjaFJ1bGVzKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGN1ZUNvbnRlbnRzTWF0Y2goY29u
c3QgVGV4dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBkb2VzRXh0ZW5kQ3Vl
KGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQ3VlVHlwZSBjdWVU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV2ViVlRUOyB9Ci0gICAgYm9vbCBpc1JlbmRl
cmFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1JlbmRlcmFi
bGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9jb250ZW50LmlzRW1wdHkoKTsgfQogCiAgICAg
dm9pZCBkaWRDaGFuZ2UoKSBvdmVycmlkZTsKIApAQCAtMjM3LDYgKzIzNyw5IEBAIHByaXZhdGU6
CiAKICAgICBNZWRpYVRpbWUgbV9vcmlnaW5hbFN0YXJ0VGltZTsKIAorICAgIGludCBtX2ZvbnRT
aXplIHsgMCB9OworICAgIGJvb2wgbV9mb250U2l6ZUlzSW1wb3J0YW50IHsgZmFsc2UgfTsKKwog
ICAgIGJvb2wgbV9zbmFwVG9MaW5lcyA6IDE7CiAgICAgYm9vbCBtX2Rpc3BsYXlUcmVlU2hvdWxk
Q2hhbmdlIDogMTsKICAgICBib29sIG1fbm90aWZ5UmVnaW9uIDogMTsKQEAgLTI2Myw3ICsyNjYs
NyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6VlRUQ3VlPiB7CiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWVFRDdWUpCi0g
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRleHRUcmFja0N1ZSYgY3VlKSB7
IHJldHVybiBjdWUuaXNSZW5kZXJhYmxlKCk7IH0KK3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkgeyByZXR1cm4gY3VlLmN1ZVR5cGUoKSA9PSBXZWJD
b3JlOjpUZXh0VHJhY2tDdWU6OldlYlZUVDsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVn
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcAppbmRleCA3
NjA3MjQxNzgyOTZkZjAyNmY0MGJjZGE4MjdmNzhkNmFiNzUzYmFhLi5mZTAzOWNkMmYwZjRlOGQ0
OWZkMjQxMmQ4NGRhMDZlNzNjYjIzZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVFJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRS
ZWdpb24uY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgY29uc3QgQXRvbVN0cmluZyYgVlRUUmVnaW9u
Ojp0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpCiAgICAgcmV0dXJuIHRyYWNrUmVnaW9u
U2hhZG93UHNldWRvSWQ7CiB9CiAKLXZvaWQgVlRUUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVC
b3goUmVmPFZUVEN1ZUJveD4mJiBkaXNwbGF5Qm94KQordm9pZCBWVFRSZWdpb246OmFwcGVuZFRl
eHRUcmFja0N1ZUJveChSZWY8VGV4dFRyYWNrQ3VlQm94PiYmIGRpc3BsYXlCb3gpCiB7CiAgICAg
QVNTRVJUKG1fY3VlQ29udGFpbmVyKTsKIApAQCAtMzQyLDkgKzM0MiwxMyBAQCBIVE1MRGl2RWxl
bWVudCYgVlRUUmVnaW9uOjpnZXREaXNwbGF5VHJlZSgpCiB7CiAgICAgaWYgKCFtX3JlZ2lvbkRp
c3BsYXlUcmVlKSB7CiAgICAgICAgIG1fcmVnaW9uRGlzcGxheVRyZWUgPSBIVE1MRGl2RWxlbWVu
dDo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7
Ci0gICAgICAgIHByZXBhcmVSZWdpb25EaXNwbGF5VHJlZSgpOworICAgICAgICBtX3JlZ2lvbkRp
c3BsYXlUcmVlLT5zZXRQc2V1ZG8odGV4dFRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQoKSk7Cisg
ICAgICAgIG1fcmVjYWxjdWxhdGVTdHlsZXMgPSB0cnVlOwogICAgIH0KIAorICAgIGlmIChtX3Jl
Y2FsY3VsYXRlU3R5bGVzKQorICAgICAgICBwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKTsKKwog
ICAgIHJldHVybiAqbV9yZWdpb25EaXNwbGF5VHJlZTsKIH0KIApAQCAtMzgzLDE0ICszODcsMTYg
QEAgdm9pZCBWVFRSZWdpb246OnByZXBhcmVSZWdpb25EaXNwbGF5VHJlZSgpCiAKICAgICAvLyBU
aGUgY3VlIGNvbnRhaW5lciBpcyB1c2VkIHRvIHdyYXAgdGhlIGN1ZXMgYW5kIGl0IGlzIHRoZSBv
YmplY3Qgd2hpY2ggaXMKICAgICAvLyBncmFkdWFsbHkgc2Nyb2xsZWQgb3V0IGFzIG11bHRpcGxl
IGN1ZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSByZWdpb24uCi0gICAgbV9jdWVDb250YWluZXIgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KSk7CisgICAgaWYgKCFtX2N1ZUNvbnRhaW5lcikgeworICAgICAgICBtX2N1ZUNv
bnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKKyAgICAgICAgbV9jdWVDb250YWluZXItPnNldFBzZXVk
byh0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgbV9yZWdp
b25EaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoKm1fY3VlQ29udGFpbmVyKTsKKyAgICB9CiAgICAg
bV9jdWVDb250YWluZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIDAu
MGYsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogCi0gICAgbV9jdWVDb250YWluZXItPnNl
dFBzZXVkbyh0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQc2V1ZG9JZCgpKTsKLSAgICBtX3Jl
Z2lvbkRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZCgqbV9jdWVDb250YWluZXIpOwotCiAgICAgLy8g
Ny41IEV2ZXJ5IFdlYlZUVCByZWdpb24gb2JqZWN0IGlzIGluaXRpYWxpc2VkIHdpdGggdGhlIGZv
bGxvd2luZyBDU1MKLSAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlLT5zZXRQc2V1ZG8odGV4dFRyYWNr
UmVnaW9uU2hhZG93UHNldWRvSWQoKSk7CisKKyAgICBtX3JlY2FsY3VsYXRlU3R5bGVzID0gZmFs
c2U7CiB9CiAKIHZvaWQgVlRUUmVnaW9uOjpzdGFydFRpbWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5oCmluZGV4IDZmY2M0ZjMzOTEzZTI2NGI4NGMyYmY2YmM0ZmY2YmYyY2M3
MzJlY2IuLmQ2NzYyZmMyNzI1MTlkYjA3NGNhNGI0OTE3MWIyMDRiNTk3N2M5ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uaApAQCAtODgsMTAgKzg4LDEyIEBAIHB1YmxpYzoK
IAogICAgIEhUTUxEaXZFbGVtZW50JiBnZXREaXNwbGF5VHJlZSgpOwogICAgIAotICAgIHZvaWQg
YXBwZW5kVGV4dFRyYWNrQ3VlQm94KFJlZjxWVFRDdWVCb3g+JiYpOworICAgIHZvaWQgYXBwZW5k
VGV4dFRyYWNrQ3VlQm94KFJlZjxUZXh0VHJhY2tDdWVCb3g+JiYpOwogICAgIHZvaWQgZGlzcGxh
eUxhc3RUZXh0VHJhY2tDdWVCb3goKTsKICAgICB2b2lkIHdpbGxSZW1vdmVUZXh0VHJhY2tDdWVC
b3goVlRUQ3VlQm94Kik7CiAKKyAgICB2b2lkIGN1ZVN0eWxlQ2hhbmdlZCgpIHsgbV9yZWNhbGN1
bGF0ZVN0eWxlcyA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBWVFRSZWdpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogCkBAIC0xNTEsNiArMTUzLDggQEAgcHJpdmF0ZToKICAgICAvLyBj
dXJyZW50bHkgaXQgaXMgdXNlZCBhbHNvIGZvciBub24tc2Nyb2xsaW5nIHJlZ2lvbnMgdG8gdXNl
IGEgc2luZ2xlCiAgICAgLy8gY29kZSBwYXRoLgogICAgIFRpbWVyIG1fc2Nyb2xsVGltZXI7CisK
KyAgICBib29sIG1fcmVjYWxjdWxhdGVTdHlsZXMgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDY0N2VlNTY0NDg4YzQ5YTNlMDZiMmZiZDQ0MTcz
ZWI2YmExNjNhZDkuLjhiZGNjNzAzMGE5Y2U0OTVlM2UzOWMxMmI5ODIwMGVmOTY0Y2ZmMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCkBAIC01ODcsNyArNTg3LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CiAgICAgU3RyaW5n
IHdpbmRvd0Nvcm5lclJhZGl1cyA9IHdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1MoKTsKICAg
ICBpZiAoIXdpbmRvd0NvbG9yLmlzRW1wdHkoKSB8fCAhd2luZG93Q29ybmVyUmFkaXVzLmlzRW1w
dHkoKSkgewogICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmRMaXRlcmFs
KCIgOjoiKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFZUVEN1
ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlk
ZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9J
ZCgpKTsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoIXdpbmRvd0NvbG9yLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbAppbmRleCBjNzMwZGI3OGZkNWY5MmNkYTMyNzA1ZDg2NmI3MDE2MzlhZmJk
MjYwLi5lZWUzMWY0NTFiYjMxMGJhOWY4OTczYjBjZDU2ZGRlYTJkNWNmNDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy55YW1sCkBAIC0zMTcsNiArMzE3LDkgQEAgc2hvdWxkRGlzcGxheUNhcHRp
b25zOgogc2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnM6CiAgIGluaXRpYWw6IGZhbHNlCiAg
IGNvbmRpdGlvbmFsOiBWSURFT19UUkFDSworZ2VuZXJpY0N1ZUFQSUVuYWJsZWQ6CisgICAgaW5p
dGlhbDogZmFsc2UKKyAgICBjb25kaXRpb25hbDogVklERU9fVFJBQ0sKIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIHNjcm9sbGluZ1RyZWVJbmNsdWRlc0Zy
YW1lczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKaW5kZXggZmM2
ODUxMDhmYWJmMWJiNGRjMmY3NjQ1ZGExODcwOGE3YWI3YzYyNC4uODEwMzVlZjQ3NmQxMGMxODQ0
OTM4MDhjOGI0NzEwY2Q0NDg5ZDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZUVEN1ZS5jcHAKQEAgLTQzLDggKzQzLDEwIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChSZW5kZXJWVFRDdWUpOwogCiBSZW5kZXJWVFRDdWU6OlJlbmRlclZUVEN1ZShWVFRDdWVCb3gm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX2N1ZShlbGVtZW50LmdldEN1ZSgpKQorICAg
ICwgbV9jdWUoZG93bmNhc3Q8VlRUQ3VlPihlbGVtZW50LmdldEN1ZSgpKSkKIHsKKyAgICBBU1NF
UlQobV9jdWUpOworICAgIEFTU0VSVChpczxWVFRDdWU+KG1fY3VlKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyVlRUQ3VlOjpsYXlvdXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwKaW5kZXggMjU5YmE3MjJhMWUyMDIzYTgxZWQ5ZGY2NGIyMmE3OWU4ODk1NDgxNS4uNDgwYTc2
ODkwNWUwYzNjZmE3NzFmOGE5YmE4NzE1MTY2YWNiZmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xNDU3LDYgKzE0NTcsMTUgQEAgQ1NTU2hhZG93UGFy
dHNFbmFibGVkOgogICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAgIHdlYmNvcmVCaW5kaW5nOiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzCiAKK0dlbmVyaWNDdWVBUElFbmFibGVkOgorICB0eXBlOiBi
b29sCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgY29uZGl0aW9uOiBFTkFCTEUoVklERU9fVFJB
Q0spCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiR2VuZXJpYyBUZXh0IFRyYWNrIEN1ZSBBUEkiCisg
IGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVuYWJsZSBHZW5lcmljIFRleHQgVHJhY2sgQ3Vl
IEFQSSIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorICB3ZWJjb3JlTmFtZTogZ2VuZXJpY0N1
ZUFQSUVuYWJsZWQKKwogIyBGb3IgaW50ZXJuYWwgZmVhdHVyZXM6CiAjIFRoZSB0eXBlIHNob3Vs
ZCBiZSBib29sZWFuLgogIyBZb3UgbXVzdCBwcm92aWRlIGEgaHVtYW5SZWFkYWJsZU5hbWUgYW5k
IGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiBmb3IgYWxsIGRlYnVnIGZlYXR1cmVzLiBUaGV5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZDk3NmVmMjY5MjdmN2M3M2QwNDI0YzUxZGFkMWJjODFkYTMzMTUyZi4uNDg1MTk4MzZi
MWNkMTMyOWFiMjgzYTU3ZGYxNTRmMTIyZmYwOTdlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE5LTEwLTMwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBleHBlcmltZW50YWwgVGV4dFRyYWNrQ3VlIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjQ5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NTY3NTE3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3Rl
eHR0cmFja2N1ZS1hZGRjdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4
dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0
b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0
cmFja2N1ZS1kaXNwbGF5Y3VlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
dHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTEwLTI1ICB5b3Vlbm4gZmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJQcm9jZXNzIHNob3VsZCB1bnJlZ2lzdGVy
IGl0cyBpbnRlcmVzdCBmb3IgYSBTV1NlcnZlclJlZ2lzdHJhdGlvbiB3aGVuIGFsbCBpdHMgY29y
cmVzcG9uZGluZyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyBhcmUgZGVzdHJveWVkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3Vl
LWFkZGN1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tj
dWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZlMWE3ZTk0
YjNlODVmOGI0ZjFlNDMyMTYxMDJlZDJlMzA0OTY2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworCitQQVNTIHNldHVwIAorUEFTUyB0cmFjay5hZGRD
dWUoKSBhZGRzIHRvIHRyYWNrLmN1ZXMgCitQQVNTIGN1ZSBvcmRlciBzaG91bGQgY2hhbmdlIHdo
ZW4gc3RhcnQgdGltZSBpcyBjaGFuZ2VkIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1hZGRjdWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MWY0Mjk4Y2VkNzg3YWVjNzhlNDMwNDk2MDRiNDRlNzhjMWJiNTViCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFj
a2N1ZS1hZGRjdWUuaHRtbApAQCAtMCwwICsxLDYzIEBACis8IWRvY3R5cGUgaHRtbD4KKzx0aXRs
ZT5UZXh0VHJhY2tDdWUgYWRkY3VlPC90aXRsZT4KKzxkaXY+PC9kaXY+Cis8c2NyaXB0IHNyYz0u
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0u
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0uLi8uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4u
L21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEdlbmVyaWNDdWVBUElFbmFibGVkKHRydWUpOwor
CitmdW5jdGlvbiBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KHRleHQpCit7CisgICAgbGV0IGN1ZU5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgY3VlTm9kZS5zZXRBdHRy
aWJ1dGUoJ2N1ZScsICcnKTsKKyAgICBjdWVOb2RlLmlubmVyVGV4dCA9IHRleHQ7CisKKyAgICBs
ZXQgYmFja2dyb3VuZE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBi
YWNrZ3JvdW5kTm9kZS5zZXRBdHRyaWJ1dGUoJ2N1ZWJhY2tncm91bmQnLCAnJyk7CisgICAgYmFj
a2dyb3VuZE5vZGUuYXBwZW5kQ2hpbGQoY3VlTm9kZSk7CisKKyAgICBmcmFnbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChi
YWNrZ3JvdW5kTm9kZSk7CisKKyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKK3Rlc3QodGVzdCA9
PiB7CisgICAgd2luZG93LnZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsK
KyAgICB2aWRlby5jb250cm9scyA9IHRydWU7CisKKyAgICB3aW5kb3cudHJhY2sgPSB2aWRlby5h
ZGRUZXh0VHJhY2soJ3N1YnRpdGxlcycpOworICAgIHRyYWNrLmRlZmF1bHQgPSB0cnVlOworICAg
IHRyYWNrLm1vZGUgPSAnc2hvd2luZyc7CisKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHZpZGVvKTsKK30sICdzZXR1cCcpOworCit0ZXN0KHRlc3QgPT4geworICAgIGxldCBjdWUxID0g
bmV3IFRleHRUcmFja0N1ZSgwLCAxLCBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCdGaXJzdCBjdWUn
KSk7CisgICAgY3VlMS5pZCA9ICJvbmUiOworICAgIHRyYWNrLmFkZEN1ZShjdWUxKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXMubGVuZ3RoLCAxLCAnb25seSBvbmUgY3VlJyk7CisKKyAg
ICBsZXQgY3VlMiA9IG5ldyBUZXh0VHJhY2tDdWUoMSwgMiwgY3JlYXRlVmFsaWRDdWVGcmFnbWVu
dCgnU2Vjb25kIGN1ZScpKTsKKyAgICBjdWUyLmlkID0gInR3byI7CisgICAgdHJhY2suYWRkQ3Vl
KGN1ZTIpOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlcy5sZW5ndGgsIDIsICJ0cmFjay5j
dWVzLmxlbmd0aCBpbmNsdWRlcyBzZWNvbmQgY3VlIik7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFj
ay5jdWVzWzBdLmlkLCAnb25lJywgJ2N1ZSAxIHNob3VsZCBiZSBmaXJzdCcpOworICAgIGFzc2Vy
dF9lcXVhbHModHJhY2suY3Vlc1sxXS5pZCwgJ3R3bycsICdjdWUgMiBzaG91bGQgYmUgc2Vjb25k
Jyk7ICAgIAorfSwgJ3RyYWNrLmFkZEN1ZSgpIGFkZHMgdG8gdHJhY2suY3VlcycpOworCit0ZXN0
KHRlc3QgPT4geworICAgIHRyYWNrLm1vZGUgPSAnc2hvd2luZyc7CisgICAgdHJhY2suY3Vlc1sx
XS5zdGFydFRpbWUgPSAwOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlc1swXS5pZCwgJ3R3
bycsICdjdWUgMiBzaG91bGQgYmUgZmlyc3QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1
ZXNbMV0uaWQsICdvbmUnLCAnY3VlIDEgc2hvdWxkIGJlIHNlY29uZCcpOworCisgICAgdHJhY2su
Y3Vlc1swXS5zdGFydFRpbWUgPSAwLjU7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzWzBd
LmlkLCAnb25lJywgJ2N1ZSAxIHNob3VsZCBiZSBmaXJzdCcpOworICAgIGFzc2VydF9lcXVhbHMo
dHJhY2suY3Vlc1sxXS5pZCwgJ3R3bycsICdjdWUgMiBzaG91bGQgYmUgc2Vjb25kJyk7Cit9LCAn
Y3VlIG9yZGVyIHNob3VsZCBjaGFuZ2Ugd2hlbiBzdGFydCB0aW1lIGlzIGNoYW5nZWQnKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3Vl
L3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMzMxMzQ0YmEzZWM2MmNkYTVkNDJiNDIxNzBlZDU1ZDAwOTU5NzBiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3Rl
eHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BB
U1MgVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiVHlwZUVycm9yIiBpZiB0aGUgY3VlIG5vZGUg
aXMgbm90IGEgZG9jdW1lbnRGcmFnbWVudCAKK1BBU1MgVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJv
dyAiSW52YWxpZE5vZGVUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbiBpbnZhbGlkIGRvY3VtZW50RnJh
Z21lbnQgCitQQVNTIFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVy
cm9yIiBpZiBkb2N1bWVudEZyYWdtZW50IGhhcyBhbiBpbnZhbGlkIG5vZGUgCitQQVNTIFRleHRU
cmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWRTdGF0ZUVycm9yIiBpZiBkb2N1bWVudEZyYWdt
ZW50IGRvZXNuJ3QgaGF2ZSAnY3VlYmFja2dyb3VuZCcgYW5kICdjdWUnIG5vZGVzIAorUEFTUyBU
ZXh0VHJhY2tDdWUgc2hvdWxkIGFsbG93IGFsbCB2YWxpZCBub2RlIHR5cGVzIAorUEFTUyBUZXN0
IFRleHRUcmFja0N1ZS5nZXRDdWVBc0hUTUwoKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1sIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1
Y3Rvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNTQwZTQ2ZmUwNGUxMmQyMGRlNWI0ZDhmOTQ2MmViY2Uz
ODE5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJh
Y2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTAsMCArMSwxMDUgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPHRpdGxlPlRleHRUcmFja0N1ZSBjb25zdHJ1Y3RvcjwvdGl0bGU+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRHZW5lcmljQ3VlQVBJRW5hYmxlZCh0cnVlKTsKKwordGVzdCggdGVzdCA9PiB7
CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCBfID0+IHsgbmV3IFRleHRUcmFja0N1
ZSgwLCAxMCwgIiIpIH0pOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgXyA9PiB7
IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIHsgfSkgfSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykpIH0pOworfSwgJ1RleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIlR5cGVF
cnJvciIgaWYgdGhlIGN1ZSBub2RlIGlzIG5vdCBhIGRvY3VtZW50RnJhZ21lbnQnKTsKKwordGVz
dCggdGVzdCA9PiB7CisgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZE5vZGVUeXBlRXJyb3IiLCBf
ID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpKSB9KTsKK30sICdUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5
cGVFcnJvciIgaWYgcGFzc2VkIGFuIGludmFsaWQgZG9jdW1lbnRGcmFnbWVudCcpOworCitmdW5j
dGlvbiBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCkKK3sKKyAgICBsZXQgY3VlTm9kZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBjdWVOb2RlLnNldEF0dHJpYnV0ZSgnY3Vl
JywgJycpOworCisgICAgbGV0IGJhY2tncm91bmROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgYmFja2dyb3VuZE5vZGUuc2V0QXR0cmlidXRlKCdjdWViYWNrZ3JvdW5k
JywgJycpOworICAgIGJhY2tncm91bmROb2RlLmFwcGVuZENoaWxkKGN1ZU5vZGUpOworCisgICAg
ZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgZnJhZ21l
bnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZE5vZGUpOworCisgICAgcmV0dXJuIGZyYWdtZW50Owor
fQorCit0ZXN0KCB0ZXN0ID0+IHsKKyAgICBsZXQgZnJhZ21lbnQgPSBjcmVhdGVWYWxpZEN1ZUZy
YWdtZW50KCk7CisgICAgbGV0IHZhbGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJh
Z21lbnQpOworCisgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGFibGUnKSk7CisgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZE5vZGVUeXBlRXJyb3IiLCBf
ID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworCit9LCBgVGV4dFRy
YWNrQ3VlIHNob3VsZCB0aHJvdyAiSW52YWxpZE5vZGVUeXBlRXJyb3IiIGlmIGRvY3VtZW50RnJh
Z21lbnQgaGFzIGFuIGludmFsaWQgbm9kZWApOworCit0ZXN0KCB0ZXN0ID0+IHsKKyAgICBsZXQg
ZnJhZ21lbnQgPSBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCk7CisgICAgbGV0IHZhbGlkQ3VlID0g
bmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RD
aGlsZC5yZW1vdmVBdHRyaWJ1dGUoJ2N1ZWJhY2tncm91bmQnKQorICAgIGFzc2VydF90aHJvd3Mo
IkludmFsaWRTdGF0ZUVycm9yIiwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdt
ZW50KSB9KTsKKworICAgIGZyYWdtZW50ID0gY3JlYXRlVmFsaWRDdWVGcmFnbWVudCgpOworICAg
IGZyYWdtZW50LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5yZW1vdmVBdHRyaWJ1dGUoJ2N1ZScpCisg
ICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFj
a0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworfSwgYFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cg
IkludmFsaWRTdGF0ZUVycm9yIiBpZiBkb2N1bWVudEZyYWdtZW50IGRvZXNuJ3QgaGF2ZSAnY3Vl
YmFja2dyb3VuZCcgYW5kICdjdWUnIG5vZGVzYCk7CisKK3Rlc3QoIHRlc3QgPT4geworICAgIGxl
dCBmcmFnbWVudCA9IGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoKTsKKyAgICBsZXQgdmFsaWRDdWUg
PSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5maXJz
dENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworICAgIHZh
bGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21l
bnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7
CisgICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAg
ICBmcmFnbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2ltZycpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50
KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgncCcpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZy
YWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgncmInKSk7CisgICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAs
IDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3J0JykpOworICAgIHZhbGlkQ3VlID0gbmV3IFRleHRUcmFj
a0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RDaGlsZC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdydGMnKSk7CisgICAgdmFsaWRDdWUgPSBuZXcg
VGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxk
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3J1YnknKSk7CisgICAgdmFsaWRD
dWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5m
aXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7Cisg
ICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBm
cmFnbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdI
ZWxsbyEnKSk7CisgICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVu
dCk7CisKK30sIGBUZXh0VHJhY2tDdWUgc2hvdWxkIGFsbG93IGFsbCB2YWxpZCBub2RlIHR5cGVz
YCk7CisKKwordGVzdCggdGVzdCA9PiB7CisgICAgbGV0IHNvdXJjZUZyYWdtZW50ID0gY3JlYXRl
VmFsaWRDdWVGcmFnbWVudCgpOworICAgIGxldCB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUo
MCwgMTAsIGZyYWdtZW50KTsKKworICAgIGxldCBjdWVGcmFnbWVudCA9IHZhbGlkQ3VlLmdldEN1
ZUFzSFRNTCgpOworICAgIGFzc2VydF90cnVlKGN1ZUZyYWdtZW50IGluc3RhbmNlb2YgRG9jdW1l
bnRGcmFnbWVudCk7CisKKyAgICBhc3NlcnRfdHJ1ZShjdWVGcmFnbWVudC5pc0VxdWFsTm9kZShz
b3VyY2VGcmFnbWVudCkpOworCisgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsaWRDdWUuZ2V0Q3Vl
QXNIVE1MKCksIGN1ZUZyYWdtZW50LCAiZ2V0Q3VlQXNIVE1MKCkgc2hvdWxkIHJldHVybiBhIGRp
ZmZlcmVudCBmcmFnbWVudCBlYWNoIHRpbWUiKTsKKworfSwgYFRlc3QgVGV4dFRyYWNrQ3VlLmdl
dEN1ZUFzSFRNTCgpYCk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtZGlz
cGxheWN1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA0ZTFjNWUzOWIwY2UyMmIyYTViYjU1
M2ExYTBjMTRmMDhhNzIxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtZGlzcGxheWN1ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACisKKworUEFTUyBDdWVzIGFyZSBkaXNwbGF5ZWQgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtZGlzcGxh
eWN1ZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFj
a2N1ZS1kaXNwbGF5Y3VlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZjM2MyMWRjOTkxMTJmNmQxMmJkZDY3
YjkzZTBhYmNmZjBkMDY2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtZGlzcGxheWN1ZS5odG1sCkBAIC0wLDAgKzEs
OTQgQEAKKzwhZG9jdHlwZSBodG1sPgorPHRpdGxlPlRleHRUcmFja0N1ZSBkaXNwbGF5IGN1ZTwv
dGl0bGU+CisKKzxkaXY+PC9kaXY+Cis8c2NyaXB0IHNyYz0uLi8uLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0uLi8uLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1jb250
cm9scy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLWZpbGUuanM+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEdlbmVyaWNDdWVBUElFbmFibGVkKHRydWUpOworCitmdW5jdGlvbiBjcmVhdGVWYWxp
ZEN1ZUZyYWdtZW50KHRleHQpCit7CisgICAgbGV0IGN1ZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzcGFuJyk7CisgICAgY3VlTm9kZS5zZXRBdHRyaWJ1dGUoJ2N1ZScsICcnKTsKKyAg
ICBjdWVOb2RlLmlubmVyVGV4dCA9IHRleHQ7CisKKyAgICBsZXQgYmFja2dyb3VuZE5vZGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBiYWNrZ3JvdW5kTm9kZS5zZXRBdHRy
aWJ1dGUoJ2N1ZWJhY2tncm91bmQnLCAnJyk7CisgICAgYmFja2dyb3VuZE5vZGUuYXBwZW5kQ2hp
bGQoY3VlTm9kZSk7CisKKyAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJh
Z21lbnQoKTsKKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kTm9kZSk7CisKKyAg
ICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKK2FzeW5jX3Rlc3QodGVzdCA9PiB7CisKKyAgICB2aWRl
byA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CisgICAgdmlkZW8uY29udHJvbHMg
PSB0cnVlOworCisgICAgdHJhY2sgPSB2aWRlby5hZGRUZXh0VHJhY2soJ3N1YnRpdGxlcycpOwor
ICAgIHRyYWNrLmRlZmF1bHQgPSB0cnVlOworICAgIHRyYWNrLm1vZGUgPSAnc2hvd2luZyc7CisK
KyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHZpZGVvKTsKKworICAgIGxldCBjdWUxVGV4
dCA9ICdGaXJzdCBjdWUnOworICAgIGxldCBjdWUxID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxLjEs
IGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoY3VlMVRleHQpKTsKKyAgICBjdWUxLmlkID0gIm9uZSI7
CisgICAgdHJhY2suYWRkQ3VlKGN1ZTEpOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlcy5s
ZW5ndGgsIDEsICdvbmx5IG9uZSBjdWUnKTsKKworICAgIGxldCBjdWUyVGV4dCA9ICdTZWNvbmQg
Y3VlJzsKKyAgICBsZXQgY3VlMiA9IG5ldyBUZXh0VHJhY2tDdWUoMSwgMiwgY3JlYXRlVmFsaWRD
dWVGcmFnbWVudChjdWUyVGV4dCkpOworICAgIGN1ZTIuaWQgPSAidHdvIjsKKyAgICB0cmFjay5h
ZGRDdWUoY3VlMik7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzLmxlbmd0aCwgMiwgInRy
YWNrLmN1ZXMubGVuZ3RoIGluY2x1ZGVzIHNlY29uZCBjdWUiKTsKKworICAgIGFzc2VydF9lcXVh
bHModHJhY2suY3Vlc1swXS5pZCwgJ29uZScsICdjdWUgMSBzaG91bGQgYmUgZmlyc3QnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXNbMV0uaWQsICd0d28nLCAnY3VlIDIgc2hvdWxkIGJl
IHNlY29uZCcpOyAgICAKKworICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXknLCBl
dmVudCA9PiB7CisKKyAgICAgICAgbGV0IHNlZWtDb3VudCA9IDA7CisgICAgICAgIGxldCBzdGVw
ID0gXyA9PiB7CisgICAgICAgICAgICBsZXQgY3VlQ29udGFpbmVyID0gbWVkaWFDb250cm9sc0Vs
ZW1lbnQoaW50ZXJuYWxzLnNoYWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQsICItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stY29udGFpbmVyIik7CisgICAgICAgICAgICBzd2l0Y2ggKCsrc2Vla0Nv
dW50KSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0cmFjay5hY3RpdmVDdWVzLmxlbmd0aCwgMSwgIm9ubHkgb25lIGFjdGl2ZSBjdWUiKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1ZUNvbnRhaW5lci5pbm5lclRleHQsIGN1ZTFU
ZXh0LCAiY3VlIG9uZSBpcyB2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdmlkZW8uY3VycmVu
dFRpbWUgPSB0cmFjay5jdWVzWzFdLnN0YXJ0VGltZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHJh
Y2suYWN0aXZlQ3Vlcy5sZW5ndGgsIDIsICJ0d28gYWN0aXZlIGN1ZXMiKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGN1ZUNvbnRhaW5lci5pbm5lclRleHQsIGAke2N1ZTFUZXh0fVxu
JHtjdWUyVGV4dH1gLCAiY3VlcyBvbmUgYW5kIHR3byBhcmUgdmlzaWJsZSIpOworICAgICAgICAg
ICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdHJhY2suY3Vlc1sxXS5lbmRUaW1lIC0gLjU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmFjdGl2ZUN1ZXMubGVuZ3RoLCAxLCAib25seSBvbmUg
YWN0aXZlIGN1ZSIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3VlQ29udGFpbmVy
LmlubmVyVGV4dCwgY3VlMlRleHQsICJjdWUgdHdvIGlzIHZpc2libGUiKTsKKyAgICAgICAgICAg
ICAgICB2aWRlby5jdXJyZW50VGltZSA9IHRyYWNrLmN1ZXNbMV0uZW5kVGltZSArIDE7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHRyYWNrLmFjdGl2ZUN1ZXMubGVuZ3RoLCAwLCAibm8gYWN0aXZlIGN1
ZXMiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1ZUNvbnRhaW5lci5pbm5lclRl
eHQsICcnLCAibm8gY3VlcyBhcmUgdmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHRlc3QuZG9u
ZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHRlc3Quc3RlcF9mdW5jKHN0
ZXApKTsKKyAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSB0cmFjay5jdWVzWzBdLnN0YXJ0VGlt
ZTsKKyAgICB9KTsKKworICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJy4u
Ly4uL2NvbnRlbnQvdGVzdCcpOworCit9LCAnQ3VlcyBhcmUgZGlzcGxheWVkJyk7CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmZDhm
OTEyMTkzMTQwMTY5ZjYzNjA3NWRmNzA4NTU2YjZmZWFiNDA4Li44ZTZhOTIzYTk3NmQxZGQ5MzBk
MTVjYTEzNWJjZTFiZWY2Njk0ODU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMjQ5Niw2ICsyNDk2LDkgQEAgd2Via2l0Lm9yZy9iLzE2MDM2NyBtZWRp
YS90cmFjay90cmFjay1yZW1vdmUtY3Jhc2guaHRtbAogIyBUaGV5IGFyZSBhbHNvIGZsYWtpbHkg
ZmFpbGluZyBvbiBXZWJLaXQyLCBhcyBzbmFwc2hvdCBzb21ldGltZXMgaGFzIGEgYmxhY2sgcmVj
dGFuZ2xlIGZvciB2aWRlbyBlbGVtZW50IGluc3RlYWQgb2Ygd2hpdGUgb25lLgogd2Via2l0Lm9y
Zy9iLzEzMTQ3NiBtZWRpYS90cmFjay93M2MvdHJhY2svd2VidnR0CiAKKyMgVlRUUmVnaW9uIGhl
aWdodCBkb2Vzbid0IGFkanVzdCB3aGVuIGN1ZSBmb250IHNpemUgY2hhbmdlcy4KK3dlYmtpdC5v
cmcvYi8yMDM2MjEgbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1kaXNwbGF5
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorCiBtZWRpYS92aWRlby1vYmplY3QtZml0LWNoYW5nZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBtZWRpYS92aWRlby1vYmplY3QtZml0Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA5NDE1MTExMTAzYTIwYjVkNGQ2ZWZhZGU1OGY3NzA3NzlkNmU2YTc0Li41ZDhk
YWFkNjAwODBhNzFhNzA4MmFkNGEzMmJjNDYzODQwZTU3NGViIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODU4LDYgKzg1OCw5IEBAIHdlYmtpdC5vcmcv
Yi8xMDM5MjYgbWVkaWEvdHJhY2svb3BlcmEvdHJhY2svd2VidnR0L3JlbmRlcmluZy9hZGhvYy92
b2ljZV93aXRoX2V2CiAjIFRoZXkgYXJlIGFsc28gZmxha2lseSBmYWlsaW5nIG9uIFdlYktpdDIs
IGFzIHNuYXBzaG90IHNvbWV0aW1lcyBoYXMgYSBibGFjayByZWN0YW5nbGUgZm9yIHZpZGVvIGVs
ZW1lbnQgaW5zdGVhZCBvZiB3aGl0ZSBvbmUuCiB3ZWJraXQub3JnL2IvMTMxNDc2IG1lZGlhL3Ry
YWNrL3czYy90cmFjay93ZWJ2dHQgWyBTa2lwIF0KIAorIyBWVFRSZWdpb24gaGVpZ2h0IGRvZXNu
J3QgYWRqdXN0IHdoZW4gY3VlIGZvbnQgc2l6ZSBjaGFuZ2VzLgord2Via2l0Lm9yZy9iLzIwMzYy
MSBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWRpc3BsYXkuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCisKIHdlYmtpdC5vcmcvYi82NzcxNiBtZWRpYS9tZWRpYS1jb250cm9scy1p
bnZhbGlkLXVybC5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi83NTE4NCBtZWRpYS9X
M0MvdmlkZW8vY2FuUGxheVR5cGUvY2FuUGxheVR5cGVfY29kZWNzX29yZGVyXzIuaHRtbCBbIEZh
aWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382402</attachid>
            <date>2019-10-30 18:17:35 -0700</date>
            <delta_ts>2019-11-01 11:42:30 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-203649-20191030181734.patch</filename>
            <type>text/plain</type>
            <size>76888</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg0MjEyYjZmNDgyZjgx
MmU0YzJhNjdjNTJkZTU2MjNmZDdmZDE5MS4uOTM0OThkMGQ3ZjRiMzIyNjZlOWIxZjQ0M2JmOGJm
NzcyZWQ3ODk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMC0zMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJp
bWVudGFsIFRleHRUcmFja0N1ZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzY0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NzUxNzI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0
b3IuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFj
a2N1ZS1kaXNwbGF5Y3VlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9z
dDo6dXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoTmVlZHNSdW50
aW1lQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OnByb2Nlc3NBY3RpdmVWVFRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlQWN0aXZl
Q3Vlc0ZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU3R5bGVGb3JUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnNldE1vZGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlQm94U2hhZG93
UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNo
YWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OmN1ZUF0dHJpYnV0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZUJveDo6VGV4dFRyYWNrQ3VlQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZUJveDo6Z2V0Q3VlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTGVn
YWxOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWROb2RlRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
Ojp0YWdQc2V1ZG9PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVBzZXVkb0F0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjpkaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnRvSlNP
TiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmRlYnVnU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6aXNSZW5kZXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0RGlzcGxheVRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpyZW1vdmVEaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94Ojp+VGV4dFRyYWNrQ3VlQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWU6OnJlY2FsY3VsYXRlU3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjppc1JlbmRlcmFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1
ZUdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNF
cXVhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljOjppc09y
ZGVyZWRCZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJp
Yzo6aXNQb3NpdGlvbmVkQWJvdmUgY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlR2VuZXJpYy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OlZUVEN1ZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRDdWU6OmdldERpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZTo6cmVtb3ZlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpzZXRG
b250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ZUVEN1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWVFRDdWVCb3g6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVC
b3g6OmdldEN1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6
OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC90cmFjay9WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6Y3JlYXRlKToK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpnZXREaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpWVFRSZWdpb246OnByZXBhcmVSZWdpb25EaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRt
bC90cmFjay9WVFRSZWdpb24uaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUpOgorCiAyMDE5LTEw
LTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1v
dmUgY29kZSBhcm91bmQgaW4gQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWMw
YmJkNTQ0NWMwYjRhOWMxNTgzM2EyNGJlN2IxNjgyYjVlNThiZi4uMWQ2MDcyZjEwZjVlOGRjNTNl
ZmQ4YWU4ZTIzZDM4NzBiNDAwMTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0x
MC0zMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgZXhwZXJpbWVudGFsIFRleHRUcmFja0N1ZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTU2NzUxNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKwogMjAxOS0xMC0yNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dLMl0gVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSgpIHRvIHNpbXBsaWZ5IHRoZSBwcmVwYXJlVG9TdXNwZW5kIGxvZ2ljCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmNwcAppbmRleCAxMGZmNzJmYmIzZGQ1NGRkODdlMmYyMjI3OGU3ZGViNTJjOTEz
YmU3Li44M2NlNjhkMWM1NzkyNjRjZDZmMzI5NDE0MWRlMjc2MTVjZTQzYmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5jcHAKQEAgLTE3NywxMCArMTc3LDEwIEBAIHZvaWQgTWVkaWFDb250cm9sc0hvc3Q6
OmV4aXRlZEZ1bGxzY3JlZW4oKQogICAgICAgICBtX3RleHRUcmFja0NvbnRhaW5lci0+ZXhpdGVk
RnVsbHNjcmVlbigpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbHNIb3N0Ojp1cGRhdGVDYXB0aW9u
RGlzcGxheVNpemVzKCkKK3ZvaWQgTWVkaWFDb250cm9sc0hvc3Q6OnVwZGF0ZUNhcHRpb25EaXNw
bGF5U2l6ZXMoYm9vbCBmb3JjZVVwZGF0ZSkKIHsKICAgICBpZiAobV90ZXh0VHJhY2tDb250YWlu
ZXIpCi0gICAgICAgIG1fdGV4dFRyYWNrQ29udGFpbmVyLT51cGRhdGVTaXplcyh0cnVlKTsKKyAg
ICAgICAgbV90ZXh0VHJhY2tDb250YWluZXItPnVwZGF0ZVNpemVzKGZvcmNlVXBkYXRlKTsKIH0K
ICAgICAKIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2so
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRleCBlZjVkMDU3MmFkNGFjMDBmNWI3NmExMmRlYzM3
OWYxZjI4NDQ3MWU1Li41YWI4OTdiNGViMGQ4ZDlkYzU4YTE0ZDVjNWFmY2I0N2I1MDk5OGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVk
aWFDb250cm9sc0hvc3QuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRGb3JjZUNvbnRyb2xzRGlzcGxheSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UHJlcGFyZWRUb1Jl
dHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkRp
c3BsYXlTaXplcygpOworICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyhib29sIGZv
cmNlVXBkYXRlID0gZmFsc2UpOwogICAgIHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKTsKICAgICB2
b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCmluZGV4IDZlY2FjZWU5Zjg4MmFmNTdmNTI4
OGIxMzE3OTk4NmUyMGI4OGQ0ODQuLjc1Mjk1NzIzMTIzZTg1YmM3MDhjZWMzOWE1ODkyNzAxMjkx
MTgyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
Q3VlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAKQEAgLTY3LDEyICs2NywxNCBAQCBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VAogICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpEYXRhOgogICAgICAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcjxEYXRhQ3VlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoY3VlKSk7CiAgICAgY2FzZSBUZXh0
VHJhY2tDdWU6OldlYlZUVDoKLSAgICBjYXNlIFRleHRUcmFja0N1ZTo6R2VuZXJpYzoKKyAgICBj
YXNlIFRleHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ6CiAgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyPFZUVEN1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGN1ZSkpOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4ganNOdWxs
KCk7CisgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkdlbmVyaWM6CisgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyPFRleHRUcmFja0N1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGN1ZSkpOwogICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBqc051bGwoKTsKIH0K
IAogSlNWYWx1ZSB0b0pTKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXh0VHJhY2tDdWUmIGN1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCA3NzEy
ZDIxYjNhZDk3MWRiNzcxNDc0NDM2ZTcwZjAzN2VkNzNkMDNkLi4yMTAzNWNjZTE5YjRjM2U5NmM1
ODNlYTEzMGYxOTdjZmU0MjUwODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMTYsNiArMjE2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKFN0YXRpY1JhbmdlKSBcCiAgICAgbWFjcm8oU3R5bGVQcm9wZXJ0
eU1hcFJlYWRPbmx5KSBcCiAgICAgbWFjcm8oU3R5bGVQcm9wZXJ0eU1hcCkgXAorICAgIG1hY3Jv
KFRleHRUcmFja0N1ZSkgXAogICAgIG1hY3JvKFVuZG9JdGVtKSBcCiAgICAgbWFjcm8oVW5kb01h
bmFnZXIpIFwKICAgICBtYWNybyhWUkRpc3BsYXkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNWQ1OTA4ZDhkMzIwZTI0
YjY2ZGM1ZTE1MTg2NzI2YjI0NzM0NTc5Ni4uNDk5ZWY1ZGI0NjU2ZjFjNDBhOTI1Y2Q0MzBmODQ0
MGJlNTBjYzgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTE3MjQsNyArMTcyNCw4IEBAIHN1YiBOZWVkc1J1bnRpbWVD
aGVjawogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGlzYWJsZWRC
eVF1aXJrfQogICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2VjdXJl
Q29udGV4dH0KICAgICAgICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnRl
eHRIYXNTZXJ2aWNlV29ya2VyU2NoZW1lfQotICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q3VzdG9tRW5hYmxlZH07CisgICAgICAgIHx8ICRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21FbmFibGVkfQorICAgICAgICB8fCAkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfTsKIH0KIAogIyBodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1vcGVyYXRpb25zCkBAIC0zODIzLDYgKzM4
MjQsMTUgQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAg
ICAgIHB1c2goQGNvbmp1bmN0cywgICIke25hbWV9OjplbmFibGVkRm9yQ29udGV4dCgiIC4gJGNv
bnRleHRSZWYgLiAiKSIpOwogICAgIH0KIAorICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgICAgICBhc3NlcnQo
Ik11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nLiIpIGlm
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNldHRp
bmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKworICAgICAgICBteSBAc2V0dGluZ3MgPSBzcGxp
dCgvJi8sICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRC
eVNldHRpbmd9KTsKKyAgICAgICAgZm9yZWFjaCBteSAkc2V0dGluZyAoQHNldHRpbmdzKSB7Cisg
ICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4gVG9NZXRob2ROYW1lKCRzZXR0aW5nKSAuICJF
bmFibGVkKCkiKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIG15ICRyZXN1bHQgPSBqb2luKCIg
JiYgIiwgQGNvbmp1bmN0cyk7CiAgICAgJHJlc3VsdCA9ICIoJHJlc3VsdCkiIGlmIEBjb25qdW5j
dHMgPiAxOwogICAgIHJldHVybiAkcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgppbmRleCA5ZjRhZGMzZGFhNGE4ODc0NjRk
NzQ2OTVhZDliMDY1OTJkZmMxOTI1Li45NTU5ZTJjNjA3OTEwM2E4Y2VkZjFkYzhiY2E2OTdlZjE1
YmVmN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgpAQCAtODIsNiArODIsMTAgQEAKICAgICAgICAgICAgICJjb250ZXh0c0Fs
bG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQi
LCAiRXhlY1N0YXRlIiwgIlJ1bnRpbWVGbGFncyIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0K
ICAgICAgICAgfSwKKyAgICAgICAgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI6IHsKKyAg
ICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRlcmZhY2UiXSwK
KyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQorICAgICAgICB9LAogICAgICAgICAiQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IDQyYzUxZmVmNGI2NWNiNzQ0YTgw
NGU2ZGFmODMwMzNlZjJmYjA3ZDEuLmE0ZDhkM2U2NWRlNTA5ZDYyYjk4NWM3M2ZhNjJiZWVmYzA3
OTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJv
Y2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJv
Y2Vzcy1pZGxzLnBsCkBAIC0yODMsNyArMjgzLDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JB
dHRyaWJ1dGVzCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlTmFtZSAoc29ydCBrZXlzICV7JGV4
dGVuZGVkQXR0cmlidXRlc30pIHsKICAgICAgIG5leHQgdW5sZXNzICgkYXR0cmlidXRlTmFtZSBl
cSAiQ29uZGl0aW9uYWwiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQXRSdW50aW1lIiB8
fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEZvcldvcmxkIgogICAgICAgICB8fCAkYXR0cmli
dXRlTmFtZSBlcSAiRW5hYmxlZEJ5U2V0dGluZyIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlNlY3Vy
ZUNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJQcml2YXRlSWRlbnRpZmllciIKLSAgICAg
ICAgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlB1YmxpY0lkZW50aWZpZXIiIHx8ICRhdHRyaWJ1dGVO
YW1lIGVxICJEaXNhYmxlZEJ5UXVpcmsiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlR
dWlyayIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRGb3JDb250ZXh0IiB8fCAkYXR0cmli
dXRlTmFtZSBlcSAiQ3VzdG9tRW5hYmxlZCIpOworICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBl
cSAiUHVibGljSWRlbnRpZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWly
ayIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVF1aXJrIgorICAgICAgICB8fCAkYXR0
cmlidXRlTmFtZSBlcSAiRW5hYmxlZEZvckNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJD
dXN0b21FbmFibGVkIikgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5
U2V0dGluZyI7CiAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFtZTsK
ICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAiPSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5h
bWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAgICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRl
c0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5pZGwKaW5kZXggNDAyYzViYTAxYTgyNDU2Zjg4ZGY0ZWEzZWUwNjUyZWQyY2FhYzdlOC4u
MzAxMTk5MzljOThjMTllOWI5MzAyNzVkMzVjYjY2NTI1NDVlZjQxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbApAQCAtMjEsNiArMjEsNyBAQAogICAgIENvbnN0cnVj
dG9yLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCiAgICAgQ3VzdG9tVG9KU09i
amVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgRE9NSklULAogXSBpbnRl
cmZhY2UgRG9jdW1lbnRGcmFnbWVudCA6IE5vZGUgewogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDY1ZmNlNDZlZDBlYmEwYzgzYjBhZjc0YTRlMmY5N2E4
OTYxNmI4MTQuLjdlNTJjMDA4NjZmNTUwMzg5OTNhNzZkNWIxZWUwNmY4MWJmOTU5NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTcyLDYgKzk3MiwxMSBA
QCBpbmxpbmUgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVSZW5kZXJlcigpCiB7CiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIt
PnVwZGF0ZUZyb21FbGVtZW50KCk7CisKKyNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBU
KQorICAgIGlmIChtX21lZGlhQ29udHJvbHNIb3N0KQorICAgICAgICBtX21lZGlhQ29udHJvbHNI
b3N0LT51cGRhdGVDYXB0aW9uRGlzcGxheVNpemVzKGZhbHNlKTsKKyNlbmRpZgogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCkBAIC0xNzQ4LDEwICsxNzUz
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNv
bnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
dXJyZW50Q3Vlc1NpemU7ICsraSkgewogICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUg
PSBjdXJyZW50Q3Vlc1tpXS5kYXRhKCk7Ci0KLSAgICAgICAgaWYgKGN1ZS0+aXNSZW5kZXJhYmxl
KCkpCi0gICAgICAgICAgICB0b1ZUVEN1ZShjdWUuZ2V0KCkpLT51cGRhdGVEaXNwbGF5VHJlZSht
b3ZpZVRpbWUpOwotCisgICAgICAgIGN1ZS0+dXBkYXRlRGlzcGxheVRyZWUobW92aWVUaW1lKTsK
ICAgICAgICAgaWYgKCFjdWUtPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBhY3RpdmVTZXRDaGFu
Z2VkID0gdHJ1ZTsKICAgICB9CkBAIC0yMDY0LDcgKzIwNjYsOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmIGN1ZSkK
ICAgICAvLyBTaW5jZSB0aGUgY3VlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtZWRpYSBlbGVt
ZW50IGFuZCBsaWtlbHkgdGhlCiAgICAgLy8gVGV4dFRyYWNrIG1pZ2h0IGFsc28gYmUgZGVzdHJ1
Y3RlZCwgbm90aWZ5aW5nIHRoZSByZWdpb24gb2YgdGhlIGN1ZQogICAgIC8vIHJlbW92YWwgc2hv
dWxkbid0IGJlIGRvbmUuCi0gICAgaWYgKGN1ZS5pc1JlbmRlcmFibGUoKSkKKyAgICBhdXRvIGlz
VlRUID0gaXM8VlRUQ3VlPihjdWUpOworICAgIGlmIChpc1ZUVCkKICAgICAgICAgdG9WVFRDdWUo
JmN1ZSktPm5vdGlmeVJlZ2lvbldoZW5SZW1vdmluZ0Rpc3BsYXlUcmVlKGZhbHNlKTsKIAogICAg
IHNpemVfdCBpbmRleCA9IG1fY3VycmVudGx5QWN0aXZlQ3Vlcy5maW5kKGludGVydmFsKTsKQEAg
LTIwNzMsMTEgKzIwNzYsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJiBjdWUpCiAgICAgICAgIG1fY3VycmVudGx5
QWN0aXZlQ3Vlcy5yZW1vdmUoaW5kZXgpOwogICAgIH0KIAotICAgIGlmIChjdWUuaXNSZW5kZXJh
YmxlKCkpCi0gICAgICAgIHRvVlRUQ3VlKCZjdWUpLT5yZW1vdmVEaXNwbGF5VHJlZSgpOworICAg
IGN1ZS5yZW1vdmVEaXNwbGF5VHJlZSgpOwogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMo
Y3VycmVudE1lZGlhVGltZSgpKTsKIAotICAgIGlmIChjdWUuaXNSZW5kZXJhYmxlKCkpCisgICAg
aWYgKGlzVlRUKQogICAgICAgICB0b1ZUVEN1ZSgmY3VlKS0+bm90aWZ5UmVnaW9uV2hlblJlbW92
aW5nRGlzcGxheVRyZWUodHJ1ZSk7CiB9CiAKQEAgLTY1ODYsNiArNjU4OCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxheShUZXh0VHJhY2tWaXNpYmls
aXR5Q2hlY2tUeXBlIGNoCiAgICAgICAgIHJldHVybjsKIAogICAgIGVuc3VyZU1lZGlhQ29udHJv
bHNTaGFkb3dSb290KCk7CisgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogI2Vsc2UKICAg
ICBpZiAoIW1faGF2ZVZpc2libGVUZXh0VHJhY2sgJiYgIWhhc01lZGlhQ29udHJvbHMoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjYwOSw3ICs2NjEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9M
U19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc0hvc3QpCi0gICAgICAgIG1fbWVkaWFD
b250cm9sc0hvc3QtPnVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKKyAgICAgICAgbV9tZWRp
YUNvbnRyb2xzSG9zdC0+dXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyh0cnVlKTsKICNlbmRpZgog
CiAgICAgaWYgKG1fcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IGNkZGM1Yjc5NWQ2MjQ5NmFjYTE3MzMwNjk5
NTNhYjI4MmZlYTMxNjEuLjhmMjliYThiNzQ0YjMyM2MyNTgyYmEwZmMzM2ExMzczNjNjOTg3Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4
dFRyYWNrQ3VlR2VuZXJpYy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRl
ICJWVFRSZWdpb25MaXN0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAg
LTExMjUsMTQgKzExMjYsMTMgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKICAgICAvLyAxLiBJZiB0aGUgbWVkaWEgZWxlbWVudCBp
cyBhbiBhdWRpbyBlbGVtZW50LCBvciBpcyBhbm90aGVyIHBsYXliYWNrCiAgICAgLy8gbWVjaGFu
aXNtIHdpdGggbm8gcmVuZGVyaW5nIGFyZWEsIGFib3J0IHRoZXNlIHN0ZXBzLiBUaGVyZSBpcyBu
b3RoaW5nIHRvCiAgICAgLy8gcmVuZGVyLgotICAgIGlmICghbWVkaWFFbGVtZW50IHx8ICFtZWRp
YUVsZW1lbnQtPmlzVmlkZW8oKSkKKyAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFFbGVt
ZW50LT5pc1ZpZGVvKCkgfHwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIDIuIExldCB2aWRlbyBiZSB0aGUgbWVkaWEgZWxlbWVu
dCBvciBvdGhlciBwbGF5YmFjayBtZWNoYW5pc20uCiAgICAgSFRNTFZpZGVvRWxlbWVudCYgdmlk
ZW8gPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqbWVkaWFFbGVtZW50KTsKIAogICAgIC8v
IDMuIExldCBvdXRwdXQgYmUgYW4gZW1wdHkgbGlzdCBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQg
Q1NTIGJsb2NrIGJveGVzLgotICAgIFZlY3RvcjxSZWZQdHI8SFRNTERpdkVsZW1lbnQ+PiBvdXRw
dXQ7CiAKICAgICAvLyA0LiBJZiB0aGUgdXNlciBhZ2VudCBpcyBleHBvc2luZyBhIHVzZXIgaW50
ZXJmYWNlIGZvciB2aWRlbywgYWRkIHRvCiAgICAgLy8gb3V0cHV0IG9uZSBvciBtb3JlIGNvbXBs
ZXRlbHkgdHJhbnNwYXJlbnQgcG9zaXRpb25lZCBDU1MgYmxvY2sgYm94ZXMgdGhhdApAQCAtMTE3
MywxNyArMTE3MywxMiBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgICAgICByZW1vdmVDaGlsZHJlbigpOwogCiAgICAgYWN0
aXZlQ3Vlcy5yZW1vdmVBbGxNYXRjaGluZyhbXSAoQ3VlSW50ZXJ2YWwmIGN1ZUludGVydmFsKSB7
Ci0gICAgICAgIGlmICghaXM8VlRUQ3VlPihjdWVJbnRlcnZhbC5kYXRhKCkpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgUmVmPFZUVEN1ZT4gY3VlID0gZG93bmNhc3Q8VlRU
Q3VlPigqY3VlSW50ZXJ2YWwuZGF0YSgpKTsKLQotICAgICAgICByZXR1cm4gIWN1ZS0+aXNSZW5k
ZXJhYmxlKCkKLSAgICAgICAgICAgIHx8ICFjdWUtPnRyYWNrKCkKKyAgICAgICAgUmVmUHRyPFRl
eHRUcmFja0N1ZT4gY3VlID0gY3VlSW50ZXJ2YWwuZGF0YSgpOworICAgICAgICByZXR1cm4gIWN1
ZS0+dHJhY2soKQogICAgICAgICAgICAgfHwgIWN1ZS0+dHJhY2soKS0+aXNSZW5kZXJlZCgpCiAg
ICAgICAgICAgICB8fCBjdWUtPnRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkRp
c2FibGVkCiAgICAgICAgICAgICB8fCAhY3VlLT5pc0FjdGl2ZSgpCi0gICAgICAgICAgICB8fCBj
dWUtPnRleHQoKS5pc0VtcHR5KCk7CisgICAgICAgICAgICB8fCAhY3VlLT5pc1JlbmRlcmFibGUo
KTsKICAgICB9KTsKIAogICAgIC8vIFNvcnQgdGhlIGFjdGl2ZSBjdWVzIGZvciB0aGUgYXBwcm9w
cmlhdGUgZGlzcGxheSBvcmRlci4gRm9yIGV4YW1wbGUsIGZvciByb2xsLXVwCkBAIC0xMTkxLDM3
ICsxMTg2LDIwIEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSgpCiAgICAgLy8gc28gdGhhdCB0aGUgbmV3ZXN0IGNhcHRpb25zIGFwcGVh
ciBhdCB0aGUgYm90dG9tLgogICAgIHN0ZDo6c29ydChhY3RpdmVDdWVzLmJlZ2luKCksIGFjdGl2
ZUN1ZXMuZW5kKCksICZjb21wYXJlQ3VlSW50ZXJ2YWxGb3JEaXNwbGF5KTsKIAotICAgIC8vIDEw
LiBGb3IgZWFjaCB0ZXh0IHRyYWNrIGN1ZSBjdWUgaW4gY3VlcyB0aGF0IGhhcyBub3QgeWV0IGhh
ZAotICAgIC8vIGNvcnJlc3BvbmRpbmcgQ1NTIGJveGVzIGFkZGVkIHRvIG91dHB1dCwgaW4gdGV4
dCB0cmFjayBjdWUgb3JkZXIsIHJ1biB0aGUKLSAgICAvLyBmb2xsb3dpbmcgc3Vic3RlcHM6Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGlmICghbWVkaWFDb250cm9sbGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgUmVmUHRyPFZUVEN1ZT4gY3VlID0gZG93bmNh
c3Q8VlRUQ3VlPihhY3RpdmVDdWVzW2ldLmRhdGEoKSk7Ci0KLSAgICAgICAgREVCVUdfTE9HKExP
R0lERU5USUZJRVIsICJhZGRpbmcgYW5kIHBvc2l0aW9uaW5nIGN1ZSAiLCBpLCAiOiBcIiIsIGN1
ZS0+dGV4dCgpLCAiXCIsIHN0YXJ0PSIsIGN1ZS0+c3RhcnRUaW1lKCksICIsIGVuZD0iLCBjdWUt
PmVuZFRpbWUoKSwgIiwgbGluZT0iLCBjdWUtPmxpbmUoKSk7Ci0gICAgICAgIFJlZjxWVFRDdWVC
b3g+IGRpc3BsYXlCb3ggPSBjdWUtPmdldERpc3BsYXlUcmVlKG1fdmlkZW9EaXNwbGF5U2l6ZS5z
aXplKCksIG1fZm9udFNpemUpOwotICAgICAgICBSZWZQdHI8VlRUUmVnaW9uPiByZWdpb24gPSBj
dWUtPnRyYWNrKCktPnJlZ2lvbnMoKS0+Z2V0UmVnaW9uQnlJZChjdWUtPnJlZ2lvbklkKCkpOwot
ICAgICAgICBpZiAoIXJlZ2lvbikgewotICAgICAgICAgICAgLy8gSWYgY3VlIGhhcyBhbiBlbXB0
eSB0ZXh0IHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciBvciB0aGVyZSBpcyBubwotICAgICAg
ICAgICAgLy8gV2ViVlRUIHJlZ2lvbiB3aG9zZSByZWdpb24gaWRlbnRpZmllciBpcyBpZGVudGlj
YWwgdG8gY3VlJ3MgdGV4dAotICAgICAgICAgICAgLy8gdHJhY2sgY3VlIHJlZ2lvbiBpZGVudGlm
aWVyLCBydW4gdGhlIGZvbGxvd2luZyBzdWJzdGVwczoKLSAgICAgICAgICAgIGlmIChkaXNwbGF5
Qm94LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKGRpc3BsYXlCb3gucHRyKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gTm90ZTogdGhlIGRpc3BsYXkgdHJlZSBvZiBhIGN1ZSBpcyByZW1v
dmVkIHdoZW4gdGhlIGFjdGl2ZSBmbGFnIG9mIHRoZSBjdWUgaXMgdW5zZXQuCi0gICAgICAgICAg
ICAgICAgYXBwZW5kQ2hpbGQoZGlzcGxheUJveCk7Ci0gICAgICAgICAgICAgICAgY3VlLT5zZXRG
b250U2l6ZShtX2ZvbnRTaXplLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXpl
SXNJbXBvcnRhbnQpOworICAgIGlmIChtZWRpYUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKCkpIHsKKyAgICAgICAgLy8gMTAuIEZvciBlYWNoIHRleHQgdHJhY2sgY3VlIGN1ZSBp
biBjdWVzIHRoYXQgaGFzIG5vdCB5ZXQgaGFkCisgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgQ1NT
IGJveGVzIGFkZGVkIHRvIG91dHB1dCwgaW4gdGV4dCB0cmFjayBjdWUgb3JkZXIsIHJ1biB0aGUK
KyAgICAgICAgLy8gZm9sbG93aW5nIHN1YnN0ZXBzOgorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGF1dG8gY3VlID0g
YWN0aXZlQ3Vlc1tpXS5kYXRhKCk7CisgICAgICAgICAgICBjdWUtPnNldEZvbnRTaXplKG1fZm9u
dFNpemUsIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemVJc0ltcG9ydGFudCk7
CisgICAgICAgICAgICBpZiAoaXM8VlRUQ3VlPihjdWUpIHx8IGlzPFRleHRUcmFja0N1ZUdlbmVy
aWM+KGN1ZSkpCisgICAgICAgICAgICAgICAgcHJvY2Vzc0FjdGl2ZVZUVEN1ZSgqZG93bmNhc3Q8
VlRUQ3VlPihjdWUpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0
cjxUZXh0VHJhY2tDdWVCb3g+IGRpc3BsYXlCb3ggPSBjdWUtPmdldERpc3BsYXlUcmVlKG1fdmlk
ZW9EaXNwbGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemUpOworICAgICAgICAgICAgICAgIGlmIChk
aXNwbGF5Qm94LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKGRpc3BsYXlCb3guZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCgqZGlzcGxheUJveCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBMZXQgcmVnaW9uIGJlIHRo
ZSBXZWJWVFQgcmVnaW9uIHdob3NlIHJlZ2lvbiBpZGVudGlmaWVyCi0gICAgICAgICAgICAvLyBt
YXRjaGVzIHRoZSB0ZXh0IHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciBvZiBjdWUuCi0gICAg
ICAgICAgICBSZWY8SFRNTERpdkVsZW1lbnQ+IHJlZ2lvbk5vZGUgPSByZWdpb24tPmdldERpc3Bs
YXlUcmVlKCk7Ci0KLSAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgcmVnaW9uIHRvIHRoZSB2aWV3
cG9ydCwgaWYgaXQgd2FzIG5vdCBhbHJlYWR5LgotICAgICAgICAgICAgaWYgKCFjb250YWlucyhy
ZWdpb25Ob2RlLnB0cigpKSkKLSAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZChyZWdpb24tPmdl
dERpc3BsYXlUcmVlKCkpOwotCi0gICAgICAgICAgICByZWdpb24tPmFwcGVuZFRleHRUcmFja0N1
ZUJveChXVEZNb3ZlKGRpc3BsYXlCb3gpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTIzNSw2
ICsxMjEzLDM0IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSgpCiAgICAgfQogfQogCit2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OnByb2Nlc3NBY3RpdmVWVFRDdWUoVlRUQ3VlJiBjdWUpCit7CisgICAg
QVNTRVJUKGlzPFZUVEN1ZT4oY3VlKSB8fCBpczxUZXh0VHJhY2tDdWVHZW5lcmljPihjdWUpKTsK
KworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiYWRkaW5nIGFuZCBwb3NpdGlvbmluZyBj
dWU6IFwiIiwgY3VlLnRleHQoKSwgIlwiLCBzdGFydD0iLCBjdWUuc3RhcnRUaW1lKCksICIsIGVu
ZD0iLCBjdWUuZW5kVGltZSgpLCAiLCBsaW5lPSIsIGN1ZS5saW5lKCkpOworICAgIFJlZjxUZXh0
VHJhY2tDdWVCb3g+IGRpc3BsYXlCb3ggPSAqY3VlLmdldERpc3BsYXlUcmVlKG1fdmlkZW9EaXNw
bGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemUpOworICAgIFJlZlB0cjxWVFRSZWdpb24+IHJlZ2lv
biA9IGN1ZS50cmFjaygpLT5yZWdpb25zKCktPmdldFJlZ2lvbkJ5SWQoY3VlLnJlZ2lvbklkKCkp
OworICAgIGlmICghcmVnaW9uKSB7CisgICAgICAgIC8vIElmIGN1ZSBoYXMgYW4gZW1wdHkgdGV4
dCB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIgb3IgdGhlcmUgaXMgbm8KKyAgICAgICAgLy8g
V2ViVlRUIHJlZ2lvbiB3aG9zZSByZWdpb24gaWRlbnRpZmllciBpcyBpZGVudGljYWwgdG8gY3Vl
J3MgdGV4dAorICAgICAgICAvLyB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIsIHJ1biB0aGUg
Zm9sbG93aW5nIHN1YnN0ZXBzOgorICAgICAgICBpZiAoZGlzcGxheUJveC0+aGFzQ2hpbGROb2Rl
cygpICYmICFjb250YWlucyhkaXNwbGF5Qm94LnB0cigpKSkgeworICAgICAgICAgICAgLy8gTm90
ZTogdGhlIGRpc3BsYXkgdHJlZSBvZiBhIGN1ZSBpcyByZW1vdmVkIHdoZW4gdGhlIGFjdGl2ZSBm
bGFnIG9mIHRoZSBjdWUgaXMgdW5zZXQuCisgICAgICAgICAgICBhcHBlbmRDaGlsZChkaXNwbGF5
Qm94KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIExldCByZWdpb24gYmUg
dGhlIFdlYlZUVCByZWdpb24gd2hvc2UgcmVnaW9uIGlkZW50aWZpZXIKKyAgICAgICAgLy8gbWF0
Y2hlcyB0aGUgdGV4dCB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIgb2YgY3VlLgorICAgICAg
ICBSZWY8SFRNTERpdkVsZW1lbnQ+IHJlZ2lvbk5vZGUgPSByZWdpb24tPmdldERpc3BsYXlUcmVl
KCk7CisKKyAgICAgICAgLy8gQXBwZW5kIHRoZSByZWdpb24gdG8gdGhlIHZpZXdwb3J0LCBpZiBp
dCB3YXMgbm90IGFscmVhZHkuCisgICAgICAgIGlmICghY29udGFpbnMocmVnaW9uTm9kZS5wdHIo
KSkpCisgICAgICAgICAgICBhcHBlbmRDaGlsZChyZWdpb24tPmdldERpc3BsYXlUcmVlKCkpOwor
CisgICAgICAgIHJlZ2lvbi0+YXBwZW5kVGV4dFRyYWNrQ3VlQm94KFdURk1vdmUoZGlzcGxheUJv
eCkpOworICAgIH0KK30KKwogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Ojp1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKQogewogICAgIGlmICghZG9jdW1lbnQoKS5w
YWdlKCkpCkBAIC0xMjUwLDEyICsxMjU2LDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50Ojp1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKQogCiAgICAgZm9yIChh
dXRvJiBhY3RpdmVDdWUgOiBtZWRpYUVsZW1lbnQtPmN1cnJlbnRseUFjdGl2ZUN1ZXMoKSkgewog
ICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBhY3RpdmVDdWUuZGF0YSgpOwotICAg
ICAgICBpZiAoIWN1ZS0+aXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICB0b1ZUVEN1ZShjdWUuZ2V0KCkpLT5zZXRGb250U2l6ZShtX2ZvbnRTaXplLCBtX3Zp
ZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQpOworICAgICAgICBp
ZiAoY3VlLT5pc1JlbmRlcmFibGUoKSkKKyAgICAgICAgICAgIGN1ZS0+c2V0Rm9udFNpemUobV9m
b250U2l6ZSwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKSwgbV9mb250U2l6ZUlzSW1wb3J0YW50
KTsKICAgICB9Ci0KIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Ojp1cGRhdGVUZXh0U3Ryb2tlU3R5bGUoKQpAQCAtMTI5NSw2ICsxMjk4LDEzIEBAIHZvaWQg
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlVGltZXJGaXJlZCgp
CiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0
byBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CisgICAgaWYgKCFtZWRp
YUVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgYWN0aXZlQ3VlIDog
bWVkaWFFbGVtZW50LT5jdXJyZW50bHlBY3RpdmVDdWVzKCkpCisgICAgICAgIGFjdGl2ZUN1ZS5k
YXRhKCktPnJlY2FsY3VsYXRlU3R5bGVzKCk7CisKICAgICBpZiAobV90ZXh0VHJhY2tSZXByZXNl
bnRhdGlvbikKICAgICAgICAgdXBkYXRlU3R5bGVGb3JUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigp
OwogCkBAIC0xMzQ2LDYgKzEzNTYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OnVwZGF0ZVN0eWxlRm9yVGV4dFRyYWNrUmVwcmVzZW50YXRpbwogewogICAg
IGlmICghbV91cGRhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvblN0eWxlKQogICAgICAgICByZXR1
cm47CisKICAgICBtX3VwZGF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uU3R5bGUgPSBmYWxzZTsK
IAogICAgIGlmIChtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCA3YzJjYzY1Zjk2
MzA3OWYwNjUzZDMyZDZmZWFkM2M4ZjU1NmM2M2M5Li5jZjQxNDIxNmZhY2UyMjU3YzIwMWQ1YWRk
MGYwMGY2OGE3MmMzMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDY3LDYgKzQ2Nyw4IEBAIHByaXZhdGU6CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAKK2NsYXNzIFZUVEN1ZTsKKwogY2xhc3MgTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCBmaW5hbAogICAgIDogcHVibGljIE1lZGlhQ29udHJv
bERpdkVsZW1lbnQKICAgICAsIHB1YmxpYyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudApA
QCAtNDg3LDYgKzQ4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7
CiAgICAgdm9pZCB1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKTsKICAgICB2b2lkIHVwZGF0ZVRl
eHRTdHJva2VTdHlsZSgpOworICAgIHZvaWQgcHJvY2Vzc0FjdGl2ZVZUVEN1ZShWVFRDdWUmKTsK
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXgg
NTlhMTkyNDYyMDliMDA5YWMwMTRhYmE5YjcyMGYzMjJkNTYxNzk3Ny4uMTgwYzk2Y2M3YWY4YWRm
MTVhNWYxYTYyYzU3NjA2OGE0ZWIwNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcApAQCAtMjM3LDExICsyMzcsOCBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZShN
b2RlIG1vZGUpCiAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAq
bV9jdWVzKTsKIAogICAgIGlmIChtb2RlICE9IE1vZGU6OlNob3dpbmcgJiYgbV9jdWVzKSB7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBtX2N1ZXMtPml0ZW0oaSk7Ci0g
ICAgICAgICAgICBpZiAoY3VlLT5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICB0b1ZU
VEN1ZShjdWUuZ2V0KCkpLT5yZW1vdmVEaXNwbGF5VHJlZSgpOwotICAgICAgICB9CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAg
ICAgbV9jdWVzLT5pdGVtKGkpLT5yZW1vdmVEaXNwbGF5VHJlZSgpOwogICAgIH0KIAogICAgIG1f
bW9kZSA9IG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAK
aW5kZXggOGVhYzc1MWNkN2NhNjg5ODE5YWEwNmMyZTNhZWVmMzc5YjNlNTQwOS4uZmFjMDZiZGY1
ZjE4MGI2NmIyODY0ZWY5NmUyZWMxMmY1NTIzYmI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMzYsOSArMzYsMTUgQEAKIAogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVk
ZSAiRE9NUmVjdC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiVGV4
dFRyYWNrQ3VlTGlzdC5oIgpAQCAtNDgsMTEgKzU0LDEzIEBACiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrQ3VlKTsKK1dURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tDdWVCb3gpOwogCiBjb25zdCBBdG9tU3Ry
aW5nJiBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkKIHsKQEAgLTYwLDEyICs2OCwx
NjUgQEAgY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCgp
CiAgICAgcmV0dXJuIGN1ZTsKIH0KIAorY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrQ3VlOjpj
dWVCb3hTaGFkb3dQc2V1ZG9JZCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlh
LXRleHQtdHJhY2stZGlzcGxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
KyAgICByZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7Cit9CisKK2NvbnN0IEF0
b21TdHJpbmcmIFRleHRUcmFja0N1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGN1ZUJhY2tkcm9wU2hh
ZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5LWJhY2tkcm9wIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiBjdWVCYWNrZHJv
cFNoYWRvd1BzZXVkb0lkOworfQorCitzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3VlQXR0
cmlidXROYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
Y3VlVGFnKG51bGxBdG9tKCksICJjdWUiLCBudWxsQXRvbSgpKTsKKyAgICByZXR1cm4gY3VlVGFn
OworfQorCitzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3VlQmFja2dyb3VuZEF0dHJpYnV0
TmFtZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGN1ZUJh
Y2tncm91bmRUYWcobnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiLCBudWxsQXRvbSgpKTsKKyAg
ICByZXR1cm4gY3VlQmFja2dyb3VuZFRhZzsKK30KKworVGV4dFRyYWNrQ3VlQm94OjpUZXh0VHJh
Y2tDdWVCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDdWUmIGN1ZSkKKyAgICA6IEhU
TUxFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKKyAgICAsIG1fY3VlKG1ha2VX
ZWFrUHRyKGN1ZSkpCit7CisgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7
CisgICAgc2V0UHNldWRvKFRleHRUcmFja0N1ZTo6Y3VlQm94U2hhZG93UHNldWRvSWQoKSk7Cit9
CisKK1RleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlQm94OjpnZXRDdWUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2N1ZS5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzTGVnYWxOb2Rl
KE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmJy
VGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpkaXZUYWcpCisgICAg
ICAgIHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAgICAgfHwgbm9k
ZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cFRhZykKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6cmJUYWcpCisgICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OnJ0VGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpydGNUYWcpCisg
ICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnJ1YnlUYWcpCisgICAgICAgIHx8
IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNwYW5UYWcpCisgICAgICAgIHx8IG5vZGUubm9k
ZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREU7Cit9CisKK3N0YXRpYyBFeGNlcHRpb24gaW52YWxp
ZE5vZGVFeGNlcHRpb24oTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZE5vZGVUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIkludmFsaWQgbm9kZSB0eXBlOiAiLCBub2Rl
Lm5vZGVOYW1lKCkpIH07Cit9CisKK3N0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBjaGVja0Zvcklu
dmFsaWROb2RlVHlwZXMoTm9kZSYgcm9vdCkKK3sKKyAgICBpZiAoIWlzTGVnYWxOb2RlKHJvb3Qp
KQorICAgICAgICByZXR1cm4gaW52YWxpZE5vZGVFeGNlcHRpb24ocm9vdCk7CisKKyAgICBmb3Ig
KGF1dG8qIGNoaWxkID0gcm9vdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghaXNMZWdhbE5vZGUoKmNoaWxkKSkKKyAgICAg
ICAgICAgIHJldHVybiBpbnZhbGlkTm9kZUV4Y2VwdGlvbigqY2hpbGQpOworCisgICAgICAgIGlm
IChpczxDb250YWluZXJOb2RlPigqY2hpbGQpKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IGNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcygqY2hpbGQpOworICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK2Vu
dW0gUmVxdWlyZWROb2RlcyB7CisgICAgQ3VlID0gMSA8PCAwLAorICAgIEN1ZUJhY2tncm91bmQg
PSAxIDw8IDEsCit9OworCitzdGF0aWMgT3B0aW9uU2V0PFJlcXVpcmVkTm9kZXM+IHRhZ1BzZXVk
b09iamVjdHMoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgT3B0aW9uU2V0PFJlcXVpcmVkTm9kZXM+IG5vZGVUeXBl
cyA9IHsgfTsKKworICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pihub2RlKTsK
KyAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGN1ZUF0
dHJpYnV0TmFtZSgpKSkgeworICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhUZXh0VHJhY2tDdWU6
OmN1ZVNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBub2RlVHlwZXMgPSB7IFJlcXVpcmVkTm9k
ZXM6OkN1ZSB9OworICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKSkpIHsKKyAgICAgICAgZWxl
bWVudC5zZXRQc2V1ZG8oVGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkp
OworICAgICAgICBub2RlVHlwZXMgPSB7IFJlcXVpcmVkTm9kZXM6OkN1ZUJhY2tncm91bmQgfTsK
KyAgICB9CisKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQorICAgICAgICBub2RlVHlwZXMuYWRk
KHRhZ1BzZXVkb09iamVjdHMoKmNoaWxkKSk7CisKKyAgICByZXR1cm4gbm9kZVR5cGVzOworfQor
CitzdGF0aWMgdm9pZCByZW1vdmVQc2V1ZG9BdHRyaWJ1dGVzKE5vZGUmIG5vZGUpCit7CisgICAg
aWYgKCFpczxFbGVtZW50Pihub2RlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgIGlmIChlbGVtZW50Lmhhc0F0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY3VlQXR0cmlidXROYW1lKCkpIHx8IGVsZW1lbnQu
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjdWVCYWNrZ3JvdW5kQXR0cmlidXRO
YW1lKCkpKQorICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShIVE1MTmFtZXM6OnBzZXVk
b0F0dHIpOworCisgICAgZm9yIChhdXRvKiBjaGlsZCA9IGVsZW1lbnQuZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcmVtb3ZlUHNldWRv
QXR0cmlidXRlcygqY2hpbGQpOworfQorCitFeGNlcHRpb25PcjxSZWY8VGV4dFRyYWNrQ3VlPj4g
VGV4dFRyYWNrQ3VlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBEb2N1bWVudEZyYWdtZW50JiBjdWVEb2N1bWVudCkKK3sK
KyAgICBBU1NFUlQoY29udGV4dC5pc0RvY3VtZW50KCkpOworICAgIEFTU0VSVChpczxEb2N1bWVu
dEZyYWdtZW50PihjdWVEb2N1bWVudCkpOworCisgICAgaWYgKCFjdWVEb2N1bWVudC5maXJzdENo
aWxkKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJvciwg
IkVtcHR5IGN1ZSBmcmFnbWVudCIgfTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IGN1ZURvY3Vt
ZW50LmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBjaGVja0ZvckludmFsaWROb2RlVHlwZXMoKm5vZGUpOworICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgYXV0byBmcmFnbWVudCA9IERvY3Vt
ZW50RnJhZ21lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkpOworICAgIGZv
ciAoTm9kZSogbm9kZSA9IGN1ZURvY3VtZW50LmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBmcmFnbWVudC0+ZW5z
dXJlUHJlSW5zZXJ0aW9uVmFsaWRpdHkoKm5vZGUsIG51bGxwdHIpOworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisgICAgfQorICAgIGN1ZURvY3VtZW50LmNsb25lQ2hpbGROb2RlcyhmcmFnbWVu
dCk7CisKKyAgICBPcHRpb25TZXQ8UmVxdWlyZWROb2Rlcz4gbm9kZVR5cGVzID0geyB9OworICAg
IGZvciAoTm9kZSogbm9kZSA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpKQorICAgICAgICBub2RlVHlwZXMuYWRkKHRhZ1BzZXVkb09iamVj
dHMoKm5vZGUpKTsKKworICAgIGlmICghbm9kZVR5cGVzLmNvbnRhaW5zKFJlcXVpcmVkTm9kZXM6
OkN1ZSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgbWFr
ZVN0cmluZygiTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGU6ICIsIGN1ZUF0dHJpYnV0TmFtZSgp
LnRvU3RyaW5nKCkpIH07CisgICAgaWYgKCFub2RlVHlwZXMuY29udGFpbnMoUmVxdWlyZWROb2Rl
czo6Q3VlQmFja2dyb3VuZCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgbWFrZVN0cmluZygiTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGU6ICIsIGN1ZUJh
Y2tncm91bmRBdHRyaWJ1dE5hbWUoKS50b1N0cmluZygpKSB9OworCisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGV4dFRyYWNrQ3VlKGNvbnRleHQsIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBXVEZNb3ZlKGZyYWdt
ZW50LmdldCgpKSkpOworfQorCitUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgRG9jdW1lbnRGcmFnbWVudCYmIGN1ZUZyYWdtZW50KQorICAgIDogVGV4dFRy
YWNrQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQpCit7CisgICAgbV9jdWVOb2RlID0gJmN1ZUZyYWdt
ZW50OworfQorCiBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCkKICAgICA6IG1fc3RhcnRUaW1lKHN0YXJ0KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAs
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQotICAgICwgbV9pc0FjdGl2ZShmYWxz
ZSkKLSAgICAsIG1fcGF1c2VPbkV4aXQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpOwogfQpAQCAtODUsNiArMjQ2LDggQEAgdm9pZCBU
ZXh0VHJhY2tDdWU6OmRpZENoYW5nZSgpCiAgICAgaWYgKC0tbV9wcm9jZXNzaW5nQ3VlQ2hhbmdl
cykKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRlID0gdHJ1
ZTsKKwogICAgIGlmIChtX3RyYWNrKQogICAgICAgICBtX3RyYWNrLT5jdWVEaWRDaGFuZ2UodGhp
cyk7CiB9CkBAIC0xNjYsNiArMzI5LDEzIEBAIGJvb2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgp
CiB2b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgbV9p
c0FjdGl2ZSA9IGFjdGl2ZTsKKworICAgIGlmIChtX2lzQWN0aXZlIHx8ICFtX2Rpc3BsYXlUcmVl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgZGlzcGxheSB0cmVlIGlzIG5ldmVyIGV4
cG9zZWQgdG8gYXV0aG9yIHNjcmlwdHMgc28gaXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBo
ZXJlLgorICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dl
ZFNjb3BlKCptX2Rpc3BsYXlUcmVlKTsKKyAgICBtX2Rpc3BsYXlUcmVlLT5yZW1vdmUoKTsKIH0K
IAogYm9vbCBUZXh0VHJhY2tDdWU6OmlzT3JkZXJlZEJlZm9yZShjb25zdCBUZXh0VHJhY2tDdWUq
IG90aGVyKSBjb25zdApAQCAtMjI1LDggKzM5NSw4IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjp0b0pT
T04oSlNPTjo6T2JqZWN0JiB2YWx1ZSkgY29uc3QKIHsKICAgICBBU0NJSUxpdGVyYWwgdHlwZSA9
ICJHZW5lcmljIl9zOwogICAgIHN3aXRjaCAoY3VlVHlwZSgpKSB7Ci0gICAgY2FzZSBUZXh0VHJh
Y2tDdWU6OkdlbmVyaWM6Ci0gICAgICAgIHR5cGUgPSAiR2VuZXJpYyJfczsKKyAgICBjYXNlIFRl
eHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ6CisgICAgICAgIHR5cGUgPSAiQ29udmVydGVk
VG9XZWJWVFQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpXZWJW
VFQ6CiAgICAgICAgIHR5cGUgPSAiV2ViVlRUIl9zOwpAQCAtMjM0LDYgKzQwNCw5IEBAIHZvaWQg
VGV4dFRyYWNrQ3VlOjp0b0pTT04oSlNPTjo6T2JqZWN0JiB2YWx1ZSkgY29uc3QKICAgICBjYXNl
IFRleHRUcmFja0N1ZTo6RGF0YToKICAgICAgICAgdHlwZSA9ICJEYXRhIl9zOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFRleHRUcmFja0N1ZTo6R2VuZXJpYzoKKyAgICAgICAgdHlwZSA9ICJH
ZW5lcmljIl9zOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICB2YWx1ZS5zZXRTdHJpbmco
InR5cGUiX3MsIHR5cGUpOwpAQCAtMjUzLDExICs0MjYsMTA4IEBAIFN0cmluZyBUZXh0VHJhY2tD
dWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiBTdHJpbmcgVGV4dFRyYWNrQ3VlOjpkZWJ1Z1N0cmlu
ZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRleHQ7Ci0gICAgaWYgKGlzUmVuZGVyYWJsZSgpKQor
ICAgIGlmIChpczxWVFRDdWU+KHRoaXMpKQogICAgICAgICB0ZXh0ID0gdG9WVFRDdWUodGhpcykt
PnRleHQoKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygiMHgiLCBoZXgocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBpZD0iLCBpZCgpLCAiIGludGVydmFsPSIsIHN0YXJ0VGlt
ZSgpLCAiLS0+IiwgZW5kVGltZSgpLCAiIGN1ZT0iLCB0ZXh0LCAnKScpOwogfQogCitSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQoreworICAgIGlm
ICghbV9jdWVOb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2xvbmVk
RnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVudCgpKTsKKyAg
ICBtX2N1ZU5vZGUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudCk7CisKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBjbG9uZWRGcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgcmVtb3ZlUHNldWRvQXR0cmlidXRlcygqbm9k
ZSk7CisKKyAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQ7Cit9CisKK2Jvb2wgVGV4dFRyYWNrQ3Vl
Ojppc1JlbmRlcmFibGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1ZU5vZGUgJiYgbV9jdWVO
b2RlLT5maXJzdENoaWxkKCk7Cit9CisKK1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFRleHRUcmFj
a0N1ZTo6Z2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYsIGludCkKK3sKKyAgICBpZiAobV9k
aXNwbGF5VHJlZSAmJiAhbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRlKQorICAgICAgICByZXR1cm4g
bV9kaXNwbGF5VHJlZTsKKworICAgIHJlYnVpbGREaXNwbGF5VHJlZSgpOworCisgICAgcmV0dXJu
IG1fZGlzcGxheVRyZWU7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpyZW1vdmVEaXNwbGF5VHJl
ZSgpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlUcmVlKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBUaGUgZGlzcGxheSB0cmVlIGlzIG5ldmVyIGV4cG9zZWQgdG8gYXV0aG9yIHNjcmlwdHMgc28g
aXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBoZXJlLgorICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKCptX2Rpc3BsYXlUcmVlKTsKKyAg
ICBtX2Rpc3BsYXlUcmVlLT5yZW1vdmUoKTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnNldEZv
bnRTaXplKGludCBmb250U2l6ZSwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIGlmIChmb250U2l6ZSA9PSBtX2ZvbnRTaXplICYmIGltcG9ydGFudCA9PSBtX2ZvbnRTaXpl
SXNJbXBvcnRhbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlzcGxheVRyZWVOZWVkc1Vw
ZGF0ZSA9IHRydWU7CisgICAgbV9mb250U2l6ZUlzSW1wb3J0YW50ID0gaW1wb3J0YW50OworICAg
IG1fZm9udFNpemUgPSBmb250U2l6ZTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnJlYnVpbGRE
aXNwbGF5VHJlZSgpCit7CisgICAgaWYgKCFtX2N1ZU5vZGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3Bl
Rm9yUmVmZXJlbmNlVHJlZSgqbV9jdWVOb2RlKTsKKworICAgIGlmICghbV9kaXNwbGF5VHJlZSkg
eworICAgICAgICBtX2Rpc3BsYXlUcmVlID0gVGV4dFRyYWNrQ3VlQm94OjpjcmVhdGUob3duZXJE
b2N1bWVudCgpLCAqdGhpcyk7CisgICAgICAgIG1fZGlzcGxheVRyZWUtPnNldFBzZXVkbyhBdG9t
U3RyaW5nKCItd2Via2l0LWdlbmVyaWMtY3VlLXJvb3QiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIH0KKworICAgIG1fZGlzcGxheVRyZWUtPnJlbW92ZUNoaWxkcmVu
KCk7CisgICAgYXV0byBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShv
d25lckRvY3VtZW50KCkpOworICAgIG1fY3VlTm9kZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZy
YWdtZW50KTsKKyAgICBtX2Rpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChjbG9uZWRGcmFnbWVudCk7
CisKKyAgICBpZiAobV9mb250U2l6ZSAmJiBvd25lckRvY3VtZW50KCkucGFnZSgpKSB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQob3duZXJE
b2N1bWVudCgpLnBhZ2UoKS0+Y2FwdGlvblVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIDo6Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCd7Jyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGdldFByb3BlcnR5TmFtZVN0cmlu
ZyhDU1NQcm9wZXJ0eUZvbnRTaXplKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV9mb250U2l6ZSwgInB4IikpOworICAg
ICAgICBpZiAobV9mb250U2l6ZUlzSW1wb3J0YW50KQorICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgIWltcG9ydGFudCIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IjsgfSIpOworCisgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUo
SFRNTE5hbWVzOjpzdHlsZVRhZywgb3duZXJEb2N1bWVudCgpLCBmYWxzZSk7CisgICAgICAgIHN0
eWxlLT5zZXRUZXh0Q29udGVudChidWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBtX2Rpc3Bs
YXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgfQorCisgICAgaWYgKHRyYWNrKCkpIHsK
KyAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHN0eWxlU2hlZXRzID0gdHJhY2soKS0+c3R5bGVTaGVl
dHMoKSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NTdHJpbmcgOiAqc3R5bGVT
aGVldHMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHN0eWxlID0gSFRNTFN0eWxlRWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6c3R5bGVUYWcsIG1fZGlzcGxheVRyZWUtPmRvY3VtZW50KCksIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VGV4dENvbnRlbnQoY3NzU3RyaW5nKTsK
KyAgICAgICAgICAgICAgICBtX2Rpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRh
dGUgPSBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IGFlZGRiZDNkNzkxZmU4YzI1
MjkwOWE5NmIyNjNmZTIyODZiNzNmMjQuLmViYjQ1OTc1MWExNDcyYWM1ZmY3ODdkYTk0YWNmOWEz
MDI0YTBhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAt
MzQsMTcgKzM0LDQ0IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9NZWRp
YVRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0VHJhY2s7CitjbGFz
cyBUZXh0VHJhY2tDdWU7CiAKLWNsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKK2NsYXNz
IFRleHRUcmFja0N1ZUJveCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CisgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChUZXh0VHJhY2tDdWVCb3gpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VGV4
dFRyYWNrQ3VlQm94PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDdWUmIGN1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRUcmFja0N1ZUJveChk
b2N1bWVudCwgY3VlKSk7CisgICAgfQorCisgICAgVGV4dFRyYWNrQ3VlKiBnZXRDdWUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmKSB7
IH0KKworcHJvdGVjdGVkOgorICAgIFRleHRUcmFja0N1ZUJveChEb2N1bWVudCYsIFRleHRUcmFj
a0N1ZSYpOworICAgIH5UZXh0VHJhY2tDdWVCb3goKSB7IH0KKworcHJpdmF0ZToKKworICAgIFdl
YWtQdHI8VGV4dFRyYWNrQ3VlPiBtX2N1ZTsKK307CisKK2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGV4dFRyYWNrQ3VlPiB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2tDdWUpOwogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBjdWVTaGFkb3dQc2V1ZG9JZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
U3RyaW5nJiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGN1ZUJveFNoYWRvd1BzZXVkb0lkKCk7CisKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPFRleHRUcmFja0N1ZT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBEb2N1bWVudEZyYWdtZW50Jik7CiAKICAgICBUZXh0VHJh
Y2sqIHRyYWNrKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUcmFjayhUZXh0VHJhY2sqKTsKQEAgLTc1
LDkgKzEwMiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRXF1aXZhbGVudFN0YXJ0VGltZShj
b25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdDsKIAotICAgIGVudW0gQ3VlVHlwZSB7IERhdGEsIEdl
bmVyaWMsIFdlYlZUVCB9OwotICAgIHZpcnR1YWwgQ3VlVHlwZSBjdWVUeXBlKCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGVudW0gQ3VlVHlwZSB7IEdlbmVyaWMsIERhdGEsIENvbnZlcnRlZFRvV2ViVlRULCBX
ZWJWVFQgfTsKKyAgICB2aXJ0dWFsIEN1ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEN1
ZVR5cGU6OkdlbmVyaWM7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3Q7
CiAKICAgICBlbnVtIEN1ZU1hdGNoUnVsZXMgeyBNYXRjaEFsbEZpZWxkcywgSWdub3JlRHVyYXRp
b24gfTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFcXVhbChjb25zdCBUZXh0VHJhY2tDdWUmLCBDdWVN
YXRjaFJ1bGVzKSBjb25zdDsKQEAgLTg2LDEzICsxMTMsMjMgQEAgcHVibGljOgogICAgIHZvaWQg
d2lsbENoYW5nZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoKTsKIAorICAgIHZpcnR1
YWwgUmVmUHRyPFRleHRUcmFja0N1ZUJveD4gZ2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYs
IGludCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7CisKKyAgICB2aXJ0
dWFsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hUTUwoKTsKKwogICAgIFN0cmlu
ZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKICAgICBTdHJpbmcgZGVidWdTdHJpbmcoKSBjb25zdDsK
IAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJl
ZjsKIAorICAgIHZpcnR1YWwgdm9pZCByZWNhbGN1bGF0ZVN0eWxlcygpIHsgbV9kaXNwbGF5VHJl
ZU5lZWRzVXBkYXRlID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGb250U2l6ZShpbnQs
IGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZURpc3BsYXlUcmVlKGNvbnN0IE1lZGlhVGltZSYpIHsgfTsKKwogcHJvdGVjdGVkOgorICAgIFRl
eHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIERvY3VtZW50RnJhZ21lbnQmJik7CiAgICAgVGV4dFRy
YWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCk7CiAKICAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIHsg
cmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9CkBA
IC0xMTEsNiArMTQ4LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjdWVDb250ZW50
c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0OwogCisgICAgdm9pZCByZWJ1aWxkRGlz
cGxheVRyZWUoKTsKKwogICAgIFN0cmluZyBtX2lkOwogICAgIE1lZGlhVGltZSBtX3N0YXJ0VGlt
ZTsKICAgICBNZWRpYVRpbWUgbV9lbmRUaW1lOwpAQCAtMTIwLDggKzE1OSwxNSBAQCBwcml2YXRl
OgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi0gICAgYm9vbCBtX2lzQWN0aXZlIDogMTsKLSAgICBib29sIG1fcGF1c2VPbkV4aXQgOiAx
OworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2N1ZU5vZGU7CisgICAgUmVmUHRyPFRl
eHRUcmFja0N1ZUJveD4gbV9kaXNwbGF5VHJlZTsKKworICAgIGludCBtX2ZvbnRTaXplIHsgMCB9
OworICAgIGJvb2wgbV9mb250U2l6ZUlzSW1wb3J0YW50IHsgZmFsc2UgfTsKKworICAgIGJvb2wg
bV9pc0FjdGl2ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BhdXNlT25FeGl0IHsgZmFsc2UgfTsK
KyAgICBib29sIG1fZGlzcGxheVRyZWVOZWVkc1VwZGF0ZSB7IHRydWUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmlkbAppbmRleCA0NGZlMTY4YWFkNjU1ZDZhNzljNjY0YWRiMTVhMzg3MmExODg1MzI1Li5kNTRk
MDE1ZjVjMGUxYzJiMDNkNmM5MjE4OWE4ZTM5ZjAzZWE4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICszMCwxMCBAQAogICAgIEN1c3RvbVRv
SlNPYmplY3QsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgU2tpcFZUYWJsZVZhbGlk
YXRpb24sCisgICAgQ29uc3RydWN0b3IoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUs
IERvY3VtZW50RnJhZ21lbnQgY3VlTm9kZSksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAorICAgIENvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZz1HZW5l
cmljQ3VlQVBJLAorICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCiBdIGludGVyZmFj
ZSBUZXh0VHJhY2tDdWUgOiBFdmVudFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRl
eHRUcmFjayB0cmFjazsKIApAQCAtMzksNCArNDQsNiBAQAogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmVudGVyOwogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25leGl0OworCisg
ICAgW0VuYWJsZWRCeVNldHRpbmc9R2VuZXJpY0N1ZUFQSV0gRG9jdW1lbnRGcmFnbWVudCBnZXRD
dWVBc0hUTUwoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVHZW5lcmljLmNwcAppbmRleCAxNWRmYTIzMzg1OWRjYmFiMDc1ZjE0YWQ4NjJhMzY4MmMz
MDNiNjRlLi5jNGI2ZmQ5Y2Q1MzY1MDE2ODAzZjg1YmYxYzE3YjMxOTVkOTdhMjNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKQEAg
LTIyOSw3ICsyMjksNyBAQCBib29sIFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzRXF1YWwoY29uc3Qg
VGV4dFRyYWNrQ3VlJiBjdWUsIFRleHRUcmFja0N1ZTo6Q3VlTWF0YwogICAgIGlmICghVGV4dFRy
YWNrQ3VlOjppc0VxdWFsKGN1ZSwgbWF0Y2gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoY3VlLmN1ZVR5cGUoKSAhPSBUZXh0VHJhY2tDdWU6OkdlbmVyaWMpCisgICAgaWYgKGN1
ZS5jdWVUeXBlKCkgIT0gVGV4dFRyYWNrQ3VlOjpDb252ZXJ0ZWRUb1dlYlZUVCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGN1ZUNvbnRlbnRzTWF0Y2goY3VlKTsKQEAgLTI0
OSw3ICsyNDksNyBAQCBib29sIFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzT3JkZXJlZEJlZm9yZShj
b25zdCBUZXh0VHJhY2tDdWUqIHRoYXQpIGNvbnN0CiAgICAgaWYgKFZUVEN1ZTo6aXNPcmRlcmVk
QmVmb3JlKHRoYXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICh0aGF0LT5jdWVU
eXBlKCkgPT0gR2VuZXJpYyAmJiBzdGFydFRpbWUoKSA9PSB0aGF0LT5zdGFydFRpbWUoKSAmJiBl
bmRUaW1lKCkgPT0gdGhhdC0+ZW5kVGltZSgpKSB7CisgICAgaWYgKHRoYXQtPmN1ZVR5cGUoKSA9
PSBDb252ZXJ0ZWRUb1dlYlZUVCAmJiBzdGFydFRpbWUoKSA9PSB0aGF0LT5zdGFydFRpbWUoKSAm
JiBlbmRUaW1lKCkgPT0gdGhhdC0+ZW5kVGltZSgpKSB7CiAgICAgICAgIC8vIEZ1cnRoZXIgb3Jk
ZXIgZ2VuZXJpYyBjdWVzIGJ5IHRoZWlyIGNhbGN1bGF0ZWQgbGluZSB2YWx1ZS4KICAgICAgICAg
c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiB0aGlzUG9zaXRpb24gPSBnZXRQb3NpdGlvbkNvb3Jk
aW5hdGVzKCk7CiAgICAgICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gdGhhdFBvc2l0aW9u
ID0gdG9WVFRDdWUodGhhdCktPmdldFBvc2l0aW9uQ29vcmRpbmF0ZXMoKTsKQEAgLTI2MSwxNCAr
MjYxLDE0IEBAIGJvb2wgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNPcmRlcmVkQmVmb3JlKGNvbnN0
IFRleHRUcmFja0N1ZSogdGhhdCkgY29uc3QKIAogYm9vbCBUZXh0VHJhY2tDdWVHZW5lcmljOjpp
c1Bvc2l0aW9uZWRBYm92ZShjb25zdCBUZXh0VHJhY2tDdWUqIHRoYXQpIGNvbnN0CiB7Ci0gICAg
aWYgKHRoYXQtPmN1ZVR5cGUoKSA9PSBHZW5lcmljICYmIHN0YXJ0VGltZSgpID09IHRoYXQtPnN0
YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0aGF0LT5lbmRUaW1lKCkpIHsKKyAgICBpZiAodGhh
dC0+Y3VlVHlwZSgpID09IENvbnZlcnRlZFRvV2ViVlRUICYmIHN0YXJ0VGltZSgpID09IHRoYXQt
PnN0YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0aGF0LT5lbmRUaW1lKCkpIHsKICAgICAgICAg
Ly8gRnVydGhlciBvcmRlciBnZW5lcmljIGN1ZXMgYnkgdGhlaXIgY2FsY3VsYXRlZCBsaW5lIHZh
bHVlLgogICAgICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IHRoaXNQb3NpdGlvbiA9IGdl
dFBvc2l0aW9uQ29vcmRpbmF0ZXMoKTsKICAgICAgICAgc3RkOjpwYWlyPGRvdWJsZSwgZG91Ymxl
PiB0aGF0UG9zaXRpb24gPSB0b1ZUVEN1ZSh0aGF0KS0+Z2V0UG9zaXRpb25Db29yZGluYXRlcygp
OwogICAgICAgICByZXR1cm4gdGhpc1Bvc2l0aW9uLnNlY29uZCA+IHRoYXRQb3NpdGlvbi5zZWNv
bmQgfHwgKHRoaXNQb3NpdGlvbi5zZWNvbmQgPT0gdGhhdFBvc2l0aW9uLnNlY29uZCAmJiB0aGlz
UG9zaXRpb24uZmlyc3QgPCB0aGF0UG9zaXRpb24uZmlyc3QpOwogICAgIH0KICAgICAKLSAgICBp
ZiAodGhhdC0+Y3VlVHlwZSgpID09IEdlbmVyaWMpCisgICAgaWYgKHRoYXQtPmN1ZVR5cGUoKSA9
PSBDb252ZXJ0ZWRUb1dlYlZUVCkKICAgICAgICAgcmV0dXJuIHN0YXJ0VGltZSgpID4gdGhhdC0+
c3RhcnRUaW1lKCk7CiAgICAgCiAgICAgcmV0dXJuIFZUVEN1ZTo6aXNPcmRlcmVkQmVmb3JlKHRo
YXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVH
ZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMu
aAppbmRleCAyY2Q3MTAwY2UxNWFhM2NhNjFiNWZjYjgzNTUwMDQ3ZTA5MjY5YWVhLi5mZDBjYjNl
YjMxMThjYzNmMzNjOWI2ODg2YWEwZjYyYTA2NGYxZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaApAQCAtODIsNyArODIsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY3VlQ29udGVudHNNYXRjaChjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGRvZXNFeHRlbmRDdWUoY29uc3QgVGV4dFRyYWNrQ3VlJikgY29u
c3QgZmluYWw7CiAKLSAgICBDdWVUeXBlIGN1ZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBH
ZW5lcmljOyB9CisgICAgQ3VlVHlwZSBjdWVUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29u
dmVydGVkVG9XZWJWVFQ7IH0KIAogICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwogICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0cnVjdCBMb2dBcmd1
bWVudDxXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljPiB7CiB9CiAKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYykKLXN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkgeyByZXR1cm4gY3VlLmN1
ZVR5cGUoKSA9PSBXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OkdlbmVyaWM7IH0KK3N0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkgeyByZXR1cm4gY3VlLmN1
ZVR5cGUoKSA9PSBXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OkNvbnZlcnRlZFRvV2ViVlRUOyB9CiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCmluZGV4IDllMDJjMjZjMDgzMzkxMmM5MTEzNzY1OWZlN2JiZDdlOGYwZjNj
MGIuLjhkZmViZDI1YzM0ZDYwMzM2MWY0ZDc0YmFkNzczYmVmZDY5OWE5NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEzIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVHZW5lcmljLmgiCiAjaW5j
bHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogI2luY2x1ZGUgIlZUVFJlZ2lvbkxpc3QuaCIKICNp
bmNsdWRlICJWVFRTY2FubmVyLmgiCkBAIC01OSw4ICs2MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFZUVEN1ZUJveCk7CiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoVlRUQ3VlKTsKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChWVFRDdWVCb3gpOwogCiAvLyBUaGlzIGNvbnN0YW50IHNob3VsZCBjb3JyZXNwb25kIHdpdGgg
dGhlIHBlcmNlbnRhZ2UgcmV0dXJuZWQgYnkgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlv
bkZvbnRTaXplU2NhbGVBbmRJbXBvcnRhbmNlLgogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgREVG
QVVMVENBUFRJT05GT05UU0laRVBFUkNFTlRBR0UgPSA1OwpAQCAtMTI2LDMxICsxMjcsMTkgQEAg
c3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKCkKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWY8VlRUQ3VlQm94PiBWVFRDdWVCb3g6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZUVEN1ZSYgY3VlKQotewotICAgIFZUVEN1ZUJv
eCYgY3VlQm94ID0gKm5ldyBWVFRDdWVCb3goZG9jdW1lbnQsIGN1ZSk7Ci0gICAgY3VlQm94LnNl
dFBzZXVkbyhWVFRDdWVCb3g6OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKCkpOwotICAgIHJldHVy
biBhZG9wdFJlZihjdWVCb3gpOwotfQotCiBWVFRDdWVCb3g6OlZUVEN1ZUJveChEb2N1bWVudCYg
ZG9jdW1lbnQsIFZUVEN1ZSYgY3VlKQotICAgIDogSFRNTEVsZW1lbnQoZGl2VGFnLCBkb2N1bWVu
dCkKLSAgICAsIG1fY3VlKG1ha2VXZWFrUHRyKGN1ZSkpCi17Ci0gICAgc2V0UHNldWRvKHZ0dEN1
ZUJveFNoYWRvd1BzZXVkb0lkKCkpOwotfQotCi1WVFRDdWUqIFZUVEN1ZUJveDo6Z2V0Q3VlKCkg
Y29uc3QKKyAgICA6IFRleHRUcmFja0N1ZUJveChkb2N1bWVudCwgY3VlKQogewotICAgIHJldHVy
biBtX2N1ZS5nZXQoKTsKIH0KIAogdm9pZCBWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyhj
b25zdCBJbnRTaXplJiB2aWRlb1NpemUpCiB7Ci0gICAgaWYgKCFtX2N1ZSkKKyAgICBhdXRvIHRl
eHRUcmFja0N1ZSA9IGdldEN1ZSgpOworICAgIGlmICghdGV4dFRyYWNrQ3VlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGN1ZSA9IG1ha2VSZWYoKm1fY3VlKTsKKyAgICBBU1NFUlQoaXM8
VlRUQ3VlPih0ZXh0VHJhY2tDdWUpIHx8IGlzPFRleHRUcmFja0N1ZUdlbmVyaWM+KHRleHRUcmFj
a0N1ZSkpOworICAgIGF1dG8gY3VlID0gbWFrZVJlZigqdG9WVFRDdWUodGV4dFRyYWNrQ3VlKSk7
CiAKICAgICAvLyBGSVhNRTogQXBwbHkgYWxsIHRoZSBpbml0aWFsIENTUyBwb3NpdGlvbmluZyBw
cm9wZXJ0aWVzLiBodHRwOi8vd2tiLnVnLzc5OTE2CiAgICAgaWYgKCFjdWUtPnJlZ2lvbklkKCku
aXNFbXB0eSgpKSB7CkBAIC0yNDIsMTIgKzIzMSw2IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNT
U1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIGN1ZS0+ZWxlbWVudCgp
LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvdywgQ1NTVmFsdWVWaXNp
YmxlKTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgVlRUQ3VlQm94Ojp2dHRDdWVCb3hTaGFkb3dQ
c2V1ZG9JZCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
ZGlzcGxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4g
dHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7Ci19Ci0KIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJWVFRDdWU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CkBAIC0yNTUsMTIgKzIzOCw2
IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotY29uc3QgQXRvbVN0cmluZyYgVlRUQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVk
b0lkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY3Vl
QmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkt
YmFja2Ryb3AiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJu
IGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7Ci19Ci0KIFJlZjxWVFRDdWU+IFZUVEN1ZTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFdlYlZUVEN1ZURhdGEm
IGRhdGEpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVlRUQ3VlKGNvbnRleHQsIGRhdGEp
KTsKQEAgLTg2NywxMSArODQ0LDExIEBAIHZvaWQgVlRUQ3VlOjp1cGRhdGVEaXNwbGF5VHJlZShj
b25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICBtX2N1ZUhpZ2hsaWdodEJveC0+YXBwZW5k
Q2hpbGQoKnJlZmVyZW5jZVRyZWUpOwogfQogCi1WVFRDdWVCb3gmIFZUVEN1ZTo6Z2V0RGlzcGxh
eVRyZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBpbnQgZm9udFNpemUpCitSZWZQdHI8VGV4
dFRyYWNrQ3VlQm94PiBWVFRDdWU6OmdldERpc3BsYXlUcmVlKGNvbnN0IEludFNpemUmIHZpZGVv
U2l6ZSwgaW50IGZvbnRTaXplKQogewogICAgIFJlZjxWVFRDdWVCb3g+IGRpc3BsYXlUcmVlID0g
ZGlzcGxheVRyZWVJbnRlcm5hbCgpOwogICAgIGlmICghbV9kaXNwbGF5VHJlZVNob3VsZENoYW5n
ZSB8fCAhdHJhY2soKS0+aXNSZW5kZXJlZCgpKQotICAgICAgICByZXR1cm4gZGlzcGxheVRyZWUu
Z2V0KCk7CisgICAgICAgIHJldHVybiBkaXNwbGF5VHJlZTsKIAogICAgIC8vIDEwLjEgLSAxMC4x
MAogICAgIGNhbGN1bGF0ZURpc3BsYXlQYXJhbWV0ZXJzKCk7CkBAIC05MTcsMTUgKzg5NCwyOCBA
QCBWVFRDdWVCb3gmIFZUVEN1ZTo6Z2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9T
aXplLCBpbnQgZm9udFNpemUpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9mb250U2l6
ZSkKKyAgICAgICAgZGlzcGxheVRyZWUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250U2l6ZSwgbV9mb250U2l6ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCwgbV9mb250
U2l6ZUlzSW1wb3J0YW50KTsKKwogICAgIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UgPSBmYWxz
ZTsKIAorICAgIGlmICh0cmFjaygpKSB7CisgICAgICAgIGlmIChhdXRvKiByZWdpb25zID0gdHJh
Y2soKS0+cmVnaW9ucygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byByZWdpb24gPSByZWdpb25z
LT5nZXRSZWdpb25CeUlkKG1fcmVnaW9uSWQpKQorICAgICAgICAgICAgICAgIHJlZ2lvbi0+Y3Vl
U3R5bGVDaGFuZ2VkKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyAxMC4xNS4gTGV0IGN1
ZSdzIHRleHQgdHJhY2sgY3VlIGRpc3BsYXkgc3RhdGUgaGF2ZSB0aGUgQ1NTIGJveGVzIGluCiAg
ICAgLy8gYm94ZXMuCi0gICAgcmV0dXJuIGRpc3BsYXlUcmVlLmdldCgpOworICAgIHJldHVybiBk
aXNwbGF5VHJlZTsKIH0KIAogdm9pZCBWVFRDdWU6OnJlbW92ZURpc3BsYXlUcmVlKCkKIHsKKyAg
ICBpZiAoIWhhc0Rpc3BsYXlUcmVlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFRoZSBy
ZWdpb24gbmVlZHMgdG8gYmUgaW5mb3JtZWQgYWJvdXQgdGhlIGN1ZSByZW1vdmFsLgogICAgIGlm
IChtX25vdGlmeVJlZ2lvbiAmJiB0cmFjaygpKSB7CiAgICAgICAgIGlmIChWVFRSZWdpb25MaXN0
KiByZWdpb25zID0gdHJhY2soKS0+cmVnaW9ucygpKSB7CkBAIC05MzYsOSArOTI2LDYgQEAgdm9p
ZCBWVFRDdWU6OnJlbW92ZURpc3BsYXlUcmVlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
ICghaGFzRGlzcGxheVRyZWUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gVGhlIGRpc3Bs
YXkgdHJlZSBpcyBuZXZlciBleHBvc2VkIHRvIGF1dGhvciBzY3JpcHRzIHNvIGl0J3Mgc2FmZSB0
byBkaXNwYXRjaCBldmVudHMgaGVyZS4KICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50
QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZShkaXNwbGF5VHJlZUludGVybmFsKCkpOwogICAgIGRp
c3BsYXlUcmVlSW50ZXJuYWwoKS5yZW1vdmUoKTsKQEAgLTEyNDgsMTEgKzEyMzUsMTIgQEAgYm9v
bCBWVFRDdWU6OmRvZXNFeHRlbmRDdWUoY29uc3QgVGV4dFRyYWNrQ3VlJiBjdWUpIGNvbnN0CiAg
ICAgCiB2b2lkIFZUVEN1ZTo6c2V0Rm9udFNpemUoaW50IGZvbnRTaXplLCBjb25zdCBJbnRTaXpl
JiwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgaWYgKCFoYXNEaXNwbGF5VHJlZSgpIHx8ICFmb250
U2l6ZSkKKyAgICBpZiAoZm9udFNpemUgPT0gbV9mb250U2l6ZSAmJiBpbXBvcnRhbnQgPT0gbV9m
b250U2l6ZUlzSW1wb3J0YW50KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Rpc3BsYXlUcmVl
U2hvdWxkQ2hhbmdlID0gdHJ1ZTsKLSAgICBkaXNwbGF5VHJlZUludGVybmFsKCkuc2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBmb250U2l6ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QWCwgaW1wb3J0YW50KTsKKyAgICBtX2ZvbnRTaXplSXNJbXBvcnRhbnQgPSBp
bXBvcnRhbnQ7CisgICAgbV9mb250U2l6ZSA9IGZvbnRTaXplOwogfQogCiBWVFRDdWUqIHRvVlRU
Q3VlKFRleHRUcmFja0N1ZSogY3VlKQpAQCAtMTI2Miw3ICsxMjUwLDcgQEAgVlRUQ3VlKiB0b1ZU
VEN1ZShUZXh0VHJhY2tDdWUqIGN1ZSkKIAogY29uc3QgVlRUQ3VlKiB0b1ZUVEN1ZShjb25zdCBU
ZXh0VHJhY2tDdWUqIGN1ZSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihjdWUtPmlzUmVuZGVyYWJsZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGlzPFZUVEN1ZT4oY3VlKSB8fCBpczxUZXh0VHJhY2tDdWVHZW5lcmljPihj
dWUpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVlRUQ3VlKj4oY3VlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKaW5kZXggMWJmN2Y1NTNhMjY4MDRhOGY4NWIwYjI1
NTk4M2VjMjMzNzMyMmU3MS4uNDUxNTE0MjJkNDhjYWViODJiNjdhMTJkODllZmU4NjQ1Nzk4Zjg0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCkBAIC00OSwxNSArNDksMTYgQEAgY2xh
c3MgV2ViVlRUQ3VlRGF0YTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1j
bGFzcyBWVFRDdWVCb3ggOiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgVlRUQ3VlQm94IDog
cHVibGljIFRleHRUcmFja0N1ZUJveCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChWVFRD
dWVCb3gpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VlRUQ3VlQm94PiBjcmVhdGUoRG9jdW1l
bnQmLCBWVFRDdWUmKTsKKyAgICBzdGF0aWMgUmVmPFZUVEN1ZUJveD4gY3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgVlRUQ3VlJiBjdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWVFRDdWVCb3goZG9jdW1lbnQsIGN1ZSkpOworICAgIH0KIAotICAgIFZUVEN1ZSogZ2V0
Q3VlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5Q1NTUHJvcGVydGllcyhjb25zdCBJ
bnRTaXplJiB2aWRlb1NpemUpOworICAgIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IElu
dFNpemUmKSBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB2dHRDdWVC
b3hTaGFkb3dQc2V1ZG9JZCgpOwogICAgIHZvaWQgc2V0Rm9udFNpemVGcm9tQ2FwdGlvblVzZXJQ
cmVmcyhpbnQgZm9udFNpemUpIHsgbV9mb250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZzID0gZm9u
dFNpemU7IH0KIAogcHJvdGVjdGVkOgpAQCAtNzQsNyArNzUsNyBAQCBwcml2YXRlOgogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIFZUVEN1ZSA6IHB1YmxpYyBUZXh0
VHJhY2tDdWUsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxWVFRDdWU+IHsKK2NsYXNzIFZUVEN1ZSA6
IHB1YmxpYyBUZXh0VHJhY2tDdWUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVlRUQ3Vl
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFZUVEN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50KQpAQCAtODksOCArOTAsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFZU
VEN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBXZWJWVFRDdWVEYXRh
Jik7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY3VlQmFja2Ryb3BTaGFkb3dQc2V1
ZG9JZCgpOwotCiAgICAgdmlydHVhbCB+VlRUQ3VlKCk7CiAKICAgICBlbnVtIEF1dG9LZXl3b3Jk
IHsKQEAgLTEyMyw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBjdWVTZXR0
aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KICAgICB2b2lkIHNldEN1ZVNldHRp
bmdzKGNvbnN0IFN0cmluZyYpOwogCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1
ZUFzSFRNTCgpOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hUTUwoKSBm
aW5hbDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ3VlUmVuZGVyaW5nVHJl
ZSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiByZWdpb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
aW9uSWQ7IH0KQEAgLTEzMywxMSArMTMyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzQWN0
aXZlKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBoYXNEaXNwbGF5VHJlZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGxheVRyZWU7IH0KLSAgICBWVFRDdWVCb3gmIGdldERpc3BsYXlUcmVlKGNv
bnN0IEludFNpemUmIHZpZGVvU2l6ZSwgaW50IGZvbnRTaXplKTsKKyAgICBSZWZQdHI8VGV4dFRy
YWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZShjb25zdCBJbnRTaXplJiwgaW50KSBmaW5hbDsKICAg
ICBIVE1MU3BhbkVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiAqbV9jdWVIaWdobGln
aHRCb3g7IH0KIAotICAgIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUoY29uc3QgTWVkaWFUaW1lJik7
Ci0gICAgdm9pZCByZW1vdmVEaXNwbGF5VHJlZSgpOworICAgIHZvaWQgdXBkYXRlRGlzcGxheVRy
ZWUoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVEaXNwbGF5VHJlZSgp
IGZpbmFsOwogICAgIHZvaWQgbWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiwg
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAKICAgICBpbnQgY2FsY3VsYXRl
Q29tcHV0ZWRMaW5lUG9zaXRpb24oKTsKQEAgLTE2OCwxNCArMTY3LDE1IEBAIHB1YmxpYzoKICAg
ICB9OwogICAgIEN1ZUFsaWdubWVudCBnZXRBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX2N1
ZUFsaWdubWVudDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldEZvbnRTaXplKGludCwgY29uc3Qg
SW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KTsKKyAgICB2b2lkIHJlY2FsY3VsYXRlU3R5bGVzKCkg
ZmluYWwgeyBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0
Rm9udFNpemUoaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBpbXBvcnRhbnQpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFRleHRUcmFja0N1ZSYsIEN1ZU1hdGNoUnVsZXMpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY3VlQ29udGVudHNNYXRjaChjb25zdCBUZXh0VHJhY2tD
dWUmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGRvZXNFeHRlbmRDdWUoY29uc3QgVGV4dFRy
YWNrQ3VlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBDdWVUeXBlIGN1ZVR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBXZWJWVFQ7IH0KLSAgICBib29sIGlzUmVuZGVyYWJsZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzUmVuZGVyYWJsZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICFtX2NvbnRlbnQuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIGRpZENoYW5n
ZSgpIG92ZXJyaWRlOwogCkBAIC0yMzcsNiArMjM3LDkgQEAgcHJpdmF0ZToKIAogICAgIE1lZGlh
VGltZSBtX29yaWdpbmFsU3RhcnRUaW1lOwogCisgICAgaW50IG1fZm9udFNpemUgeyAwIH07Cisg
ICAgYm9vbCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQgeyBmYWxzZSB9OworCiAgICAgYm9vbCBtX3Nu
YXBUb0xpbmVzIDogMTsKICAgICBib29sIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UgOiAxOwog
ICAgIGJvb2wgbV9ub3RpZnlSZWdpb24gOiAxOwpAQCAtMjYzLDcgKzI2Niw3IEBAIHN0cnVjdCBM
b2dBcmd1bWVudDxXZWJDb3JlOjpWVFRDdWU+IHsKIH0gLy8gbmFtZXNwYWNlIFdURgogCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZUVEN1ZSkKLSAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlJiBjdWUpIHsgcmV0dXJuIGN1ZS5p
c1JlbmRlcmFibGUoKTsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRleHRU
cmFja0N1ZSYgY3VlKSB7IHJldHVybiBjdWUuY3VlVHlwZSgpID09IFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6V2ViVlRUOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCmluZGV4IDc2MDcyNDE3ODI5NmRm
MDI2ZjQwYmNkYTgyN2Y3OGQ2YWI3NTNiYWEuLmZlMDM5Y2QyZjBmNGU4ZDQ5ZmQyNDEyZDg0ZGEw
NmU3M2NiMjNlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVn
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAKQEAg
LTI4MSw3ICsyODEsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBWVFRSZWdpb246OnRleHRUcmFja1Jl
Z2lvblNoYWRvd1BzZXVkb0lkKCkKICAgICByZXR1cm4gdHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9J
ZDsKIH0KIAotdm9pZCBWVFRSZWdpb246OmFwcGVuZFRleHRUcmFja0N1ZUJveChSZWY8VlRUQ3Vl
Qm94PiYmIGRpc3BsYXlCb3gpCit2b2lkIFZUVFJlZ2lvbjo6YXBwZW5kVGV4dFRyYWNrQ3VlQm94
KFJlZjxUZXh0VHJhY2tDdWVCb3g+JiYgZGlzcGxheUJveCkKIHsKICAgICBBU1NFUlQobV9jdWVD
b250YWluZXIpOwogCkBAIC0zNDIsOSArMzQyLDEzIEBAIEhUTUxEaXZFbGVtZW50JiBWVFRSZWdp
b246OmdldERpc3BsYXlUcmVlKCkKIHsKICAgICBpZiAoIW1fcmVnaW9uRGlzcGxheVRyZWUpIHsK
ICAgICAgICAgbV9yZWdpb25EaXNwbGF5VHJlZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG93
bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICAgICAgcHJl
cGFyZVJlZ2lvbkRpc3BsYXlUcmVlKCk7CisgICAgICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNl
dFBzZXVkbyh0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgbV9yZWNh
bGN1bGF0ZVN0eWxlcyA9IHRydWU7CiAgICAgfQogCisgICAgaWYgKG1fcmVjYWxjdWxhdGVTdHls
ZXMpCisgICAgICAgIHByZXBhcmVSZWdpb25EaXNwbGF5VHJlZSgpOworCiAgICAgcmV0dXJuICpt
X3JlZ2lvbkRpc3BsYXlUcmVlOwogfQogCkBAIC0zODMsMTQgKzM4NywxNiBAQCB2b2lkIFZUVFJl
Z2lvbjo6cHJlcGFyZVJlZ2lvbkRpc3BsYXlUcmVlKCkKIAogICAgIC8vIFRoZSBjdWUgY29udGFp
bmVyIGlzIHVzZWQgdG8gd3JhcCB0aGUgY3VlcyBhbmQgaXQgaXMgdGhlIG9iamVjdCB3aGljaCBp
cwogICAgIC8vIGdyYWR1YWxseSBzY3JvbGxlZCBvdXQgYXMgbXVsdGlwbGUgY3VlcyBhcmUgYXBw
ZW5kZWQgdG8gdGhlIHJlZ2lvbi4KLSAgICBtX2N1ZUNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsK
KyAgICBpZiAoIW1fY3VlQ29udGFpbmVyKSB7CisgICAgICAgIG1fY3VlQ29udGFpbmVyID0gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkpOworICAgICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0UHNldWRvKHRleHRUcmFja0N1
ZUNvbnRhaW5lclNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVl
LT5hcHBlbmRDaGlsZCgqbV9jdWVDb250YWluZXIpOworICAgIH0KICAgICBtX2N1ZUNvbnRhaW5l
ci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgMC4wZiwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7CiAKLSAgICBtX2N1ZUNvbnRhaW5lci0+c2V0UHNldWRvKHRleHRU
cmFja0N1ZUNvbnRhaW5lclNoYWRvd1BzZXVkb0lkKCkpOwotICAgIG1fcmVnaW9uRGlzcGxheVRy
ZWUtPmFwcGVuZENoaWxkKCptX2N1ZUNvbnRhaW5lcik7Ci0KICAgICAvLyA3LjUgRXZlcnkgV2Vi
VlRUIHJlZ2lvbiBvYmplY3QgaXMgaW5pdGlhbGlzZWQgd2l0aCB0aGUgZm9sbG93aW5nIENTUwot
ICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldFBzZXVkbyh0ZXh0VHJhY2tSZWdpb25TaGFkb3dQ
c2V1ZG9JZCgpKTsKKworICAgIG1fcmVjYWxjdWxhdGVTdHlsZXMgPSBmYWxzZTsKIH0KIAogdm9p
ZCBWVFRSZWdpb246OnN0YXJ0VGltZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9u
LmgKaW5kZXggNmZjYzRmMzM5MTNlMjY0Yjg0YzJiZjZiYzRmZjZiZjJjYzczMmVjYi4uZDY3NjJm
YzI3MjUxOWRiMDc0Y2E0YjQ5MTcxYjIwNGI1OTc3YzlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5oCkBAIC04OCwxMCArODgsMTIgQEAgcHVibGljOgogCiAgICAgSFRNTERp
dkVsZW1lbnQmIGdldERpc3BsYXlUcmVlKCk7CiAgICAgCi0gICAgdm9pZCBhcHBlbmRUZXh0VHJh
Y2tDdWVCb3goUmVmPFZUVEN1ZUJveD4mJik7CisgICAgdm9pZCBhcHBlbmRUZXh0VHJhY2tDdWVC
b3goUmVmPFRleHRUcmFja0N1ZUJveD4mJik7CiAgICAgdm9pZCBkaXNwbGF5TGFzdFRleHRUcmFj
a0N1ZUJveCgpOwogICAgIHZvaWQgd2lsbFJlbW92ZVRleHRUcmFja0N1ZUJveChWVFRDdWVCb3gq
KTsKIAorICAgIHZvaWQgY3VlU3R5bGVDaGFuZ2VkKCkgeyBtX3JlY2FsY3VsYXRlU3R5bGVzID0g
dHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIFZUVFJlZ2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik7CiAKQEAgLTE1MSw2ICsxNTMsOCBAQCBwcml2YXRlOgogICAgIC8vIGN1cnJlbnRseSBpdCBp
cyB1c2VkIGFsc28gZm9yIG5vbi1zY3JvbGxpbmcgcmVnaW9ucyB0byB1c2UgYSBzaW5nbGUKICAg
ICAvLyBjb2RlIHBhdGguCiAgICAgVGltZXIgbV9zY3JvbGxUaW1lcjsKKworICAgIGJvb2wgbV9y
ZWNhbGN1bGF0ZVN0eWxlcyB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKaW5kZXggNjQ3ZWU1NjQ0ODhjNDlhM2UwNmIyZmJkNDQxNzNlYjZiYTE2M2FkOS4u
OGJkY2M3MDMwYTljZTQ5NWUzZTM5YzEyYjk4MjAwZWY5NjRjZmYxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAg
LTU4Nyw3ICs1ODcsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKICAgICBTdHJpbmcgd2luZG93Q29ybmVy
UmFkaXVzID0gd2luZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpOwogICAgIGlmICghd2luZG93
Q29sb3IuaXNFbXB0eSgpIHx8ICF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZExpdGVyYWwoIiA6OiIpOwotICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVlRUQ3VlOjpjdWVCYWNrZHJv
cFNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5h
cHBlbmQoVGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkpOwogICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKICAgICAgICAgCiAgICAg
ICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1s
CmluZGV4IGM3MzBkYjc4ZmQ1ZjkyY2RhMzI3MDVkODY2YjcwMTYzOWFmYmQyNjAuLmVlZTMxZjQ1
MWJiMzEwYmE5Zjg5NzNiMGNkNTZkZGVhMmQ1Y2Y0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwKQEAgLTMxNyw2ICszMTcsOSBAQCBzaG91bGREaXNwbGF5Q2FwdGlvbnM6CiBzaG91bGRE
aXNwbGF5VGV4dERlc2NyaXB0aW9uczoKICAgaW5pdGlhbDogZmFsc2UKICAgY29uZGl0aW9uYWw6
IFZJREVPX1RSQUNLCitnZW5lcmljQ3VlQVBJRW5hYmxlZDoKKyAgICBpbml0aWFsOiBmYWxzZQor
ICAgIGNvbmRpdGlvbmFsOiBWSURFT19UUkFDSwogc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVk
OgogICBpbml0aWFsOiBmYWxzZQogc2Nyb2xsaW5nVHJlZUluY2x1ZGVzRnJhbWVzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAppbmRleCBmYzY4NTEwOGZhYmYxYmI0
ZGMyZjc2NDVkYTE4NzA4YTdhYjdjNjI0Li44MTAzNWVmNDc2ZDEwYzE4NDQ5MzgwOGM4YjQ3MTBj
ZDQ0ODlkNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRU
Q3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcApA
QCAtNDMsOCArNDMsMTAgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlclZUVEN1
ZSk7CiAKIFJlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKLSAgICAsIG1fY3VlKGVsZW1lbnQuZ2V0Q3VlKCkpCisgICAgLCBtX2N1ZShkb3du
Y2FzdDxWVFRDdWU+KGVsZW1lbnQuZ2V0Q3VlKCkpKQogeworICAgIEFTU0VSVChtX2N1ZSk7Cisg
ICAgQVNTRVJUKGlzPFZUVEN1ZT4obV9jdWUpKTsKIH0KIAogdm9pZCBSZW5kZXJWVFRDdWU6Omxh
eW91dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55
YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCAyNTli
YTcyMmExZTIwMjNhODFlZDlkZjY0YjIyYTc5ZTg4OTU0ODE1Li40ODBhNzY4OTA1ZTBjM2NmYTc3
MWY4YTliYTg3MTUxNjZhY2JmZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKQEAgLTE0NTcsNiArMTQ1NywxNSBAQCBDU1NTaGFkb3dQYXJ0c0VuYWJsZWQ6CiAg
IGNhdGVnb3J5OiBleHBlcmltZW50YWwKICAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMKIAorR2VuZXJpY0N1ZUFQSUVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVs
dFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShWSURFT19UUkFDSykKKyAgaHVtYW5S
ZWFkYWJsZU5hbWU6ICJHZW5lcmljIFRleHQgVHJhY2sgQ3VlIEFQSSIKKyAgaHVtYW5SZWFkYWJs
ZURlc2NyaXB0aW9uOiAiRW5hYmxlIEdlbmVyaWMgVGV4dCBUcmFjayBDdWUgQVBJIgorICBjYXRl
Z29yeTogZXhwZXJpbWVudGFsCisgIHdlYmNvcmVOYW1lOiBnZW5lcmljQ3VlQVBJRW5hYmxlZAor
CiAjIEZvciBpbnRlcm5hbCBmZWF0dXJlczoKICMgVGhlIHR5cGUgc2hvdWxkIGJlIGJvb2xlYW4u
CiAjIFlvdSBtdXN0IHByb3ZpZGUgYSBodW1hblJlYWRhYmxlTmFtZSBhbmQgaHVtYW5SZWFkYWJs
ZURlc2NyaXB0aW9uIGZvciBhbGwgZGVidWcgZmVhdHVyZXMuIFRoZXkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOTc2ZWYy
NjkyN2Y3YzczZDA0MjRjNTFkYWQxYmM4MWRhMzMxNTJmLi40ODUxOTgzNmIxY2QxMzI5YWIyODNh
NTdkZjE1NGYxMjJmZjA5N2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMTAtMzAgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVy
aW1lbnRhbCBUZXh0VHJhY2tDdWUgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDM2NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1Njc1MTcy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVk
aWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1hZGRjdWUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFk
ZGN1ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4
dHRyYWNrY3VlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3Bs
YXljdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0dHJh
Y2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMTktMTAtMjUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYlByb2Nlc3Mgc2hvdWxkIHVucmVnaXN0ZXIgaXRzIGludGVyZXN0
IGZvciBhIFNXU2VydmVyUmVnaXN0cmF0aW9uIHdoZW4gYWxsIGl0cyBjb3JyZXNwb25kaW5nIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zIGFyZSBkZXN0cm95ZWQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tj
dWUtYWRkY3VlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmUxYTdlOTRiM2U4NWY4YjRmMWU0
MzIxNjEwMmVkMmUzMDQ5NjY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1hZGRjdWUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNiBAQAorCisKK1BBU1Mgc2V0dXAgCitQQVNTIHRyYWNrLmFkZEN1ZSgpIGFkZHMgdG8g
dHJhY2suY3VlcyAKK1BBU1MgY3VlIG9yZGVyIHNob3VsZCBjaGFuZ2Ugd2hlbiBzdGFydCB0aW1l
IGlzIGNoYW5nZWQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0
cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxZjQy
OThjZWQ3ODdhZWM3OGU0MzA0OTYwNGI0NGU3OGMxYmI1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS5o
dG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhZG9jdHlwZSBodG1sPgorPHRpdGxlPlRleHRUcmFja0N1
ZSBhZGRjdWU8L3RpdGxlPgorPGRpdj48L2Rpdj4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uL21l
ZGlhLWNvbnRyb2xzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtZmlsZS5q
cz48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQodHJ1ZSk7CisKK2Z1bmN0aW9uIGNy
ZWF0ZVZhbGlkQ3VlRnJhZ21lbnQodGV4dCkKK3sKKyAgICBsZXQgY3VlTm9kZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBjdWVOb2RlLnNldEF0dHJpYnV0ZSgnY3VlJywg
JycpOworICAgIGN1ZU5vZGUuaW5uZXJUZXh0ID0gdGV4dDsKKworICAgIGxldCBiYWNrZ3JvdW5k
Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGJhY2tncm91bmROb2Rl
LnNldEF0dHJpYnV0ZSgnY3VlYmFja2dyb3VuZCcsICcnKTsKKyAgICBiYWNrZ3JvdW5kTm9kZS5h
cHBlbmRDaGlsZChjdWVOb2RlKTsKKworICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOworICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmROb2Rl
KTsKKworICAgIHJldHVybiBmcmFnbWVudDsKK30KKwordGVzdCh0ZXN0ID0+IHsKKyAgICB3aW5k
b3cudmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpOworICAgIHZpZGVvLmNv
bnRyb2xzID0gdHJ1ZTsKKworICAgIHdpbmRvdy50cmFjayA9IHZpZGVvLmFkZFRleHRUcmFjaygn
c3VidGl0bGVzJyk7CisgICAgdHJhY2suZGVmYXVsdCA9IHRydWU7CisgICAgdHJhY2subW9kZSA9
ICdzaG93aW5nJzsKKworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW8pOworfSwg
J3NldHVwJyk7CisKK3Rlc3QodGVzdCA9PiB7CisgICAgbGV0IGN1ZTEgPSBuZXcgVGV4dFRyYWNr
Q3VlKDAsIDEsIGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoJ0ZpcnN0IGN1ZScpKTsKKyAgICBjdWUx
LmlkID0gIm9uZSI7CisgICAgdHJhY2suYWRkQ3VlKGN1ZTEpOworICAgIGFzc2VydF9lcXVhbHMo
dHJhY2suY3Vlcy5sZW5ndGgsIDEsICdvbmx5IG9uZSBjdWUnKTsKKworICAgIGxldCBjdWUyID0g
bmV3IFRleHRUcmFja0N1ZSgxLCAyLCBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCdTZWNvbmQgY3Vl
JykpOworICAgIGN1ZTIuaWQgPSAidHdvIjsKKyAgICB0cmFjay5hZGRDdWUoY3VlMik7CisgICAg
YXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzLmxlbmd0aCwgMiwgInRyYWNrLmN1ZXMubGVuZ3RoIGlu
Y2x1ZGVzIHNlY29uZCBjdWUiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXNbMF0uaWQs
ICdvbmUnLCAnY3VlIDEgc2hvdWxkIGJlIGZpcnN0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFj
ay5jdWVzWzFdLmlkLCAndHdvJywgJ2N1ZSAyIHNob3VsZCBiZSBzZWNvbmQnKTsgICAgCit9LCAn
dHJhY2suYWRkQ3VlKCkgYWRkcyB0byB0cmFjay5jdWVzJyk7CisKK3Rlc3QodGVzdCA9PiB7Cisg
ICAgdHJhY2subW9kZSA9ICdzaG93aW5nJzsKKyAgICB0cmFjay5jdWVzWzFdLnN0YXJ0VGltZSA9
IDA7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzWzBdLmlkLCAndHdvJywgJ2N1ZSAyIHNo
b3VsZCBiZSBmaXJzdCcpOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlc1sxXS5pZCwgJ29u
ZScsICdjdWUgMSBzaG91bGQgYmUgc2Vjb25kJyk7CisKKyAgICB0cmFjay5jdWVzWzBdLnN0YXJ0
VGltZSA9IDAuNTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXNbMF0uaWQsICdvbmUnLCAn
Y3VlIDEgc2hvdWxkIGJlIGZpcnN0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzWzFd
LmlkLCAndHdvJywgJ2N1ZSAyIHNob3VsZCBiZSBzZWNvbmQnKTsKK30sICdjdWUgb3JkZXIgc2hv
dWxkIGNoYW5nZSB3aGVuIHN0YXJ0IHRpbWUgaXMgY2hhbmdlZCcpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3Vl
LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0
cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEzMzEzNDRiYTNlYzYyY2RhNWQ0MmI0MjE3MGVkNTVkMDA5NTk3MGIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBUZXh0VHJhY2tD
dWUgc2hvdWxkIHRocm93ICJUeXBlRXJyb3IiIGlmIHRoZSBjdWUgbm9kZSBpcyBub3QgYSBkb2N1
bWVudEZyYWdtZW50IAorUEFTUyBUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9k
ZVR5cGVFcnJvciIgaWYgcGFzc2VkIGFuIGludmFsaWQgZG9jdW1lbnRGcmFnbWVudCAKK1BBU1Mg
VGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiSW52YWxpZE5vZGVUeXBlRXJyb3IiIGlmIGRvY3Vt
ZW50RnJhZ21lbnQgaGFzIGFuIGludmFsaWQgbm9kZSAKK1BBU1MgVGV4dFRyYWNrQ3VlIHNob3Vs
ZCB0aHJvdyAiSW52YWxpZFN0YXRlRXJyb3IiIGlmIGRvY3VtZW50RnJhZ21lbnQgZG9lc24ndCBo
YXZlICdjdWViYWNrZ3JvdW5kJyBhbmQgJ2N1ZScgbm9kZXMgCitQQVNTIFRleHRUcmFja0N1ZSBz
aG91bGQgYWxsb3cgYWxsIHZhbGlkIG5vZGUgdHlwZXMgCitQQVNTIFRlc3QgVGV4dFRyYWNrQ3Vl
LmdldEN1ZUFzSFRNTCgpIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGI1NDBlNDZmZTA0ZTEyZDIwZGU1YjRkOGY5NDYyZWJjZTM4MTkzMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJh
Y2tjdWUtY29uc3RydWN0b3IuaHRtbApAQCAtMCwwICsxLDEwNSBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8dGl0bGU+VGV4dFRyYWNrQ3VlIGNvbnN0cnVjdG9yPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEdl
bmVyaWNDdWVBUElFbmFibGVkKHRydWUpOworCit0ZXN0KCB0ZXN0ID0+IHsKKyAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCAiIikg
fSk7CisgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCBfID0+IHsgbmV3IFRleHRUcmFj
a0N1ZSgwLCAxMCwgeyB9KSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8g
PT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KSkgfSk7Cit9LCAnVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiVHlwZUVycm9yIiBpZiB0aGUg
Y3VlIG5vZGUgaXMgbm90IGEgZG9jdW1lbnRGcmFnbWVudCcpOworCit0ZXN0KCB0ZXN0ID0+IHsK
KyAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpIH0pOwor
fSwgJ1RleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVycm9yIiBpZiBw
YXNzZWQgYW4gaW52YWxpZCBkb2N1bWVudEZyYWdtZW50Jyk7CisKK2Z1bmN0aW9uIGNyZWF0ZVZh
bGlkQ3VlRnJhZ21lbnQoKQoreworICAgIGxldCBjdWVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3BhbicpOworICAgIGN1ZU5vZGUuc2V0QXR0cmlidXRlKCdjdWUnLCAnJyk7CisKKyAg
ICBsZXQgYmFja2dyb3VuZE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICBiYWNrZ3JvdW5kTm9kZS5zZXRBdHRyaWJ1dGUoJ2N1ZWJhY2tncm91bmQnLCAnJyk7CisgICAg
YmFja2dyb3VuZE5vZGUuYXBwZW5kQ2hpbGQoY3VlTm9kZSk7CisKKyAgICBmcmFnbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudC5hcHBlbmRDaGls
ZChiYWNrZ3JvdW5kTm9kZSk7CisKKyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKK3Rlc3QoIHRl
c3QgPT4geworICAgIGxldCBmcmFnbWVudCA9IGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoKTsKKyAg
ICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAg
ICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpKTsK
KyAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CisKK30sIGBUZXh0VHJhY2tDdWUgc2hvdWxk
IHRocm93ICJJbnZhbGlkTm9kZVR5cGVFcnJvciIgaWYgZG9jdW1lbnRGcmFnbWVudCBoYXMgYW4g
aW52YWxpZCBub2RlYCk7CisKK3Rlc3QoIHRlc3QgPT4geworICAgIGxldCBmcmFnbWVudCA9IGNy
ZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoKTsKKyAgICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNr
Q3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxkLnJlbW92ZUF0
dHJpYnV0ZSgnY3VlYmFja2dyb3VuZCcpCisgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRl
RXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworCisg
ICAgZnJhZ21lbnQgPSBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQuZmly
c3RDaGlsZC5maXJzdENoaWxkLnJlbW92ZUF0dHJpYnV0ZSgnY3VlJykKKyAgICBhc3NlcnRfdGhy
b3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBm
cmFnbWVudCkgfSk7Cit9LCBgVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiSW52YWxpZFN0YXRl
RXJyb3IiIGlmIGRvY3VtZW50RnJhZ21lbnQgZG9lc24ndCBoYXZlICdjdWViYWNrZ3JvdW5kJyBh
bmQgJ2N1ZScgbm9kZXNgKTsKKwordGVzdCggdGVzdCA9PiB7CisgICAgbGV0IGZyYWdtZW50ID0g
Y3JlYXRlVmFsaWRDdWVGcmFnbWVudCgpOworICAgIGxldCB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJh
Y2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgICAgdmFsaWRDdWUgPSBuZXcg
VGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxk
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICB2YWxpZEN1
ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZp
cnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJykpOworICAg
IHZhbGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJh
Z21lbnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykp
OworICAgIHZhbGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisg
ICAgZnJhZ21lbnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdyYicpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50
KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgncnQnKSk7CisgICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBm
cmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3J0YycpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUo
MCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncnVieScpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0
VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICB2YWxpZEN1ZSA9
IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0
Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0hlbGxvIScpKTsKKyAg
ICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworfSwgYFRl
eHRUcmFja0N1ZSBzaG91bGQgYWxsb3cgYWxsIHZhbGlkIG5vZGUgdHlwZXNgKTsKKworCit0ZXN0
KCB0ZXN0ID0+IHsKKyAgICBsZXQgc291cmNlRnJhZ21lbnQgPSBjcmVhdGVWYWxpZEN1ZUZyYWdt
ZW50KCk7CisgICAgbGV0IHZhbGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21l
bnQpOworCisgICAgbGV0IGN1ZUZyYWdtZW50ID0gdmFsaWRDdWUuZ2V0Q3VlQXNIVE1MKCk7Cisg
ICAgYXNzZXJ0X3RydWUoY3VlRnJhZ21lbnQgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KTsK
KworICAgIGFzc2VydF90cnVlKGN1ZUZyYWdtZW50LmlzRXF1YWxOb2RlKHNvdXJjZUZyYWdtZW50
KSk7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyh2YWxpZEN1ZS5nZXRDdWVBc0hUTUwoKSwgY3Vl
RnJhZ21lbnQsICJnZXRDdWVBc0hUTUwoKSBzaG91bGQgcmV0dXJuIGEgZGlmZmVyZW50IGZyYWdt
ZW50IGVhY2ggdGltZSIpOworCit9LCBgVGVzdCBUZXh0VHJhY2tDdWUuZ2V0Q3VlQXNIVE1MKClg
KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0
dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMDRlMWM1ZTM5YjBjZTIyYjJhNWJiNTUzYTFhMGMxNGYwOGE3
MjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNr
Y3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
KworCitQQVNTIEN1ZXMgYXJlIGRpc3BsYXllZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLmh0bWwgYi9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXlj
dWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZmMzYzIxZGM5OTExMmY2ZDEyYmRkNjdiOTNlMGFiY2ZmMGQw
NjYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNr
Y3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLmh0bWwKQEAgLTAsMCArMSw5NCBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8dGl0bGU+VGV4dFRyYWNrQ3VlIGRpc3BsYXkgY3VlPC90aXRsZT4KKworPGRp
dj48L2Rpdj4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLWNvbnRyb2xzLmpzPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0R2VuZXJp
Y0N1ZUFQSUVuYWJsZWQodHJ1ZSk7CisKK2Z1bmN0aW9uIGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQo
dGV4dCkKK3sKKyAgICBsZXQgY3VlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4n
KTsKKyAgICBjdWVOb2RlLnNldEF0dHJpYnV0ZSgnY3VlJywgJycpOworICAgIGN1ZU5vZGUuaW5u
ZXJUZXh0ID0gdGV4dDsKKworICAgIGxldCBiYWNrZ3JvdW5kTm9kZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIGJhY2tncm91bmROb2RlLnNldEF0dHJpYnV0ZSgnY3VlYmFj
a2dyb3VuZCcsICcnKTsKKyAgICBiYWNrZ3JvdW5kTm9kZS5hcHBlbmRDaGlsZChjdWVOb2RlKTsK
KworICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAg
IGZyYWdtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmROb2RlKTsKKworICAgIHJldHVybiBmcmFn
bWVudDsKK30KKworYXN5bmNfdGVzdCh0ZXN0ID0+IHsKKworICAgIHZpZGVvID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICB2aWRlby5jb250cm9scyA9IHRydWU7CisKKyAg
ICB0cmFjayA9IHZpZGVvLmFkZFRleHRUcmFjaygnc3VidGl0bGVzJyk7CisgICAgdHJhY2suZGVm
YXVsdCA9IHRydWU7CisgICAgdHJhY2subW9kZSA9ICdzaG93aW5nJzsKKworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW8pOworCisgICAgbGV0IGN1ZTFUZXh0ID0gJ0ZpcnN0IGN1
ZSc7CisgICAgbGV0IGN1ZTEgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEuMSwgY3JlYXRlVmFsaWRD
dWVGcmFnbWVudChjdWUxVGV4dCkpOworICAgIGN1ZTEuaWQgPSAib25lIjsKKyAgICB0cmFjay5h
ZGRDdWUoY3VlMSk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzLmxlbmd0aCwgMSwgJ29u
bHkgb25lIGN1ZScpOworCisgICAgbGV0IGN1ZTJUZXh0ID0gJ1NlY29uZCBjdWUnOworICAgIGxl
dCBjdWUyID0gbmV3IFRleHRUcmFja0N1ZSgxLCAyLCBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KGN1
ZTJUZXh0KSk7CisgICAgY3VlMi5pZCA9ICJ0d28iOworICAgIHRyYWNrLmFkZEN1ZShjdWUyKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXMubGVuZ3RoLCAyLCAidHJhY2suY3Vlcy5sZW5n
dGggaW5jbHVkZXMgc2Vjb25kIGN1ZSIpOworCisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVz
WzBdLmlkLCAnb25lJywgJ2N1ZSAxIHNob3VsZCBiZSBmaXJzdCcpOworICAgIGFzc2VydF9lcXVh
bHModHJhY2suY3Vlc1sxXS5pZCwgJ3R3bycsICdjdWUgMiBzaG91bGQgYmUgc2Vjb25kJyk7ICAg
IAorCisgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheScsIGV2ZW50ID0+IHsKKwor
ICAgICAgICBsZXQgc2Vla0NvdW50ID0gMDsKKyAgICAgICAgbGV0IHN0ZXAgPSBfID0+IHsKKyAg
ICAgICAgICAgIGxldCBjdWVDb250YWluZXIgPSBtZWRpYUNvbnRyb2xzRWxlbWVudChpbnRlcm5h
bHMuc2hhZG93Um9vdCh2aWRlbykuZmlyc3RDaGlsZCwgIi13ZWJraXQtbWVkaWEtdGV4dC10cmFj
ay1jb250YWluZXIiKTsKKyAgICAgICAgICAgIHN3aXRjaCAoKytzZWVrQ291bnQpIHsKKyAgICAg
ICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmFjdGl2
ZUN1ZXMubGVuZ3RoLCAxLCAib25seSBvbmUgYWN0aXZlIGN1ZSIpOworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoY3VlQ29udGFpbmVyLmlubmVyVGV4dCwgY3VlMVRleHQsICJjdWUgb25l
IGlzIHZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IHRyYWNr
LmN1ZXNbMV0uc3RhcnRUaW1lOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5hY3RpdmVDdWVz
Lmxlbmd0aCwgMiwgInR3byBhY3RpdmUgY3VlcyIpOworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoY3VlQ29udGFpbmVyLmlubmVyVGV4dCwgYCR7Y3VlMVRleHR9XG4ke2N1ZTJUZXh0fWAs
ICJjdWVzIG9uZSBhbmQgdHdvIGFyZSB2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdmlkZW8u
Y3VycmVudFRpbWUgPSB0cmFjay5jdWVzWzFdLmVuZFRpbWUgLSAuNTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHModHJhY2suYWN0aXZlQ3Vlcy5sZW5ndGgsIDEsICJvbmx5IG9uZSBhY3RpdmUgY3VlIik7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjdWVDb250YWluZXIuaW5uZXJUZXh0LCBj
dWUyVGV4dCwgImN1ZSB0d28gaXMgdmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHZpZGVvLmN1
cnJlbnRUaW1lID0gdHJhY2suY3Vlc1sxXS5lbmRUaW1lICsgMTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModHJhY2suYWN0aXZlQ3Vlcy5sZW5ndGgsIDAsICJubyBhY3RpdmUgY3VlcyIpOworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3VlQ29udGFpbmVyLmlubmVyVGV4dCwgJycsICJubyBj
dWVzIGFyZSB2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdGVzdC5kb25lKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdmlkZW8u
YWRkRXZlbnRMaXN0ZW5lcignc2Vla2VkJywgdGVzdC5zdGVwX2Z1bmMoc3RlcCkpOworICAgICAg
ICB2aWRlby5jdXJyZW50VGltZSA9IHRyYWNrLmN1ZXNbMF0uc3RhcnRUaW1lOworICAgIH0pOwor
CisgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vLi4vY29udGVudC90
ZXN0Jyk7CisKK30sICdDdWVzIGFyZSBkaXNwbGF5ZWQnKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZkOGY5MTIxOTMxNDAxNjlm
NjM2MDc1ZGY3MDg1NTZiNmZlYWI0MDguLjhlNmE5MjNhOTc2ZDFkZDkzMGQxNWNhMTM1YmNlMWJl
ZjY2OTQ4NTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yNDk2LDYgKzI0OTYsOSBAQCB3ZWJraXQub3JnL2IvMTYwMzY3IG1lZGlhL3RyYWNrL3RyYWNr
LXJlbW92ZS1jcmFzaC5odG1sCiAjIFRoZXkgYXJlIGFsc28gZmxha2lseSBmYWlsaW5nIG9uIFdl
YktpdDIsIGFzIHNuYXBzaG90IHNvbWV0aW1lcyBoYXMgYSBibGFjayByZWN0YW5nbGUgZm9yIHZp
ZGVvIGVsZW1lbnQgaW5zdGVhZCBvZiB3aGl0ZSBvbmUuCiB3ZWJraXQub3JnL2IvMTMxNDc2IG1l
ZGlhL3RyYWNrL3czYy90cmFjay93ZWJ2dHQKIAorIyBWVFRSZWdpb24gaGVpZ2h0IGRvZXNuJ3Qg
YWRqdXN0IHdoZW4gY3VlIGZvbnQgc2l6ZSBjaGFuZ2VzLgord2Via2l0Lm9yZy9iLzIwMzYyMSBt
ZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC92dHQtcmVnaW9uLWRpc3BsYXkuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCisKIG1lZGlhL3ZpZGVvLW9iamVjdC1maXQtY2hhbmdlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIG1lZGlhL3ZpZGVvLW9iamVjdC1maXQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk0
MTUxMTExMDNhMjBiNWQ0ZDZlZmFkZTU4Zjc3MDc3OWQ2ZTZhNzQuLjVkOGRhYWQ2MDA4MGE3MWE3
MDgyYWQ0YTMyYmM0NjM4NDBlNTc0ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zCkBAIC04NTgsNiArODU4LDkgQEAgd2Via2l0Lm9yZy9iLzEwMzkyNiBtZWRp
YS90cmFjay9vcGVyYS90cmFjay93ZWJ2dHQvcmVuZGVyaW5nL2FkaG9jL3ZvaWNlX3dpdGhfZXYK
ICMgVGhleSBhcmUgYWxzbyBmbGFraWx5IGZhaWxpbmcgb24gV2ViS2l0MiwgYXMgc25hcHNob3Qg
c29tZXRpbWVzIGhhcyBhIGJsYWNrIHJlY3RhbmdsZSBmb3IgdmlkZW8gZWxlbWVudCBpbnN0ZWFk
IG9mIHdoaXRlIG9uZS4KIHdlYmtpdC5vcmcvYi8xMzE0NzYgbWVkaWEvdHJhY2svdzNjL3RyYWNr
L3dlYnZ0dCBbIFNraXAgXQogCisjIFZUVFJlZ2lvbiBoZWlnaHQgZG9lc24ndCBhZGp1c3Qgd2hl
biBjdWUgZm9udCBzaXplIGNoYW5nZXMuCit3ZWJraXQub3JnL2IvMjAzNjIxIG1lZGlhL3RyYWNr
L3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZGlzcGxheS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
Kwogd2Via2l0Lm9yZy9iLzY3NzE2IG1lZGlhL21lZGlhLWNvbnRyb2xzLWludmFsaWQtdXJsLmh0
bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzc1MTg0IG1lZGlhL1czQy92aWRlby9jYW5Q
bGF5VHlwZS9jYW5QbGF5VHlwZV9jb2RlY3Nfb3JkZXJfMi5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382604</attachid>
            <date>2019-11-01 11:42:33 -0700</date>
            <delta_ts>2019-11-01 13:55:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203649-20191101134232.patch</filename>
            <type>text/plain</type>
            <size>90604</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY0NDU5MjViMzRiYTM4
NmViMzBiZjdjNmEzN2QwYzI1MzViYzQxYy4uMzNiNGZjNDNiMmNlMWE1ZmY0MmEyZDJmOTQ5ZTAz
MWNmOGY3ZWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMC0zMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJp
bWVudGFsIFRleHRUcmFja0N1ZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzY0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NzUxNzI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6
IG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0
b3IuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFj
a2N1ZS1kaXNwbGF5Y3VlLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9z
dDo6dXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNv
bnRyb2xzL01lZGlhQ29udHJvbHNIb3N0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoTmVlZHNSdW50
aW1lQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdt
ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OnByb2Nlc3NBY3RpdmVWVFRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlQWN0aXZl
Q3Vlc0ZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU3R5bGVGb3JUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnNldE1vZGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlQm94U2hhZG93
UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNo
YWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6OmN1ZUF0dHJpYnV0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZUJveDo6VGV4dFRyYWNrQ3VlQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZUJveDo6Z2V0Q3VlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTGVn
YWxOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWROb2RlRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
Ojp0YWdQc2V1ZG9PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVBzZXVkb0F0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjpkaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnRvSlNP
TiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmRlYnVnU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6aXNSZW5kZXJhYmxlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0RGlzcGxheVRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpyZW1vdmVEaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlQm94Ojp+VGV4dFRyYWNrQ3VlQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tDdWU6OnJlY2FsY3VsYXRlU3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjppc1JlbmRlcmFibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1
ZUdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNF
cXVhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljOjppc09y
ZGVyZWRCZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJp
Yzo6aXNQb3NpdGlvbmVkQWJvdmUgY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlR2VuZXJpYy5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OlZUVEN1ZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpWVFRDdWU6OmdldERpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZTo6cmVtb3ZlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpzZXRG
b250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ZUVEN1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWVFRDdWVCb3g6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVC
b3g6OmdldEN1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6
OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC90cmFjay9WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6Y3JlYXRlKToK
KyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRSZWdpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpnZXREaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpWVFRSZWdpb246OnByZXBhcmVSZWdpb25EaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRt
bC90cmFjay9WVFRSZWdpb24uaDoKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSBjb25zdCk6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUpOgorCiAyMDE5LTEw
LTI4ICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbWFn
ZURlY29kZXJzOiB1c2UgYSB0aHJlYWQgc2FmZSBkYXRhIGJ1ZmZlciBmb3IgQ2Fpcm8gYmFja2lu
ZyBzdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBjNzc1ODRjOWY0Y2ExMDM0Njc4YWNlNDkwNzc5NjkwY2I4YWRm
YjFmLi5iNDBlNzc5ZjE4YmY0Y2FmYTViMDYwZTA5NTI5NmZlMDdmODRkMjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE5LTEwLTMwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgVGV4dFRyYWNrQ3VlIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjQ5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTY3NTE3Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgor
CiAyMDE5LTEwLTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBTaW1wbGlmeSB0aGUgSW5wdXQgTWV0aG9kIGltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFD
b250cm9sc0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01l
ZGlhQ29udHJvbHNIb3N0LmNwcAppbmRleCAxMGZmNzJmYmIzZGQ1NGRkODdlMmYyMjI3OGU3ZGVi
NTJjOTEzYmU3Li41MzY2NzRhZWYzM2RhYzhlOGVmZTkwMzAyYmNmOTM5NmQyZGQ1MzM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRp
YUNvbnRyb2xzSG9zdC5jcHAKQEAgLTE3NywxMCArMTc3LDEwIEBAIHZvaWQgTWVkaWFDb250cm9s
c0hvc3Q6OmV4aXRlZEZ1bGxzY3JlZW4oKQogICAgICAgICBtX3RleHRUcmFja0NvbnRhaW5lci0+
ZXhpdGVkRnVsbHNjcmVlbigpOwogfQogCi12b2lkIE1lZGlhQ29udHJvbHNIb3N0Ojp1cGRhdGVD
YXB0aW9uRGlzcGxheVNpemVzKCkKK3ZvaWQgTWVkaWFDb250cm9sc0hvc3Q6OnVwZGF0ZUNhcHRp
b25EaXNwbGF5U2l6ZXMoRm9yY2VVcGRhdGUgZm9yY2UpCiB7CiAgICAgaWYgKG1fdGV4dFRyYWNr
Q29udGFpbmVyKQotICAgICAgICBtX3RleHRUcmFja0NvbnRhaW5lci0+dXBkYXRlU2l6ZXModHJ1
ZSk7CisgICAgICAgIG1fdGV4dFRyYWNrQ29udGFpbmVyLT51cGRhdGVTaXplcyhmb3JjZSA9PSBG
b3JjZVVwZGF0ZTo6WWVzID8gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
Rm9yY2VVcGRhdGU6OlllcyA6IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OkZvcmNlVXBkYXRlOjpObyk7CiB9CiAgICAgCiBib29sIE1lZGlhQ29udHJvbHNIb3N0OjphbGxv
d3NJbmxpbmVNZWRpYVBsYXliYWNrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggZWY1ZDA1
NzJhZDRhYzAwZjViNzZhMTJkZWMzNzlmMWYyODQ0NzFlNS4uOWQyNjBkODE0MGJiYjVjYzk2ZjFi
MGE5MjY3MDhhOGYxMjQ4ZmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKQEAgLTcyLDcgKzcyLDggQEAg
cHVibGljOgogICAgIGJvb2wgc2hvdWxkRm9yY2VDb250cm9sc0Rpc3BsYXkoKSBjb25zdDsKICAg
ICB2b2lkIHNldFByZXBhcmVkVG9SZXR1cm5WaWRlb0xheWVyVG9JbmxpbmUoYm9vbCk7CiAKLSAg
ICB2b2lkIHVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKKyAgICBlbnVtIGNsYXNzIEZvcmNl
VXBkYXRlIHsgWWVzLCBObyB9OworICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyhG
b3JjZVVwZGF0ZSBmb3JjZSA9IEZvcmNlVXBkYXRlOjpObyk7CiAgICAgdm9pZCBlbnRlcmVkRnVs
bHNjcmVlbigpOwogICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKaW5kZXggNmVj
YWNlZTlmODgyYWY1N2Y1Mjg4YjEzMTc5OTg2ZTIwYjg4ZDQ4NC4uNzUyOTU3MjMxMjNlODViYzcw
OGNlYzM5YTU4OTI3MDEyOTExODIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcApAQCAtNjcsMTIgKzY3LDE0IEBAIEpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUCiAgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkRhdGE6CiAgICAgICAg
IHJldHVybiBjcmVhdGVXcmFwcGVyPERhdGFDdWU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShjdWUp
KTsKICAgICBjYXNlIFRleHRUcmFja0N1ZTo6V2ViVlRUOgotICAgIGNhc2UgVGV4dFRyYWNrQ3Vl
OjpHZW5lcmljOgorICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpDb252ZXJ0ZWRUb1dlYlZUVDoKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VlRUQ3VlPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
Y3VlKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBqc051bGwoKTsKKyAgICBjYXNlIFRleHRUcmFja0N1ZTo6R2VuZXJpYzoKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGV4dFRyYWNrQ3VlPihnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoY3VlKSk7CiAgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGpzTnVsbCgpOwogfQogCiBKU1ZhbHVlIHRvSlMoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRleHRUcmFja0N1
ZSYgY3VlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCmluZGV4IDc3MTJkMjFiM2FkOTcxZGI3NzE0NzQ0MzZlNzBmMDM3ZWQ3M2QwM2QuLjIx
MDM1Y2NlMTliNGMzZTk2YzU4M2VhMTMwZjE5N2NmZTQyNTA4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTIxNiw2ICsyMTYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oU3RhdGljUmFuZ2UpIFwKICAgICBt
YWNybyhTdHlsZVByb3BlcnR5TWFwUmVhZE9ubHkpIFwKICAgICBtYWNybyhTdHlsZVByb3BlcnR5
TWFwKSBcCisgICAgbWFjcm8oVGV4dFRyYWNrQ3VlKSBcCiAgICAgbWFjcm8oVW5kb0l0ZW0pIFwK
ICAgICBtYWNybyhVbmRvTWFuYWdlcikgXAogICAgIG1hY3JvKFZSRGlzcGxheSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRl
eCA1ZDU5MDhkOGQzMjBlMjRiNjZkYzVlMTUxODY3MjZiMjQ3MzQ1Nzk2Li4yMTM5MzdiN2FjZjJi
NjcwOWFkODFlMjM1ZjJiZWM0ZDg1N2Q1ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjQzNSw3ICsyNDM1LDcgQEAg
c3ViIEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICAgICAg
ICAgIG15ICRuZWVkc1J1bnRpbWVDaGVjayA9IE5lZWRzUnVudGltZUNoZWNrKCRkaWN0aW9uYXJ5
LCAkbWVtYmVyKTsKICAgICAgICAgICAgICAgICBteSAkaW5kZW50ID0gIiI7CiAgICAgICAgICAg
ICAgICAgaWYgKCRuZWVkc1J1bnRpbWVDaGVjaykgewotICAgICAgICAgICAgICAgICAgICBteSAk
cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmcoJGRpY3Rpb25hcnksICRtZW1iZXIsICJ0cnVlIik7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1
bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkZGljdGlvbmFyeSwgJG1lbWJlciwgIiZnbG9i
YWxPYmplY3QiKTsKICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGlmICgke3J1
bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiI7CiAgICAgICAgICAgICAgICAgICAg
ICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzczNCw3ICszNzM0LDcg
QEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAgbXkgKCRp
bnRlcmZhY2UsICRjb250ZXh0LCAkZ2xvYmFsT2JqZWN0SXNQYXJhbSkgPSBAXzsKIAogICAgIG15
IEBjb25qdW5jdHM7Ci0gICAgbXkgJGdsb2JhbE9iamVjdFB0ciA9ICRnbG9iYWxPYmplY3RJc1Bh
cmFtID8gIiZnbG9iYWxPYmplY3QiIDogImdsb2JhbE9iamVjdCgpIjsKKyAgICBteSAkZ2xvYmFs
T2JqZWN0UHRyID0gJGdsb2JhbE9iamVjdElzUGFyYW0gPyAkZ2xvYmFsT2JqZWN0SXNQYXJhbSA6
ICJnbG9iYWxPYmplY3QoKSI7CiAgICAgCiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntTZWN1cmVDb250ZXh0fSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CkBAIC0zODIzLDYgKzM4MjMsMTUgQEAgc3ViIEdlbmVy
YXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAgICAgIHB1c2goQGNvbmp1bmN0
cywgICIke25hbWV9OjplbmFibGVkRm9yQ29udGV4dCgiIC4gJGNvbnRleHRSZWYgLiAiKSIpOwog
ICAgIH0KIAorICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0
b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgICAgICBhc3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1
ZSBmb3IgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nLiIpIGlmICRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNldHRpbmd9IGVxICJWQUxVRV9JU19N
SVNTSU5HIjsKKworICAgICAgICBteSBAc2V0dGluZ3MgPSBzcGxpdCgvJi8sICRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNldHRpbmd9KTsKKyAgICAg
ICAgZm9yZWFjaCBteSAkc2V0dGluZyAoQHNldHRpbmdzKSB7CisgICAgICAgICAgICBwdXNoKEBj
b25qdW5jdHMsICJkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
IiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0
dGluZ3MoKS4iIC4gVG9NZXRob2ROYW1lKCRzZXR0aW5nKSAuICJFbmFibGVkKCkiKTsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIG15ICRyZXN1bHQgPSBqb2luKCIgJiYgIiwgQGNvbmp1bmN0cyk7
CiAgICAgJHJlc3VsdCA9ICIoJHJlc3VsdCkiIGlmIEBjb25qdW5jdHMgPiAxOwogICAgIHJldHVy
biAkcmVzdWx0OwpAQCAtNzI2Miw2ICs3MjcxLDE0IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNT
RVJUKGNhc3RlZFRoaXMpO1xuIik7CiAKKyAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgICAg
ICAgICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVS
dW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbiwgImxl
eGljYWxHbG9iYWxPYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB0aHJvd1R5cGVFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBcIklsbGVnYWwgY29uc3RydWN0b3Jc
Il9zKTtcbiIpOworICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7CisgICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRp
b24sICRpbnRlcmZhY2UsICIgICAgIik7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxl
bWVudGF0aW9uTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICJjcmVhdGVGb3JK
U0NvbnN0cnVjdG9yIiA6ICJjcmVhdGUiOwpAQCAtNzM5NSw3ICs3NDEyLDE2IEBAIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIH0KIAogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgU3RyaW5nKFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCJfcykpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFzdENvbnN0cnVjdG9yTGVu
Z3RofSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pO1xuIikgaWYgZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0
aDsKKworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3Rv
ckVuYWJsZWRCeVNldHRpbmd9KSB7CisgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9u
YWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJm
YWNlLCAkaW50ZXJmYWNlLCAiJmdsb2JhbE9iamVjdCIpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgaW50IGNvbnN0cnVjdG9yTGVuZ3RoID0gJHtsZWFzdENvbnN0cnVjdG9yTGVu
Z3RofTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke3J1bnRp
bWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBjb25zdHJ1Y3Rvckxlbmd0aCA9IDA7XG4iKTsKKyAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcihjb25zdHJ1Y3Rvckxlbmd0aCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigke2xlYXN0Q29uc3RydWN0b3JMZW5ndGh9
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7XG4iKTsKKyAgICB9CiAKICAgICBteSAkY2xhc3NGb3JUaGlzID0gIiR7
Y2xhc3NOYW1lfTo6aW5mbygpIjsKICAgICBpZiAoJGludGVyZmFjZS0+aXNDYWxsYmFjaykgewpA
QCAtNzQwOCw3ICs3NDM0LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
CiAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUgKEBydW50aW1lRW5hYmxlZFBy
b3BlcnRpZXMpIHsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbk9yQXR0cmlidXRlKTsKICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9u
YWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJm
YWNlLCAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUsICJ0cnVlIik7CisgICAgICAgIG15ICRydW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25h
bFN0cmluZygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUsICImZ2xvYmFsT2JqZWN0
Iik7CiAgICAgICAgIG15ICRuYW1lID0gJG9wZXJhdGlvbk9yQXR0cmlidXRlLT5uYW1lOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbgppbmRleCA5ZjRhZGMzZGFhNGE4ODc0NjRkNzQ2OTVhZDliMDY1OTJkZmMxOTI1Li45NTU5
ZTJjNjA3OTEwM2E4Y2VkZjFkYzhiY2E2OTdlZjE1YmVmN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgpAQCAtODIsNiArODIs
MTAgQEAKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAg
ICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQiLCAiRXhlY1N0YXRlIiwgIlJ1bnRpbWVGbGFn
cyIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0KICAgICAgICAgfSwKKyAgICAgICAgIkNvbnN0
cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImF0dHJpYnV0ZSIsICJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioi
XQorICAgICAgICB9LAogICAgICAgICAiQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Mt
aWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxz
LnBsCmluZGV4IDQyYzUxZmVmNGI2NWNiNzQ0YTgwNGU2ZGFmODMwMzNlZjJmYjA3ZDEuLmE0ZDhk
M2U2NWRlNTA5ZDYyYjk4NWM3M2ZhNjJiZWVmYzA3OTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC0yODMsNyArMjgz
LDggQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzCiAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlTmFtZSAoc29ydCBrZXlzICV7JGV4dGVuZGVkQXR0cmlidXRlc30pIHsKICAgICAg
IG5leHQgdW5sZXNzICgkYXR0cmlidXRlTmFtZSBlcSAiQ29uZGl0aW9uYWwiIHx8ICRhdHRyaWJ1
dGVOYW1lIGVxICJFbmFibGVkQXRSdW50aW1lIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxl
ZEZvcldvcmxkIgogICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEJ5U2V0dGlu
ZyIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlNlY3VyZUNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1l
IGVxICJQcml2YXRlSWRlbnRpZmllciIKLSAgICAgICAgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlB1
YmxpY0lkZW50aWZpZXIiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJEaXNhYmxlZEJ5UXVpcmsiIHx8
ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlRdWlyayIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEg
IkVuYWJsZWRGb3JDb250ZXh0IiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiQ3VzdG9tRW5hYmxlZCIp
OworICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGljSWRlbnRpZmllciIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWlyayIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVu
YWJsZWRCeVF1aXJrIgorICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEZvckNv
bnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJDdXN0b21FbmFibGVkIikgfHwgJGF0dHJpYnV0
ZU5hbWUgZXEgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI7CiAgICAgICBteSAkZXh0ZW5k
ZWRBdHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFtZTsKICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAu
PSAiPSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsK
ICAgICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlc0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwKaW5kZXggNDAyYzViYTAxYTgy
NDU2Zjg4ZGY0ZWEzZWUwNjUyZWQyY2FhYzdlOC4uMzAxMTk5MzljOThjMTllOWI5MzAyNzVkMzVj
YjY2NTI1NDVlZjQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJh
Z21lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbApA
QCAtMjEsNiArMjEsNyBAQAogICAgIENvbnN0cnVjdG9yLAogICAgIENvbnN0cnVjdG9yQ2FsbFdp
dGg9RG9jdW1lbnQsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRp
dmVPYmplY3QsCiAgICAgRE9NSklULAogXSBpbnRlcmZhY2UgRG9jdW1lbnRGcmFnbWVudCA6IE5v
ZGUgewogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDY1
ZmNlNDZlZDBlYmEwYzgzYjBhZjc0YTRlMmY5N2E4OTYxNmI4MTQuLmVmMmI0ZThkNTNjODY2Mjk2
ZWI2ODUzMDM0NTFjOWQ3YTFjYjk4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtOTcyLDYgKzk3MiwxMSBAQCBpbmxpbmUgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVSZW5kZXJlcigpCiB7CiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CisKKyNp
ZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQorICAgIGlmIChtX21lZGlhQ29udHJvbHNI
b3N0KQorICAgICAgICBtX21lZGlhQ29udHJvbHNIb3N0LT51cGRhdGVDYXB0aW9uRGlzcGxheVNp
emVzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBdHRhY2hSZW5k
ZXJlcnMoKQpAQCAtMTc0OCwxMCArMTc1Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3VycmVudEN1ZXNTaXplOyArK2kpIHsKICAgICAgICAg
UmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlID0gY3VycmVudEN1ZXNbaV0uZGF0YSgpOwotCi0gICAg
ICAgIGlmIChjdWUtPmlzUmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgdG9WVFRDdWUoY3VlLmdl
dCgpKS0+dXBkYXRlRGlzcGxheVRyZWUobW92aWVUaW1lKTsKLQorICAgICAgICBjdWUtPnVwZGF0
ZURpc3BsYXlUcmVlKG1vdmllVGltZSk7CiAgICAgICAgIGlmICghY3VlLT5pc0FjdGl2ZSgpKQog
ICAgICAgICAgICAgYWN0aXZlU2V0Q2hhbmdlZCA9IHRydWU7CiAgICAgfQpAQCAtMjA2NCw3ICsy
MDY2LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRy
YWNrJiwgVGV4dFRyYWNrQ3VlJiBjdWUpCiAgICAgLy8gU2luY2UgdGhlIGN1ZSB3aWxsIGJlIHJl
bW92ZWQgZnJvbSB0aGUgbWVkaWEgZWxlbWVudCBhbmQgbGlrZWx5IHRoZQogICAgIC8vIFRleHRU
cmFjayBtaWdodCBhbHNvIGJlIGRlc3RydWN0ZWQsIG5vdGlmeWluZyB0aGUgcmVnaW9uIG9mIHRo
ZSBjdWUKICAgICAvLyByZW1vdmFsIHNob3VsZG4ndCBiZSBkb25lLgotICAgIGlmIChjdWUuaXNS
ZW5kZXJhYmxlKCkpCisgICAgYXV0byBpc1ZUVCA9IGlzPFZUVEN1ZT4oY3VlKTsKKyAgICBpZiAo
aXNWVFQpCiAgICAgICAgIHRvVlRUQ3VlKCZjdWUpLT5ub3RpZnlSZWdpb25XaGVuUmVtb3ZpbmdE
aXNwbGF5VHJlZShmYWxzZSk7CiAKICAgICBzaXplX3QgaW5kZXggPSBtX2N1cnJlbnRseUFjdGl2
ZUN1ZXMuZmluZChpbnRlcnZhbCk7CkBAIC0yMDczLDExICsyMDc2LDEwIEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYg
Y3VlKQogICAgICAgICBtX2N1cnJlbnRseUFjdGl2ZUN1ZXMucmVtb3ZlKGluZGV4KTsKICAgICB9
CiAKLSAgICBpZiAoY3VlLmlzUmVuZGVyYWJsZSgpKQotICAgICAgICB0b1ZUVEN1ZSgmY3VlKS0+
cmVtb3ZlRGlzcGxheVRyZWUoKTsKKyAgICBjdWUucmVtb3ZlRGlzcGxheVRyZWUoKTsKICAgICB1
cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRNZWRpYVRpbWUoKSk7CiAKLSAgICBpZiAo
Y3VlLmlzUmVuZGVyYWJsZSgpKQorICAgIGlmIChpc1ZUVCkKICAgICAgICAgdG9WVFRDdWUoJmN1
ZSktPm5vdGlmeVJlZ2lvbldoZW5SZW1vdmluZ0Rpc3BsYXlUcmVlKHRydWUpOwogfQogCkBAIC02
NTg2LDYgKzY1ODgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFj
a0Rpc3BsYXkoVGV4dFRyYWNrVmlzaWJpbGl0eUNoZWNrVHlwZSBjaAogICAgICAgICByZXR1cm47
CiAKICAgICBlbnN1cmVNZWRpYUNvbnRyb2xzU2hhZG93Um9vdCgpOworICAgIHVwZGF0ZVRleHRU
cmFja0Rpc3BsYXkoKTsKICNlbHNlCiAgICAgaWYgKCFtX2hhdmVWaXNpYmxlVGV4dFRyYWNrICYm
ICFoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY2MDksNyArNjYxMiw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCiAK
ICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGlmIChtX21lZGlhQ29udHJv
bHNIb3N0KQotICAgICAgICBtX21lZGlhQ29udHJvbHNIb3N0LT51cGRhdGVDYXB0aW9uRGlzcGxh
eVNpemVzKCk7CisgICAgICAgIG1fbWVkaWFDb250cm9sc0hvc3QtPnVwZGF0ZUNhcHRpb25EaXNw
bGF5U2l6ZXMoTWVkaWFDb250cm9sc0hvc3Q6OkZvcmNlVXBkYXRlOjpZZXMpOwogI2VuZGlmCiAK
ICAgICBpZiAobV9wbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggY2RkYzViNzk1ZDYyNDk2YWNhMTczMzA2OTk1
M2FiMjgyZmVhMzE2MS4uMjVmNGJiNDEwNDRjNzJhNmYxNTliYzM0YjZmNWVkMTI5YzE5ZmY0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tDdWVHZW5lcmljLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2luY2x1ZGUg
IlZUVFJlZ2lvbkxpc3QuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAt
MTEyNSwxNCArMTEyNiwxMyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgIC8vIDEuIElmIHRoZSBtZWRpYSBlbGVtZW50IGlz
IGFuIGF1ZGlvIGVsZW1lbnQsIG9yIGlzIGFub3RoZXIgcGxheWJhY2sKICAgICAvLyBtZWNoYW5p
c20gd2l0aCBubyByZW5kZXJpbmcgYXJlYSwgYWJvcnQgdGhlc2Ugc3RlcHMuIFRoZXJlIGlzIG5v
dGhpbmcgdG8KICAgICAvLyByZW5kZXIuCi0gICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwgIW1lZGlh
RWxlbWVudC0+aXNWaWRlbygpKQorICAgIGlmICghbWVkaWFFbGVtZW50IHx8ICFtZWRpYUVsZW1l
bnQtPmlzVmlkZW8oKSB8fCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gMi4gTGV0IHZpZGVvIGJlIHRoZSBtZWRpYSBlbGVtZW50
IG9yIG90aGVyIHBsYXliYWNrIG1lY2hhbmlzbS4KICAgICBIVE1MVmlkZW9FbGVtZW50JiB2aWRl
byA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCptZWRpYUVsZW1lbnQpOwogCiAgICAgLy8g
My4gTGV0IG91dHB1dCBiZSBhbiBlbXB0eSBsaXN0IG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBD
U1MgYmxvY2sgYm94ZXMuCi0gICAgVmVjdG9yPFJlZlB0cjxIVE1MRGl2RWxlbWVudD4+IG91dHB1
dDsKIAogICAgIC8vIDQuIElmIHRoZSB1c2VyIGFnZW50IGlzIGV4cG9zaW5nIGEgdXNlciBpbnRl
cmZhY2UgZm9yIHZpZGVvLCBhZGQgdG8KICAgICAvLyBvdXRwdXQgb25lIG9yIG1vcmUgY29tcGxl
dGVseSB0cmFuc3BhcmVudCBwb3NpdGlvbmVkIENTUyBibG9jayBib3hlcyB0aGF0CkBAIC0xMTcz
LDE3ICsxMTczLDEyIEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6dXBkYXRlRGlzcGxheSgpCiAgICAgICAgIHJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICBhY3Rp
dmVDdWVzLnJlbW92ZUFsbE1hdGNoaW5nKFtdIChDdWVJbnRlcnZhbCYgY3VlSW50ZXJ2YWwpIHsK
LSAgICAgICAgaWYgKCFpczxWVFRDdWU+KGN1ZUludGVydmFsLmRhdGEoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBSZWY8VlRUQ3VlPiBjdWUgPSBkb3duY2FzdDxWVFRD
dWU+KCpjdWVJbnRlcnZhbC5kYXRhKCkpOwotCi0gICAgICAgIHJldHVybiAhY3VlLT5pc1JlbmRl
cmFibGUoKQotICAgICAgICAgICAgfHwgIWN1ZS0+dHJhY2soKQorICAgICAgICBSZWZQdHI8VGV4
dFRyYWNrQ3VlPiBjdWUgPSBjdWVJbnRlcnZhbC5kYXRhKCk7CisgICAgICAgIHJldHVybiAhY3Vl
LT50cmFjaygpCiAgICAgICAgICAgICB8fCAhY3VlLT50cmFjaygpLT5pc1JlbmRlcmVkKCkKICAg
ICAgICAgICAgIHx8IGN1ZS0+dHJhY2soKS0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6RGlz
YWJsZWQKICAgICAgICAgICAgIHx8ICFjdWUtPmlzQWN0aXZlKCkKLSAgICAgICAgICAgIHx8IGN1
ZS0+dGV4dCgpLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIHx8ICFjdWUtPmlzUmVuZGVyYWJsZSgp
OwogICAgIH0pOwogCiAgICAgLy8gU29ydCB0aGUgYWN0aXZlIGN1ZXMgZm9yIHRoZSBhcHByb3By
aWF0ZSBkaXNwbGF5IG9yZGVyLiBGb3IgZXhhbXBsZSwgZm9yIHJvbGwtdXAKQEAgLTExOTEsMzcg
KzExODYsMjAgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1
cGRhdGVEaXNwbGF5KCkKICAgICAvLyBzbyB0aGF0IHRoZSBuZXdlc3QgY2FwdGlvbnMgYXBwZWFy
IGF0IHRoZSBib3R0b20uCiAgICAgc3RkOjpzb3J0KGFjdGl2ZUN1ZXMuYmVnaW4oKSwgYWN0aXZl
Q3Vlcy5lbmQoKSwgJmNvbXBhcmVDdWVJbnRlcnZhbEZvckRpc3BsYXkpOwogCi0gICAgLy8gMTAu
IEZvciBlYWNoIHRleHQgdHJhY2sgY3VlIGN1ZSBpbiBjdWVzIHRoYXQgaGFzIG5vdCB5ZXQgaGFk
Ci0gICAgLy8gY29ycmVzcG9uZGluZyBDU1MgYm94ZXMgYWRkZWQgdG8gb3V0cHV0LCBpbiB0ZXh0
IHRyYWNrIGN1ZSBvcmRlciwgcnVuIHRoZQotICAgIC8vIGZvbGxvd2luZyBzdWJzdGVwczoKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFtZWRpYUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBSZWZQdHI8VlRUQ3VlPiBjdWUgPSBkb3duY2Fz
dDxWVFRDdWU+KGFjdGl2ZUN1ZXNbaV0uZGF0YSgpKTsKLQotICAgICAgICBERUJVR19MT0coTE9H
SURFTlRJRklFUiwgImFkZGluZyBhbmQgcG9zaXRpb25pbmcgY3VlICIsIGksICI6IFwiIiwgY3Vl
LT50ZXh0KCksICJcIiwgc3RhcnQ9IiwgY3VlLT5zdGFydFRpbWUoKSwgIiwgZW5kPSIsIGN1ZS0+
ZW5kVGltZSgpLCAiLCBsaW5lPSIsIGN1ZS0+bGluZSgpKTsKLSAgICAgICAgUmVmPFZUVEN1ZUJv
eD4gZGlzcGxheUJveCA9IGN1ZS0+Z2V0RGlzcGxheVRyZWUobV92aWRlb0Rpc3BsYXlTaXplLnNp
emUoKSwgbV9mb250U2l6ZSk7Ci0gICAgICAgIFJlZlB0cjxWVFRSZWdpb24+IHJlZ2lvbiA9IGN1
ZS0+dHJhY2soKS0+cmVnaW9ucygpLT5nZXRSZWdpb25CeUlkKGN1ZS0+cmVnaW9uSWQoKSk7Ci0g
ICAgICAgIGlmICghcmVnaW9uKSB7Ci0gICAgICAgICAgICAvLyBJZiBjdWUgaGFzIGFuIGVtcHR5
IHRleHQgdHJhY2sgY3VlIHJlZ2lvbiBpZGVudGlmaWVyIG9yIHRoZXJlIGlzIG5vCi0gICAgICAg
ICAgICAvLyBXZWJWVFQgcmVnaW9uIHdob3NlIHJlZ2lvbiBpZGVudGlmaWVyIGlzIGlkZW50aWNh
bCB0byBjdWUncyB0ZXh0Ci0gICAgICAgICAgICAvLyB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZp
ZXIsIHJ1biB0aGUgZm9sbG93aW5nIHN1YnN0ZXBzOgotICAgICAgICAgICAgaWYgKGRpc3BsYXlC
b3gtPmhhc0NoaWxkTm9kZXMoKSAmJiAhY29udGFpbnMoZGlzcGxheUJveC5wdHIoKSkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBOb3RlOiB0aGUgZGlzcGxheSB0cmVlIG9mIGEgY3VlIGlzIHJlbW92
ZWQgd2hlbiB0aGUgYWN0aXZlIGZsYWcgb2YgdGhlIGN1ZSBpcyB1bnNldC4KLSAgICAgICAgICAg
ICAgICBhcHBlbmRDaGlsZChkaXNwbGF5Qm94KTsKLSAgICAgICAgICAgICAgICBjdWUtPnNldEZv
bnRTaXplKG1fZm9udFNpemUsIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemVJ
c0ltcG9ydGFudCk7CisgICAgaWYgKG1lZGlhQ29udHJvbGxlcigpLT5jbG9zZWRDYXB0aW9uc1Zp
c2libGUoKSkgeworICAgICAgICAvLyAxMC4gRm9yIGVhY2ggdGV4dCB0cmFjayBjdWUgY3VlIGlu
IGN1ZXMgdGhhdCBoYXMgbm90IHlldCBoYWQKKyAgICAgICAgLy8gY29ycmVzcG9uZGluZyBDU1Mg
Ym94ZXMgYWRkZWQgdG8gb3V0cHV0LCBpbiB0ZXh0IHRyYWNrIGN1ZSBvcmRlciwgcnVuIHRoZQor
ICAgICAgICAvLyBmb2xsb3dpbmcgc3Vic3RlcHM6CisgICAgICAgIGZvciAoYXV0byYgaW50ZXJ2
YWwgOiBhY3RpdmVDdWVzKSB7CisgICAgICAgICAgICBhdXRvIGN1ZSA9IGludGVydmFsLmRhdGEo
KTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Rm9udFNpemUobV9mb250U2l6ZSwgbV92aWRlb0Rpc3Bs
YXlTaXplLnNpemUoKSwgbV9mb250U2l6ZUlzSW1wb3J0YW50KTsKKyAgICAgICAgICAgIGlmIChp
czxWVFRDdWU+KGN1ZSkgfHwgaXM8VGV4dFRyYWNrQ3VlR2VuZXJpYz4oY3VlKSkKKyAgICAgICAg
ICAgICAgICBwcm9jZXNzQWN0aXZlVlRUQ3VlKCpkb3duY2FzdDxWVFRDdWU+KGN1ZSkpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBkaXNwbGF5Qm94ID0gY3VlLT5n
ZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXplKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZGlzcGxheUJveC0+aGFzQ2hpbGROb2RlcygpICYmICFjb250YWlu
cyhkaXNwbGF5Qm94LmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQoKmRp
c3BsYXlCb3gpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gTGV0IHJlZ2lvbiBiZSB0aGUgV2ViVlRUIHJlZ2lvbiB3aG9zZSByZWdpb24gaWRlbnRpZmll
cgotICAgICAgICAgICAgLy8gbWF0Y2hlcyB0aGUgdGV4dCB0cmFjayBjdWUgcmVnaW9uIGlkZW50
aWZpZXIgb2YgY3VlLgotICAgICAgICAgICAgUmVmPEhUTUxEaXZFbGVtZW50PiByZWdpb25Ob2Rl
ID0gcmVnaW9uLT5nZXREaXNwbGF5VHJlZSgpOwotCi0gICAgICAgICAgICAvLyBBcHBlbmQgdGhl
IHJlZ2lvbiB0byB0aGUgdmlld3BvcnQsIGlmIGl0IHdhcyBub3QgYWxyZWFkeS4KLSAgICAgICAg
ICAgIGlmICghY29udGFpbnMocmVnaW9uTm9kZS5wdHIoKSkpCi0gICAgICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQocmVnaW9uLT5nZXREaXNwbGF5VHJlZSgpKTsKLQotICAgICAgICAgICAgcmVnaW9u
LT5hcHBlbmRUZXh0VHJhY2tDdWVCb3goV1RGTW92ZShkaXNwbGF5Qm94KSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEyMzUsNiArMTIxMywzMyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgIH0KIH0KIAordm9pZCBNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojpwcm9jZXNzQWN0aXZlVlRUQ3VlKFZU
VEN1ZSYgY3VlKQoreworICAgIEFTU0VSVChpczxWVFRDdWU+KGN1ZSkgfHwgaXM8VGV4dFRyYWNr
Q3VlR2VuZXJpYz4oY3VlKSk7CisKKyAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImFkZGlu
ZyBhbmQgcG9zaXRpb25pbmcgY3VlOiBcIiIsIGN1ZS50ZXh0KCksICJcIiwgc3RhcnQ9IiwgY3Vl
LnN0YXJ0VGltZSgpLCAiLCBlbmQ9IiwgY3VlLmVuZFRpbWUoKSwgIiwgbGluZT0iLCBjdWUubGlu
ZSgpKTsKKyAgICBSZWY8VGV4dFRyYWNrQ3VlQm94PiBkaXNwbGF5Qm94ID0gKmN1ZS5nZXREaXNw
bGF5VHJlZShtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXplKTsKKworICAgIGlm
IChhdXRvIHJlZ2lvbiA9IGN1ZS50cmFjaygpLT5yZWdpb25zKCktPmdldFJlZ2lvbkJ5SWQoY3Vl
LnJlZ2lvbklkKCkpKSB7CisgICAgICAgIC8vIExldCByZWdpb24gYmUgdGhlIFdlYlZUVCByZWdp
b24gd2hvc2UgcmVnaW9uIGlkZW50aWZpZXIKKyAgICAgICAgLy8gbWF0Y2hlcyB0aGUgdGV4dCB0
cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIgb2YgY3VlLgorICAgICAgICBSZWY8SFRNTERpdkVs
ZW1lbnQ+IHJlZ2lvbk5vZGUgPSByZWdpb24tPmdldERpc3BsYXlUcmVlKCk7CisKKyAgICAgICAg
aWYgKCFjb250YWlucyhyZWdpb25Ob2RlLnB0cigpKSkKKyAgICAgICAgICAgIGFwcGVuZENoaWxk
KHJlZ2lvbi0+Z2V0RGlzcGxheVRyZWUoKSk7CisKKyAgICAgICAgcmVnaW9uLT5hcHBlbmRUZXh0
VHJhY2tDdWVCb3goV1RGTW92ZShkaXNwbGF5Qm94KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gSWYgY3VlIGhhcyBhbiBlbXB0eSB0ZXh0IHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciBv
ciB0aGVyZSBpcyBubworICAgICAgICAvLyBXZWJWVFQgcmVnaW9uIHdob3NlIHJlZ2lvbiBpZGVu
dGlmaWVyIGlzIGlkZW50aWNhbCB0byBjdWUncyB0ZXh0CisgICAgICAgIC8vIHRyYWNrIGN1ZSBy
ZWdpb24gaWRlbnRpZmllciwgcnVuIHRoZSBmb2xsb3dpbmcgc3Vic3RlcHM6CisgICAgICAgIGlm
IChkaXNwbGF5Qm94LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKGRpc3BsYXlCb3gucHRy
KCkpKSB7CisgICAgICAgICAgICAvLyBOb3RlOiB0aGUgZGlzcGxheSB0cmVlIG9mIGEgY3VlIGlz
IHJlbW92ZWQgd2hlbiB0aGUgYWN0aXZlIGZsYWcgb2YgdGhlIGN1ZSBpcyB1bnNldC4KKyAgICAg
ICAgICAgIGFwcGVuZENoaWxkKGRpc3BsYXlCb3gpOworICAgICAgICB9CisgICAgfQorfQorCiB2
b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZUN1
ZXNGb250U2l6ZSgpCiB7CiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKQEAgLTEyNTAsMTIg
KzEyNTUsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZUFjdGl2ZUN1ZXNGb250U2l6ZSgpCiAKICAgICBmb3IgKGF1dG8mIGFjdGl2ZUN1ZSA6IG1l
ZGlhRWxlbWVudC0+Y3VycmVudGx5QWN0aXZlQ3VlcygpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0
VHJhY2tDdWU+IGN1ZSA9IGFjdGl2ZUN1ZS5kYXRhKCk7Ci0gICAgICAgIGlmICghY3VlLT5pc1Jl
bmRlcmFibGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRvVlRUQ3VlKGN1
ZS5nZXQoKSktPnNldEZvbnRTaXplKG1fZm9udFNpemUsIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXpl
KCksIG1fZm9udFNpemVJc0ltcG9ydGFudCk7CisgICAgICAgIGlmIChjdWUtPmlzUmVuZGVyYWJs
ZSgpKQorICAgICAgICAgICAgY3VlLT5zZXRGb250U2l6ZShtX2ZvbnRTaXplLCBtX3ZpZGVvRGlz
cGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQpOwogICAgIH0KLQogfQogCiB2
b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRleHRTdHJv
a2VTdHlsZSgpCkBAIC0xMjk1LDYgKzEyOTcsMTMgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVUaW1lckZpcmVkKCkKICAgICBpZiAoIWRvY3VtZW50
KCkucGFnZSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIG1lZGlhRWxlbWVudCA9IHBh
cmVudE1lZGlhRWxlbWVudCh0aGlzKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yIChhdXRvJiBhY3RpdmVDdWUgOiBtZWRpYUVsZW1lbnQtPmN1cnJl
bnRseUFjdGl2ZUN1ZXMoKSkKKyAgICAgICAgYWN0aXZlQ3VlLmRhdGEoKS0+cmVjYWxjdWxhdGVT
dHlsZXMoKTsKKwogICAgIGlmIChtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uKQogICAgICAgICB1
cGRhdGVTdHlsZUZvclRleHRUcmFja1JlcHJlc2VudGF0aW9uKCk7CiAKQEAgLTEzMTIsNyArMTMy
MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRl
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKQogICAgIGlmICghbWVkaWFFbGVtZW50LT5yZXF1aXJl
c1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgaWYgKG1fdGV4dFRyYWNrUmVw
cmVzZW50YXRpb24pIHsKICAgICAgICAgICAgIGNsZWFyVGV4dFRyYWNrUmVwcmVzZW50YXRpb24o
KTsKLSAgICAgICAgICAgIHVwZGF0ZVNpemVzKHRydWUpOworICAgICAgICAgICAgdXBkYXRlU2l6
ZXMoRm9yY2VVcGRhdGU6Olllcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEzNDYsNiArMTM1NSw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6dXBkYXRlU3R5bGVGb3JUZXh0VHJhY2tSZXByZXNlbnRhdGlvCiB7CiAgICAgaWYg
KCFtX3VwZGF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uU3R5bGUpCiAgICAgICAgIHJldHVybjsK
KwogICAgIG1fdXBkYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25TdHlsZSA9IGZhbHNlOwogCiAg
ICAgaWYgKG1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb24pIHsKQEAgLTEzNjgsMTYgKzEzNzgsMTYg
QEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjplbnRlcmVkRnVs
bHNjcmVlbigpCiB7CiAgICAgaWYgKGhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgdXBkYXRlVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKLSAgICB1cGRhdGVTaXplcyh0cnVlKTsKKyAgICB1cGRh
dGVTaXplcyhGb3JjZVVwZGF0ZTo6WWVzKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpleGl0ZWRGdWxsc2NyZWVuKCkKIHsKICAgICBjbGVhclRleHRU
cmFja1JlcHJlc2VudGF0aW9uKCk7Ci0gICAgdXBkYXRlU2l6ZXModHJ1ZSk7CisgICAgdXBkYXRl
U2l6ZXMoRm9yY2VVcGRhdGU6Olllcyk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoYm9vbCBmb3JjZVVwZGF0ZSkKK3ZvaWQgTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoRm9yY2VVcGRh
dGUgZm9yY2UpCiB7CiAgICAgYXV0byBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQo
dGhpcyk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCkBAIC0xMzk4LDcgKzE0MDgsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKGJvb2wg
Zm9yY2VVcGRhdGUpCiAgICAgICAgIHZpZGVvQm94ID0gZG93bmNhc3Q8UmVuZGVyVmlkZW8+KCpt
ZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkpLnZpZGVvQm94KCk7CiAgICAgfQogCi0gICAgaWYgKCFm
b3JjZVVwZGF0ZSAmJiBtX3ZpZGVvRGlzcGxheVNpemUgPT0gdmlkZW9Cb3gpCisgICAgaWYgKGZv
cmNlID09IEZvcmNlVXBkYXRlOjpObyAmJiBtX3ZpZGVvRGlzcGxheVNpemUgPT0gdmlkZW9Cb3gp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmlkZW9EaXNwbGF5U2l6ZSA9IHZpZGVvQm94Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgK
aW5kZXggN2MyY2M2NWY5NjMwNzlmMDY1M2QzMmQ2ZmVhZDNjOGY1NTZjNjNjOS4uZWFiNTU4ZjUy
MzgxNzg1ZDVlZGRmMmM4YmM3ZTQ2OGYyY2ZiMDgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ2Nyw2ICs0NjcsOCBAQCBw
cml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCitjbGFzcyBWVFRDdWU7CisKIGNs
YXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQgZmluYWwKICAgICA6IHB1
YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50CiAgICAgLCBwdWJsaWMgVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25DbGllbnQKQEAgLTQ3OCw4ICs0ODAsMTAgQEAgY2xhc3MgTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudCBmaW5hbAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAK
KyAgICBlbnVtIGNsYXNzIEZvcmNlVXBkYXRlIHsgWWVzLCBObyB9OworICAgIHZvaWQgdXBkYXRl
U2l6ZXMoRm9yY2VVcGRhdGUgZm9yY2UgPSBGb3JjZVVwZGF0ZTo6Tm8pOworCiAgICAgdm9pZCB1
cGRhdGVEaXNwbGF5KCk7Ci0gICAgdm9pZCB1cGRhdGVTaXplcyhib29sIGZvcmNlVXBkYXRlID0g
ZmFsc2UpOwogICAgIHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGV4aXRlZEZ1
bGxzY3JlZW4oKTsKIApAQCAtNDg3LDYgKzQ5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVUaW1lckZpcmVkKCk7CiAgICAgdm9pZCB1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKTsKICAg
ICB2b2lkIHVwZGF0ZVRleHRTdHJva2VTdHlsZSgpOworICAgIHZvaWQgcHJvY2Vzc0FjdGl2ZVZU
VEN1ZShWVFRDdWUmKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExv
Z2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IGE3ZGJkYWRiMzI4OGVjM2JmN2QwOTBkY2M1NmIyNzkz
MjBiOTJmYzAuLjY0Yzg4ZTU2YmRiOGQzODExM2Y5MDc3MzhmMDg2NWJhOWJjMGY0NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC00MTAsNyAr
NDEwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjp0ZXh0VHJhY2tQcmVmZXJlbmNlc0NoYW5nZWQo
KQogewogICAgIGNsb3NlZENhcHRpb25UcmFja3NDaGFuZ2VkKCk7CiAgICAgaWYgKG1fdGV4dERp
c3BsYXlDb250YWluZXIpCi0gICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZVNp
emVzKHRydWUpOworICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVTaXplcyhN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpGb3JjZVVwZGF0ZTo6WWVzKTsK
IH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzOjpjbGVhclRleHREaXNwbGF5Q29udGFpbmVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAppbmRleCA1OWExOTI0NjIwOWIwMDlh
YzAxNGFiYTliNzIwZjMyMmQ1NjE3OTc3Li4xODBjOTZjYzdhZjhhZGYxNWE1ZjFhNjJjNTc2MDY4
YTRlYjA1MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC0y
MzcsMTEgKzIzNyw4IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKE1vZGUgbW9kZSkKICAgICAg
ICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOwogCiAgICAg
aWYgKG1vZGUgIT0gTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxUZXh0VHJhY2tDdWU+IGN1ZSA9IG1fY3Vlcy0+aXRlbShpKTsKLSAgICAgICAgICAgIGlmIChj
dWUtPmlzUmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgICAgIHRvVlRUQ3VlKGN1ZS5nZXQoKSkt
PnJlbW92ZURpc3BsYXlUcmVlKCk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX2N1ZXMtPml0ZW0o
aSktPnJlbW92ZURpc3BsYXlUcmVlKCk7CiAgICAgfQogCiAgICAgbV9tb2RlID0gbW9kZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA4ZWFjNzUxY2Q3
Y2E2ODk4MTlhYTA2YzJlM2FlZWYzNzliM2U1NDA5Li5mYWMwNmJkZjVmMTgwYjY2YjI4NjRlZjk2
ZTJlYzEyZjU1MjNiYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC0zNiw5ICszNiwxNSBAQAogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJET01SZWN0LmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUg
IkhUTUxEaXZFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0Lmgi
CkBAIC00OCwxMSArNTQsMTMgQEAKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tDdWUpOworV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFRleHRUcmFja0N1ZUJveCk7CiAKIGNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFja0N1
ZTo6Y3VlU2hhZG93UHNldWRvSWQoKQogewpAQCAtNjAsMTIgKzY4LDE2NSBAQCBjb25zdCBBdG9t
U3RyaW5nJiBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkKICAgICByZXR1cm4gY3Vl
OwogfQogCitjb25zdCBBdG9tU3RyaW5nJiBUZXh0VHJhY2tDdWU6OmN1ZUJveFNoYWRvd1BzZXVk
b0lkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJh
Y2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNw
bGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0cmFj
a0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKK30KKworY29uc3QgQXRvbVN0cmluZyYgVGV4dFRy
YWNrQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgiLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXktYmFja2Ryb3AiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7
Cit9CisKK3N0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVBdHRyaWJ1dE5hbWUoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVUYWcobnVsbEF0b20o
KSwgImN1ZSIsIG51bGxBdG9tKCkpOworICAgIHJldHVybiBjdWVUYWc7Cit9CisKK3N0YXRpYyBj
b25zdCBRdWFsaWZpZWROYW1lJiBjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlQmFja2dyb3VuZFRhZyhudWxs
QXRvbSgpLCAiY3VlYmFja2dyb3VuZCIsIG51bGxBdG9tKCkpOworICAgIHJldHVybiBjdWVCYWNr
Z3JvdW5kVGFnOworfQorCitUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveChEb2N1bWVu
dCYgZG9jdW1lbnQsIFRleHRUcmFja0N1ZSYgY3VlKQorICAgIDogSFRNTEVsZW1lbnQoSFRNTE5h
bWVzOjpkaXZUYWcsIGRvY3VtZW50KQorICAgICwgbV9jdWUobWFrZVdlYWtQdHIoY3VlKSkKK3sK
KyAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKKyAgICBzZXRQc2V1ZG8o
VGV4dFRyYWNrQ3VlOjpjdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKK30KKworVGV4dFRyYWNrQ3Vl
KiBUZXh0VHJhY2tDdWVCb3g6OmdldEN1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VlLmdl
dCgpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNMZWdhbE5vZGUoTm9kZSYgbm9kZSkKK3sK
KyAgICByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YnJUYWcpCisgICAgICAgIHx8
IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmRpdlRhZykKKyAgICAgICAgfHwgbm9kZS5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpwVGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpyYlRh
ZykKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cnRUYWcpCisgICAgICAg
IHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnJ0Y1RhZykKKyAgICAgICAgfHwgbm9kZS5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6cnVieVRhZykKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6c3BhblRhZykKKyAgICAgICAgfHwgbm9kZS5ub2RlVHlwZSgpID09IE5vZGU6
OlRFWFRfTk9ERTsKK30KKworc3RhdGljIEV4Y2VwdGlvbiBpbnZhbGlkTm9kZUV4Y2VwdGlvbihO
b2RlJiBub2RlKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJv
ciwgbWFrZVN0cmluZygiSW52YWxpZCBub2RlIHR5cGU6ICIsIG5vZGUubm9kZU5hbWUoKSkgfTsK
K30KKworc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcyhO
b2RlJiByb290KQoreworICAgIGlmICghaXNMZWdhbE5vZGUocm9vdCkpCisgICAgICAgIHJldHVy
biBpbnZhbGlkTm9kZUV4Y2VwdGlvbihyb290KTsKKworICAgIGZvciAoYXV0byogY2hpbGQgPSBy
b290LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsK
KyAgICAgICAgaWYgKCFpc0xlZ2FsTm9kZSgqY2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIGlu
dmFsaWROb2RlRXhjZXB0aW9uKCpjaGlsZCk7CisKKyAgICAgICAgaWYgKGlzPENvbnRhaW5lck5v
ZGU+KCpjaGlsZCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gY2hlY2tGb3JJbnZhbGlk
Tm9kZVR5cGVzKCpjaGlsZCk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKworZW51bSBSZXF1aXJlZE5vZGVz
IHsKKyAgICBDdWUgPSAxIDw8IDAsCisgICAgQ3VlQmFja2dyb3VuZCA9IDEgPDwgMSwKK307CisK
K3N0YXRpYyBPcHRpb25TZXQ8UmVxdWlyZWROb2Rlcz4gdGFnUHNldWRvT2JqZWN0cyhOb2RlJiBu
b2RlKQoreworICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBPcHRpb25TZXQ8UmVxdWlyZWROb2Rlcz4gbm9kZVR5cGVzID0geyB9OworCisgICAg
YXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgIGlmIChlbGVtZW50
Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY3VlQXR0cmlidXROYW1lKCkpKSB7
CisgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRv
SWQoKSk7CisgICAgICAgIG5vZGVUeXBlcyA9IHsgUmVxdWlyZWROb2Rlczo6Q3VlIH07CisgICAg
fSBlbHNlIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY3Vl
QmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpKSkgeworICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhU
ZXh0VHJhY2tDdWU6OmN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIG5vZGVU
eXBlcyA9IHsgUmVxdWlyZWROb2Rlczo6Q3VlQmFja2dyb3VuZCB9OworICAgIH0KKworICAgIGZv
ciAoYXV0byogY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIG5vZGVUeXBlcy5hZGQodGFnUHNldWRvT2JqZWN0
cygqY2hpbGQpKTsKKworICAgIHJldHVybiBub2RlVHlwZXM7Cit9CisKK3N0YXRpYyB2b2lkIHJl
bW92ZVBzZXVkb0F0dHJpYnV0ZXMoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWlzPEVsZW1lbnQ+
KG5vZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8
RWxlbWVudD4obm9kZSk7CisgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihjdWVBdHRyaWJ1dE5hbWUoKSkgfHwgZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKSkpCisgICAgICAg
IGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKEhUTUxOYW1lczo6cHNldWRvQXR0cik7CisKKyAgICBm
b3IgKGF1dG8qIGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKQorICAgICAgICByZW1vdmVQc2V1ZG9BdHRyaWJ1dGVzKCpjaGls
ZCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxUZXh0VHJhY2tDdWU+PiBUZXh0VHJhY2tDdWU6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQsIERvY3VtZW50RnJhZ21lbnQmIGN1ZURvY3VtZW50KQoreworICAgIEFTU0VSVChjb250
ZXh0LmlzRG9jdW1lbnQoKSk7CisgICAgQVNTRVJUKGlzPERvY3VtZW50RnJhZ21lbnQ+KGN1ZURv
Y3VtZW50KSk7CisKKyAgICBpZiAoIWN1ZURvY3VtZW50LmZpcnN0Q2hpbGQoKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWROb2RlVHlwZUVycm9yLCAiRW1wdHkgY3VlIGZyYWdt
ZW50IiB9OworCisgICAgZm9yIChOb2RlKiBub2RlID0gY3VlRG9jdW1lbnQuZmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcygqbm9kZSk7CisgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKTsKKyAgICB9CisKKyAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3Jl
YXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSk7CisgICAgZm9yIChOb2RlKiBub2RlID0g
Y3VlRG9jdW1lbnQuZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmco
KSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGZyYWdtZW50LT5lbnN1cmVQcmVJbnNlcnRpb25W
YWxpZGl0eSgqbm9kZSwgbnVsbHB0cik7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICB9
CisgICAgY3VlRG9jdW1lbnQuY2xvbmVDaGlsZE5vZGVzKGZyYWdtZW50KTsKKworICAgIE9wdGlv
blNldDxSZXF1aXJlZE5vZGVzPiBub2RlVHlwZXMgPSB7IH07CisgICAgZm9yIChOb2RlKiBub2Rl
ID0gZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCkpCisgICAgICAgIG5vZGVUeXBlcy5hZGQodGFnUHNldWRvT2JqZWN0cygqbm9kZSkpOworCisg
ICAgaWYgKCFub2RlVHlwZXMuY29udGFpbnMoUmVxdWlyZWROb2Rlczo6Q3VlKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNzaW5n
IHJlcXVpcmVkIGF0dHJpYnV0ZTogIiwgY3VlQXR0cmlidXROYW1lKCkudG9TdHJpbmcoKSkgfTsK
KyAgICBpZiAoIW5vZGVUeXBlcy5jb250YWlucyhSZXF1aXJlZE5vZGVzOjpDdWVCYWNrZ3JvdW5k
KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3Ry
aW5nKCJNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZTogIiwgY3VlQmFja2dyb3VuZEF0dHJpYnV0
TmFtZSgpLnRvU3RyaW5nKCkpIH07CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJh
Y2tDdWUoY29udGV4dCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIFdURk1vdmUoZnJhZ21lbnQuZ2V0KCkpKSk7Cit9
CisKK1RleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBEb2N1
bWVudEZyYWdtZW50JiYgY3VlRnJhZ21lbnQpCisgICAgOiBUZXh0VHJhY2tDdWUoY29udGV4dCwg
c3RhcnQsIGVuZCkKK3sKKyAgICBtX2N1ZU5vZGUgPSAmY3VlRnJhZ21lbnQ7Cit9CisKIFRleHRU
cmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQogICAgIDogbV9zdGFy
dFRpbWUoc3RhcnQpCiAgICAgLCBtX2VuZFRpbWUoZW5kKQogICAgICwgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2lzQWN0aXZlKGZhbHNlKQotICAgICwgbV9wYXVz
ZU9uRXhpdChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmlz
RG9jdW1lbnQoKSk7CiB9CkBAIC04NSw2ICsyNDYsOCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6ZGlk
Q2hhbmdlKCkKICAgICBpZiAoLS1tX3Byb2Nlc3NpbmdDdWVDaGFuZ2VzKQogICAgICAgICByZXR1
cm47CiAKKyAgICBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUgPSB0cnVlOworCiAgICAgaWYgKG1f
dHJhY2spCiAgICAgICAgIG1fdHJhY2stPmN1ZURpZENoYW5nZSh0aGlzKTsKIH0KQEAgLTE2Niw2
ICszMjksMTMgQEAgYm9vbCBUZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkKIHZvaWQgVGV4dFRyYWNr
Q3VlOjpzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkKIHsKICAgICBtX2lzQWN0aXZlID0gYWN0aXZl
OworCisgICAgaWYgKG1faXNBY3RpdmUgfHwgIW1fZGlzcGxheVRyZWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFRoZSBkaXNwbGF5IHRyZWUgaXMgbmV2ZXIgZXhwb3NlZCB0byBhdXRob3Ig
c2NyaXB0cyBzbyBpdCdzIHNhZmUgdG8gZGlzcGF0Y2ggZXZlbnRzIGhlcmUuCisgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKm1fZGlzcGxh
eVRyZWUpOworICAgIG1fZGlzcGxheVRyZWUtPnJlbW92ZSgpOwogfQogCiBib29sIFRleHRUcmFj
a0N1ZTo6aXNPcmRlcmVkQmVmb3JlKGNvbnN0IFRleHRUcmFja0N1ZSogb3RoZXIpIGNvbnN0CkBA
IC0yMjUsOCArMzk1LDggQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnRvSlNPTihKU09OOjpPYmplY3Qm
IHZhbHVlKSBjb25zdAogewogICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gIkdlbmVyaWMiX3M7CiAg
ICAgc3dpdGNoIChjdWVUeXBlKCkpIHsKLSAgICBjYXNlIFRleHRUcmFja0N1ZTo6R2VuZXJpYzoK
LSAgICAgICAgdHlwZSA9ICJHZW5lcmljIl9zOworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpDb252
ZXJ0ZWRUb1dlYlZUVDoKKyAgICAgICAgdHlwZSA9ICJDb252ZXJ0ZWRUb1dlYlZUVCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0VHJhY2tDdWU6OldlYlZUVDoKICAgICAgICAgdHlw
ZSA9ICJXZWJWVFQiX3M7CkBAIC0yMzQsNiArNDA0LDkgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnRv
SlNPTihKU09OOjpPYmplY3QmIHZhbHVlKSBjb25zdAogICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpE
YXRhOgogICAgICAgICB0eXBlID0gIkRhdGEiX3M7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dFRyYWNrQ3VlOjpHZW5lcmljOgorICAgICAgICB0eXBlID0gIkdlbmVyaWMiX3M7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIHZhbHVlLnNldFN0cmluZygidHlwZSJfcywgdHlwZSk7
CkBAIC0yNTMsMTEgKzQyNiwxMDggQEAgU3RyaW5nIFRleHRUcmFja0N1ZTo6dG9KU09OU3RyaW5n
KCkgY29uc3QKIFN0cmluZyBUZXh0VHJhY2tDdWU6OmRlYnVnU3RyaW5nKCkgY29uc3QKIHsKICAg
ICBTdHJpbmcgdGV4dDsKLSAgICBpZiAoaXNSZW5kZXJhYmxlKCkpCisgICAgaWYgKGlzPFZUVEN1
ZT4odGhpcykpCiAgICAgICAgIHRleHQgPSB0b1ZUVEN1ZSh0aGlzKS0+dGV4dCgpOwogICAgIHJl
dHVybiBtYWtlU3RyaW5nKCIweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhp
cykpLCAiIGlkPSIsIGlkKCksICIgaW50ZXJ2YWw9Iiwgc3RhcnRUaW1lKCksICItLT4iLCBlbmRU
aW1lKCksICIgY3VlPSIsIHRleHQsICcpJyk7CiB9CiAKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCit7CisgICAgaWYgKCFtX2N1ZU5vZGUpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjbG9uZWRGcmFnbWVudCA9IERvY3Vt
ZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCkpOworICAgIG1fY3VlTm9kZS0+Y2xv
bmVDaGlsZE5vZGVzKGNsb25lZEZyYWdtZW50KTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IGNs
b25lZEZyYWdtZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGlu
ZygpKQorICAgICAgICByZW1vdmVQc2V1ZG9BdHRyaWJ1dGVzKCpub2RlKTsKKworICAgIHJldHVy
biBjbG9uZWRGcmFnbWVudDsKK30KKworYm9vbCBUZXh0VHJhY2tDdWU6OmlzUmVuZGVyYWJsZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VlTm9kZSAmJiBtX2N1ZU5vZGUtPmZpcnN0Q2hpbGQo
KTsKK30KKworUmVmUHRyPFRleHRUcmFja0N1ZUJveD4gVGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5
VHJlZShjb25zdCBJbnRTaXplJiwgaW50KQoreworICAgIGlmIChtX2Rpc3BsYXlUcmVlICYmICFt
X2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUpCisgICAgICAgIHJldHVybiBtX2Rpc3BsYXlUcmVlOwor
CisgICAgcmVidWlsZERpc3BsYXlUcmVlKCk7CisKKyAgICByZXR1cm4gbV9kaXNwbGF5VHJlZTsK
K30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnJlbW92ZURpc3BsYXlUcmVlKCkKK3sKKyAgICBpZiAo
IW1fZGlzcGxheVRyZWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBkaXNwbGF5IHRy
ZWUgaXMgbmV2ZXIgZXhwb3NlZCB0byBhdXRob3Igc2NyaXB0cyBzbyBpdCdzIHNhZmUgdG8gZGlz
cGF0Y2ggZXZlbnRzIGhlcmUuCisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93
ZWRTY29wZSBhbGxvd2VkU2NvcGUoKm1fZGlzcGxheVRyZWUpOworICAgIG1fZGlzcGxheVRyZWUt
PnJlbW92ZSgpOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6c2V0Rm9udFNpemUoaW50IGZvbnRT
aXplLCBjb25zdCBJbnRTaXplJiwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgaWYgKGZvbnRTaXpl
ID09IG1fZm9udFNpemUgJiYgaW1wb3J0YW50ID09IG1fZm9udFNpemVJc0ltcG9ydGFudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRlID0gdHJ1ZTsKKyAg
ICBtX2ZvbnRTaXplSXNJbXBvcnRhbnQgPSBpbXBvcnRhbnQ7CisgICAgbV9mb250U2l6ZSA9IGZv
bnRTaXplOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKCkKK3sK
KyAgICBpZiAoIW1fY3VlTm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGVGb3JSZWZlcmVuY2VUcmVl
KCptX2N1ZU5vZGUpOworCisgICAgaWYgKCFtX2Rpc3BsYXlUcmVlKSB7CisgICAgICAgIG1fZGlz
cGxheVRyZWUgPSBUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZShvd25lckRvY3VtZW50KCksICp0aGlz
KTsKKyAgICAgICAgbV9kaXNwbGF5VHJlZS0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQt
Z2VuZXJpYy1jdWUtcm9vdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgfQorCisgICAgbV9kaXNwbGF5VHJlZS0+cmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICBhdXRvIGNs
b25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnQoKSk7
CisgICAgbV9jdWVOb2RlLT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQpOworICAgIG1f
ZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKGNsb25lZEZyYWdtZW50KTsKKworICAgIGlmIChtX2Zv
bnRTaXplICYmIG93bmVyRG9jdW1lbnQoKS5wYWdlKCkpIHsKKyAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChvd25lckRvY3VtZW50KCkucGFnZSgp
LT5jYXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldCgpKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgOjoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoVGV4dFRyYWNrQ3Vl
OjpjdWVTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3snKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Rm9u
dFNpemUpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhtX2ZvbnRTaXplLCAicHgiKSk7CisgICAgICAgIGlmIChtX2ZvbnRT
aXplSXNJbXBvcnRhbnQpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAhaW1w
b3J0YW50Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOyB9Iik7CisKKyAgICAg
ICAgYXV0byBzdHlsZSA9IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxl
VGFnLCBvd25lckRvY3VtZW50KCksIGZhbHNlKTsKKyAgICAgICAgc3R5bGUtPnNldFRleHRDb250
ZW50KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENo
aWxkKHN0eWxlKTsKKyAgICB9CisKKyAgICBpZiAodHJhY2soKSkgeworICAgICAgICBpZiAoY29u
c3QgYXV0byYgc3R5bGVTaGVldHMgPSB0cmFjaygpLT5zdHlsZVNoZWV0cygpKSB7CisgICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGNzc1N0cmluZyA6ICpzdHlsZVNoZWV0cykgeworICAgICAg
ICAgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVz
OjpzdHlsZVRhZywgbV9kaXNwbGF5VHJlZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRUZXh0Q29udGVudChjc3NTdHJpbmcpOworICAgICAgICAgICAgICAg
IG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKHN0eWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIG1fZGlzcGxheVRyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggYWVkZGJkM2Q3OTFmZThjMjUyOTA5YTk2YjI2M2ZlMjI4
NmI3M2YyNC4uZWJiNDU5NzUxYTE0NzJhYzVmZjc4N2RhOTRhY2Y5YTMwMjRhMGE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0zNCwxNyArMzQsNDQgQEAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1ZTsK
IAotY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworY2xhc3MgVGV4dFRyYWNrQ3VlQm94
IDogcHVibGljIEhUTUxFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRU
cmFja0N1ZUJveCk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxUZXh0VHJhY2tDdWVCb3g+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0N1ZSYgY3VlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrQ3VlQm94KGRvY3VtZW50LCBjdWUpKTsK
KyAgICB9CisKKyAgICBUZXh0VHJhY2tDdWUqIGdldEN1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYpIHsgfQorCitwcm90ZWN0ZWQ6
CisgICAgVGV4dFRyYWNrQ3VlQm94KERvY3VtZW50JiwgVGV4dFRyYWNrQ3VlJik7CisgICAgflRl
eHRUcmFja0N1ZUJveCgpIHsgfQorCitwcml2YXRlOgorCisgICAgV2Vha1B0cjxUZXh0VHJhY2tD
dWU+IG1fY3VlOworfTsKKworY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8
VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxUZXh0VHJhY2tDdWU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFRleHRUcmFja0N1ZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1
ZVNoYWRvd1BzZXVkb0lkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1ZUJhY2tk
cm9wU2hhZG93UHNldWRvSWQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY3VlQm94
U2hhZG93UHNldWRvSWQoKTsKKworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8VGV4dFRyYWNr
Q3VlPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQsIERvY3VtZW50RnJhZ21lbnQmKTsKIAogICAgIFRleHRUcmFjayogdHJhY2soKSBjb25z
dDsKICAgICB2b2lkIHNldFRyYWNrKFRleHRUcmFjayopOwpAQCAtNzUsOSArMTAyLDkgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNFcXVpdmFsZW50U3RhcnRUaW1lKGNvbnN0IFRleHRUcmFja0N1
ZSYpIGNvbnN0OwogCi0gICAgZW51bSBDdWVUeXBlIHsgRGF0YSwgR2VuZXJpYywgV2ViVlRUIH07
Ci0gICAgdmlydHVhbCBDdWVUeXBlIGN1ZVR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgZW51bSBDdWVU
eXBlIHsgR2VuZXJpYywgRGF0YSwgQ29udmVydGVkVG9XZWJWVFQsIFdlYlZUVCB9OworICAgIHZp
cnR1YWwgQ3VlVHlwZSBjdWVUeXBlKCkgY29uc3QgeyByZXR1cm4gQ3VlVHlwZTo6R2VuZXJpYzsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmFibGUoKSBjb25zdDsKIAogICAgIGVudW0gQ3Vl
TWF0Y2hSdWxlcyB7IE1hdGNoQWxsRmllbGRzLCBJZ25vcmVEdXJhdGlvbiB9OwogICAgIHZpcnR1
YWwgYm9vbCBpc0VxdWFsKGNvbnN0IFRleHRUcmFja0N1ZSYsIEN1ZU1hdGNoUnVsZXMpIGNvbnN0
OwpAQCAtODYsMTMgKzExMywyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsQ2hhbmdlKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZSgpOwogCisgICAgdmlydHVhbCBSZWZQdHI8VGV4dFRy
YWNrQ3VlQm94PiBnZXREaXNwbGF5VHJlZShjb25zdCBJbnRTaXplJiwgaW50KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRGlzcGxheVRyZWUoKTsKKworICAgIHZpcnR1YWwgUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGdldEN1ZUFzSFRNTCgpOworCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygp
IGNvbnN0OwogICAgIFN0cmluZyBkZWJ1Z1N0cmluZygpIGNvbnN0OwogCiAgICAgdXNpbmcgUmVm
Q291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCisgICAgdmlydHVh
bCB2b2lkIHJlY2FsY3VsYXRlU3R5bGVzKCkgeyBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUgPSB0
cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZvbnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYs
IGJvb2wgaW1wb3J0YW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUoY29u
c3QgTWVkaWFUaW1lJikgeyB9OworCiBwcm90ZWN0ZWQ6CisgICAgVGV4dFRyYWNrQ3VlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgRG9jdW1lbnRGcmFnbWVudCYmKTsKICAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYg
ZW5kKTsKIAogICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8
RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KQEAgLTExMSw2ICsxNDgsOCBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4
dFRyYWNrQ3VlJikgY29uc3Q7CiAKKyAgICB2b2lkIHJlYnVpbGREaXNwbGF5VHJlZSgpOworCiAg
ICAgU3RyaW5nIG1faWQ7CiAgICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1lOwogICAgIE1lZGlhVGlt
ZSBtX2VuZFRpbWU7CkBAIC0xMjAsOCArMTU5LDE1IEBAIHByaXZhdGU6CiAKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICBib29sIG1f
aXNBY3RpdmUgOiAxOwotICAgIGJvb2wgbV9wYXVzZU9uRXhpdCA6IDE7CisgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IG1fY3VlTm9kZTsKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBt
X2Rpc3BsYXlUcmVlOworCisgICAgaW50IG1fZm9udFNpemUgeyAwIH07CisgICAgYm9vbCBtX2Zv
bnRTaXplSXNJbXBvcnRhbnQgeyBmYWxzZSB9OworCisgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fcGF1c2VPbkV4aXQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaXNw
bGF5VHJlZU5lZWRzVXBkYXRlIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCmluZGV4IDQ0ZmUx
NjhhYWQ2NTVkNmE3OWM2NjRhZGIxNWEzODcyYTE4ODUzMjUuLmQ1NGQwMTVmNWMwZTFjMmIwM2Q2
YzkyMTg5YThlMzlmMDNlYTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5pZGwKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDYgKzMwLDEwIEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBK
U0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKKyAgICBDb25z
dHJ1Y3Rvcihkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSwgRG9jdW1lbnRGcmFnbWVu
dCBjdWVOb2RlKSwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsCisgICAgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nPUdlbmVyaWNDdWVBUEksCisgICAg
Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKIF0gaW50ZXJmYWNlIFRleHRUcmFja0N1ZSA6
IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrIHRyYWNrOwog
CkBAIC0zOSw0ICs0NCw2IEBACiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZW50ZXI7
CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmV4aXQ7CisKKyAgICBbRW5hYmxlZEJ5U2V0
dGluZz1HZW5lcmljQ3VlQVBJXSBEb2N1bWVudEZyYWdtZW50IGdldEN1ZUFzSFRNTCgpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3Bw
CmluZGV4IDE1ZGZhMjMzODU5ZGNiYWIwNzVmMTRhZDg2MmEzNjgyYzMwM2I2NGUuLmM0YjZmZDlj
ZDUzNjUwMTY4MDNmODViZjFjMTdiMzE5NWQ5N2EyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBA
IGJvb2wgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNFcXVhbChjb25zdCBUZXh0VHJhY2tDdWUmIGN1
ZSwgVGV4dFRyYWNrQ3VlOjpDdWVNYXRjCiAgICAgaWYgKCFUZXh0VHJhY2tDdWU6OmlzRXF1YWwo
Y3VlLCBtYXRjaCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChjdWUuY3VlVHlw
ZSgpICE9IFRleHRUcmFja0N1ZTo6R2VuZXJpYykKKyAgICBpZiAoY3VlLmN1ZVR5cGUoKSAhPSBU
ZXh0VHJhY2tDdWU6OkNvbnZlcnRlZFRvV2ViVlRUKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICByZXR1cm4gY3VlQ29udGVudHNNYXRjaChjdWUpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGJv
b2wgVGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNPcmRlcmVkQmVmb3JlKGNvbnN0IFRleHRUcmFja0N1
ZSogdGhhdCkgY29uc3QKICAgICBpZiAoVlRUQ3VlOjppc09yZGVyZWRCZWZvcmUodGhhdCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHRoYXQtPmN1ZVR5cGUoKSA9PSBHZW5lcmlj
ICYmIHN0YXJ0VGltZSgpID09IHRoYXQtPnN0YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0aGF0
LT5lbmRUaW1lKCkpIHsKKyAgICBpZiAodGhhdC0+Y3VlVHlwZSgpID09IENvbnZlcnRlZFRvV2Vi
VlRUICYmIHN0YXJ0VGltZSgpID09IHRoYXQtPnN0YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0
aGF0LT5lbmRUaW1lKCkpIHsKICAgICAgICAgLy8gRnVydGhlciBvcmRlciBnZW5lcmljIGN1ZXMg
YnkgdGhlaXIgY2FsY3VsYXRlZCBsaW5lIHZhbHVlLgogICAgICAgICBzdGQ6OnBhaXI8ZG91Ymxl
LCBkb3VibGU+IHRoaXNQb3NpdGlvbiA9IGdldFBvc2l0aW9uQ29vcmRpbmF0ZXMoKTsKICAgICAg
ICAgc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiB0aGF0UG9zaXRpb24gPSB0b1ZUVEN1ZSh0aGF0
KS0+Z2V0UG9zaXRpb25Db29yZGluYXRlcygpOwpAQCAtMjYxLDE0ICsyNjEsMTQgQEAgYm9vbCBU
ZXh0VHJhY2tDdWVHZW5lcmljOjppc09yZGVyZWRCZWZvcmUoY29uc3QgVGV4dFRyYWNrQ3VlKiB0
aGF0KSBjb25zdAogCiBib29sIFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzUG9zaXRpb25lZEFib3Zl
KGNvbnN0IFRleHRUcmFja0N1ZSogdGhhdCkgY29uc3QKIHsKLSAgICBpZiAodGhhdC0+Y3VlVHlw
ZSgpID09IEdlbmVyaWMgJiYgc3RhcnRUaW1lKCkgPT0gdGhhdC0+c3RhcnRUaW1lKCkgJiYgZW5k
VGltZSgpID09IHRoYXQtPmVuZFRpbWUoKSkgeworICAgIGlmICh0aGF0LT5jdWVUeXBlKCkgPT0g
Q29udmVydGVkVG9XZWJWVFQgJiYgc3RhcnRUaW1lKCkgPT0gdGhhdC0+c3RhcnRUaW1lKCkgJiYg
ZW5kVGltZSgpID09IHRoYXQtPmVuZFRpbWUoKSkgewogICAgICAgICAvLyBGdXJ0aGVyIG9yZGVy
IGdlbmVyaWMgY3VlcyBieSB0aGVpciBjYWxjdWxhdGVkIGxpbmUgdmFsdWUuCiAgICAgICAgIHN0
ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gdGhpc1Bvc2l0aW9uID0gZ2V0UG9zaXRpb25Db29yZGlu
YXRlcygpOwogICAgICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IHRoYXRQb3NpdGlvbiA9
IHRvVlRUQ3VlKHRoYXQpLT5nZXRQb3NpdGlvbkNvb3JkaW5hdGVzKCk7CiAgICAgICAgIHJldHVy
biB0aGlzUG9zaXRpb24uc2Vjb25kID4gdGhhdFBvc2l0aW9uLnNlY29uZCB8fCAodGhpc1Bvc2l0
aW9uLnNlY29uZCA9PSB0aGF0UG9zaXRpb24uc2Vjb25kICYmIHRoaXNQb3NpdGlvbi5maXJzdCA8
IHRoYXRQb3NpdGlvbi5maXJzdCk7CiAgICAgfQogICAgIAotICAgIGlmICh0aGF0LT5jdWVUeXBl
KCkgPT0gR2VuZXJpYykKKyAgICBpZiAodGhhdC0+Y3VlVHlwZSgpID09IENvbnZlcnRlZFRvV2Vi
VlRUKQogICAgICAgICByZXR1cm4gc3RhcnRUaW1lKCkgPiB0aGF0LT5zdGFydFRpbWUoKTsKICAg
ICAKICAgICByZXR1cm4gVlRUQ3VlOjppc09yZGVyZWRCZWZvcmUodGhhdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCmluZGV4IDJjZDcxMDBj
ZTE1YWEzY2E2MWI1ZmNiODM1NTAwNDdlMDkyNjlhZWEuLmZkMGNiM2ViMzExOGNjM2YzM2M5YjY4
ODZhYTBmNjJhMDY0ZjFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlR2VuZXJpYy5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBj
dWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgZG9lc0V4dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBmaW5hbDsKIAotICAg
IEN1ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEdlbmVyaWM7IH0KKyAgICBD
dWVUeXBlIGN1ZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb252ZXJ0ZWRUb1dlYlZUVDsg
fQogCiAgICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7CiAgICAgQ29sb3IgbV9iYWNrZ3JvdW5k
Q29sb3I7CkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlRl
eHRUcmFja0N1ZUdlbmVyaWM+IHsKIH0KIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVHZW5lcmljKQotc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlRleHRUcmFja0N1ZSYgY3VlKSB7IHJldHVybiBjdWUuY3VlVHlwZSgpID09IFdlYkNv
cmU6OlRleHRUcmFja0N1ZTo6R2VuZXJpYzsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlRleHRUcmFja0N1ZSYgY3VlKSB7IHJldHVybiBjdWUuY3VlVHlwZSgpID09IFdlYkNv
cmU6OlRleHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ7IH0KIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5k
ZXggOWUwMmMyNmMwODMzOTEyYzkxMTM3NjU5ZmU3YmJkN2U4ZjBmM2MwYi4uOGRmZWJkMjVjMzRk
NjAzMzYxZjRkNzRiYWQ3NzNiZWZkNjk5YTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RGlz
YWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5o
IgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZUdlbmVyaWMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tD
dWVMaXN0LmgiCiAjaW5jbHVkZSAiVlRUUmVnaW9uTGlzdC5oIgogI2luY2x1ZGUgIlZUVFNjYW5u
ZXIuaCIKQEAgLTU5LDggKzYwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoVlRUQ3VlQm94KTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChWVFRDdWUpOworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFZUVEN1ZUJveCk7CiAK
IC8vIFRoaXMgY29uc3RhbnQgc2hvdWxkIGNvcnJlc3BvbmQgd2l0aCB0aGUgcGVyY2VudGFnZSBy
ZXR1cm5lZCBieSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uRm9udFNpemVTY2FsZUFu
ZEltcG9ydGFuY2UuCiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBERUZBVUxUQ0FQVElPTkZPTlRT
SVpFUEVSQ0VOVEFHRSA9IDU7CkBAIC0xMjYsMzEgKzEyNywxOSBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nJiB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVJlZjxWVFRDdWVCb3g+IFZUVEN1ZUJveDo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgVlRUQ3VlJiBjdWUpCi17Ci0gICAgVlRUQ3VlQm94JiBjdWVCb3ggPSAqbmV3
IFZUVEN1ZUJveChkb2N1bWVudCwgY3VlKTsKLSAgICBjdWVCb3guc2V0UHNldWRvKFZUVEN1ZUJv
eDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKGN1ZUJv
eCk7Ci19Ci0KIFZUVEN1ZUJveDo6VlRUQ3VlQm94KERvY3VtZW50JiBkb2N1bWVudCwgVlRUQ3Vl
JiBjdWUpCi0gICAgOiBIVE1MRWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotICAgICwgbV9jdWUo
bWFrZVdlYWtQdHIoY3VlKSkKLXsKLSAgICBzZXRQc2V1ZG8odnR0Q3VlQm94U2hhZG93UHNldWRv
SWQoKSk7Ci19Ci0KLVZUVEN1ZSogVlRUQ3VlQm94OjpnZXRDdWUoKSBjb25zdAorICAgIDogVGV4
dFRyYWNrQ3VlQm94KGRvY3VtZW50LCBjdWUpCiB7Ci0gICAgcmV0dXJuIG1fY3VlLmdldCgpOwog
fQogCiB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZp
ZGVvU2l6ZSkKIHsKLSAgICBpZiAoIW1fY3VlKQorICAgIGF1dG8gdGV4dFRyYWNrQ3VlID0gZ2V0
Q3VlKCk7CisgICAgaWYgKCF0ZXh0VHJhY2tDdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gY3VlID0gbWFrZVJlZigqbV9jdWUpOworICAgIEFTU0VSVChpczxWVFRDdWU+KHRleHRUcmFj
a0N1ZSkgfHwgaXM8VGV4dFRyYWNrQ3VlR2VuZXJpYz4odGV4dFRyYWNrQ3VlKSk7CisgICAgYXV0
byBjdWUgPSBtYWtlUmVmKCp0b1ZUVEN1ZSh0ZXh0VHJhY2tDdWUpKTsKIAogICAgIC8vIEZJWE1F
OiBBcHBseSBhbGwgdGhlIGluaXRpYWwgQ1NTIHBvc2l0aW9uaW5nIHByb3BlcnRpZXMuIGh0dHA6
Ly93a2IudWcvNzk5MTYKICAgICBpZiAoIWN1ZS0+cmVnaW9uSWQoKS5pc0VtcHR5KCkpIHsKQEAg
LTI0MiwxMiArMjMxLDYgQEAgdm9pZCBWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyhjb25z
dCBJbnRTaXplJiB2aWRlb1NpemUpCiAgICAgY3VlLT5lbGVtZW50KCkuc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2libGUpOwogfQogCi1jb25z
dCBBdG9tU3RyaW5nJiBWVFRDdWVCb3g6OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKCkKLXsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJhY2tEaXNwbGF5Qm94
U2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hT
aGFkb3dQc2V1ZG9JZDsKLX0KLQogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZUVEN1ZT4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKQEAgLTI1NSwxMiArMjM4LDYgQEAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYgc3R5bGUsIGMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBB
dG9tU3RyaW5nJiBWVFRDdWU6OmN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjdWVCYWNrZHJvcFNoYWRvd1Bz
ZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJvcCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gY3VlQmFja2Ryb3BTaGFk
b3dQc2V1ZG9JZDsKLX0KLQogUmVmPFZUVEN1ZT4gVlRUQ3VlOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgV2ViVlRUQ3VlRGF0YSYgZGF0YSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWVFRDdWUoY29udGV4dCwgZGF0YSkpOwpAQCAtODY3LDExICs4
NDQsMTEgQEAgdm9pZCBWVFRDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGNvbnN0IE1lZGlhVGltZSYg
bW92aWVUaW1lKQogICAgIG1fY3VlSGlnaGxpZ2h0Qm94LT5hcHBlbmRDaGlsZCgqcmVmZXJlbmNl
VHJlZSk7CiB9CiAKLVZUVEN1ZUJveCYgVlRUQ3VlOjpnZXREaXNwbGF5VHJlZShjb25zdCBJbnRT
aXplJiB2aWRlb1NpemUsIGludCBmb250U2l6ZSkKK1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFZU
VEN1ZTo6Z2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBpbnQgZm9udFNp
emUpCiB7CiAgICAgUmVmPFZUVEN1ZUJveD4gZGlzcGxheVRyZWUgPSBkaXNwbGF5VHJlZUludGVy
bmFsKCk7CiAgICAgaWYgKCFtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlIHx8ICF0cmFjaygpLT5p
c1JlbmRlcmVkKCkpCi0gICAgICAgIHJldHVybiBkaXNwbGF5VHJlZS5nZXQoKTsKKyAgICAgICAg
cmV0dXJuIGRpc3BsYXlUcmVlOwogCiAgICAgLy8gMTAuMSAtIDEwLjEwCiAgICAgY2FsY3VsYXRl
RGlzcGxheVBhcmFtZXRlcnMoKTsKQEAgLTkxNywxNSArODk0LDI4IEBAIFZUVEN1ZUJveCYgVlRU
Q3VlOjpnZXREaXNwbGF5VHJlZShjb25zdCBJbnRTaXplJiB2aWRlb1NpemUsIGludCBmb250U2l6
ZSkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChtX2ZvbnRTaXplKQorICAgICAgICBkaXNw
bGF5VHJlZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBtX2Zv
bnRTaXplLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQp
OworCiAgICAgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSA9IGZhbHNlOwogCisgICAgaWYgKHRy
YWNrKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlZ2lvbnMgPSB0cmFjaygpLT5yZWdpb25zKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHJlZ2lvbiA9IHJlZ2lvbnMtPmdldFJlZ2lvbkJ5SWQo
bV9yZWdpb25JZCkpCisgICAgICAgICAgICAgICAgcmVnaW9uLT5jdWVTdHlsZUNoYW5nZWQoKTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIDEwLjE1LiBMZXQgY3VlJ3MgdGV4dCB0cmFjayBj
dWUgZGlzcGxheSBzdGF0ZSBoYXZlIHRoZSBDU1MgYm94ZXMgaW4KICAgICAvLyBib3hlcy4KLSAg
ICByZXR1cm4gZGlzcGxheVRyZWUuZ2V0KCk7CisgICAgcmV0dXJuIGRpc3BsYXlUcmVlOwogfQog
CiB2b2lkIFZUVEN1ZTo6cmVtb3ZlRGlzcGxheVRyZWUoKQogeworICAgIGlmICghaGFzRGlzcGxh
eVRyZWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gVGhlIHJlZ2lvbiBuZWVkcyB0byBi
ZSBpbmZvcm1lZCBhYm91dCB0aGUgY3VlIHJlbW92YWwuCiAgICAgaWYgKG1fbm90aWZ5UmVnaW9u
ICYmIHRyYWNrKCkpIHsKICAgICAgICAgaWYgKFZUVFJlZ2lvbkxpc3QqIHJlZ2lvbnMgPSB0cmFj
aygpLT5yZWdpb25zKCkpIHsKQEAgLTkzNiw5ICs5MjYsNiBAQCB2b2lkIFZUVEN1ZTo6cmVtb3Zl
RGlzcGxheVRyZWUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFoYXNEaXNwbGF5VHJl
ZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICAvLyBUaGUgZGlzcGxheSB0cmVlIGlzIG5ldmVy
IGV4cG9zZWQgdG8gYXV0aG9yIHNjcmlwdHMgc28gaXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50
cyBoZXJlLgogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxs
b3dlZFNjb3BlKGRpc3BsYXlUcmVlSW50ZXJuYWwoKSk7CiAgICAgZGlzcGxheVRyZWVJbnRlcm5h
bCgpLnJlbW92ZSgpOwpAQCAtMTI0OCwxMSArMTIzNSwxMiBAQCBib29sIFZUVEN1ZTo6ZG9lc0V4
dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmIGN1ZSkgY29uc3QKICAgICAKIHZvaWQgVlRUQ3Vl
OjpzZXRGb250U2l6ZShpbnQgZm9udFNpemUsIGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFu
dCkKIHsKLSAgICBpZiAoIWhhc0Rpc3BsYXlUcmVlKCkgfHwgIWZvbnRTaXplKQorICAgIGlmIChm
b250U2l6ZSA9PSBtX2ZvbnRTaXplICYmIGltcG9ydGFudCA9PSBtX2ZvbnRTaXplSXNJbXBvcnRh
bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UgPSB0
cnVlOwotICAgIGRpc3BsYXlUcmVlSW50ZXJuYWwoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5Rm9udFNpemUsIGZvbnRTaXplLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYLCBp
bXBvcnRhbnQpOworICAgIG1fZm9udFNpemVJc0ltcG9ydGFudCA9IGltcG9ydGFudDsKKyAgICBt
X2ZvbnRTaXplID0gZm9udFNpemU7CiB9CiAKIFZUVEN1ZSogdG9WVFRDdWUoVGV4dFRyYWNrQ3Vl
KiBjdWUpCkBAIC0xMjYyLDcgKzEyNTAsNyBAQCBWVFRDdWUqIHRvVlRUQ3VlKFRleHRUcmFja0N1
ZSogY3VlKQogCiBjb25zdCBWVFRDdWUqIHRvVlRUQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSogY3Vl
KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGN1ZS0+aXNSZW5kZXJh
YmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8
VlRUQ3VlPihjdWUpIHx8IGlzPFRleHRUcmFja0N1ZUdlbmVyaWM+KGN1ZSkpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBWVFRDdWUqPihjdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuaAppbmRleCAxYmY3ZjU1M2EyNjgwNGE4Zjg1YjBiMjU1OTgzZWMyMzM3MzIyZTcx
Li40NTE1MTQyMmQ0OGNhZWI4MmI2N2ExMmQ4OWVmZTg2NDU3OThmODRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmgKQEAgLTQ5LDE1ICs0OSwxNiBAQCBjbGFzcyBXZWJWVFRDdWVEYXRh
OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIFZUVEN1ZUJveCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBWVFRDdWVCb3ggOiBwdWJsaWMgVGV4dFRyYWNr
Q3VlQm94IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFZUVEN1ZUJveCk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxWVFRDdWVCb3g+IGNyZWF0ZShEb2N1bWVudCYsIFZUVEN1ZSYpOwor
ICAgIHN0YXRpYyBSZWY8VlRUQ3VlQm94PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRD
dWUmIGN1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZUJveChk
b2N1bWVudCwgY3VlKSk7CisgICAgfQogCi0gICAgVlRUQ3VlKiBnZXRDdWUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6
ZSk7CisgICAgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lk
KCk7CiAgICAgdm9pZCBzZXRGb250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZzKGludCBmb250U2l6
ZSkgeyBtX2ZvbnRTaXplRnJvbUNhcHRpb25Vc2VyUHJlZnMgPSBmb250U2l6ZTsgfQogCiBwcm90
ZWN0ZWQ6CkBAIC03NCw3ICs3NSw3IEBAIHByaXZhdGU6CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotY2xhc3MgVlRUQ3VlIDogcHVibGljIFRleHRUcmFja0N1ZSwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFZUVEN1ZT4geworY2xhc3MgVlRUQ3VlIDogcHVibGljIFRleHRUcmFj
a0N1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChWVFRDdWUpOwogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8VlRUQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCkBAIC04
OSw4ICs5MCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8VlRUQ3VlPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFdlYlZUVEN1ZURhdGEmKTsKIAotICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCk7Ci0KICAgICB2
aXJ0dWFsIH5WVFRDdWUoKTsKIAogICAgIGVudW0gQXV0b0tleXdvcmQgewpAQCAtMTIzLDcgKzEy
Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGN1ZVNldHRpbmdzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXR0aW5nczsgfQogICAgIHZvaWQgc2V0Q3VlU2V0dGluZ3MoY29uc3QgU3RyaW5n
Jik7CiAKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7CisgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1ZUFzSFRNTCgpIGZpbmFsOwogICAgIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIHJlZ2lvbklkKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25JZDsgfQpAQCAtMTMz
LDExICsxMzIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCkgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGhhc0Rpc3BsYXlUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
VHJlZTsgfQotICAgIFZUVEN1ZUJveCYgZ2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYgdmlk
ZW9TaXplLCBpbnQgZm9udFNpemUpOworICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IGdldERp
c3BsYXlUcmVlKGNvbnN0IEludFNpemUmLCBpbnQpIGZpbmFsOwogICAgIEhUTUxTcGFuRWxlbWVu
dCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2N1ZUhpZ2hsaWdodEJveDsgfQogCi0gICAg
dm9pZCB1cGRhdGVEaXNwbGF5VHJlZShjb25zdCBNZWRpYVRpbWUmKTsKLSAgICB2b2lkIHJlbW92
ZURpc3BsYXlUcmVlKCk7CisgICAgdm9pZCB1cGRhdGVEaXNwbGF5VHJlZShjb25zdCBNZWRpYVRp
bWUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCkgZmluYWw7CiAgICAgdm9p
ZCBtYXJrRnV0dXJlQW5kUGFzdE5vZGVzKENvbnRhaW5lck5vZGUqLCBjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmKTsKIAogICAgIGludCBjYWxjdWxhdGVDb21wdXRlZExpbmVQb3Np
dGlvbigpOwpAQCAtMTY4LDE0ICsxNjcsMTUgQEAgcHVibGljOgogICAgIH07CiAgICAgQ3VlQWxp
Z25tZW50IGdldEFsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlQWxpZ25tZW50OyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udFNpemUoaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBp
bXBvcnRhbnQpOworICAgIHZvaWQgcmVjYWxjdWxhdGVTdHlsZXMoKSBmaW5hbCB7IG1fZGlzcGxh
eVRyZWVTaG91bGRDaGFuZ2UgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRGb250U2l6ZShpbnQsIGNv
bnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzRXF1
YWwoY29uc3QgVGV4dFRyYWNrQ3VlJiwgQ3VlTWF0Y2hSdWxlcykgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjdWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgZG9lc0V4dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIEN1ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFdlYlZUVDsgfQotICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1f
Y29udGVudC5pc0VtcHR5KCk7IH0KIAogICAgIHZvaWQgZGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAK
QEAgLTIzNyw2ICsyMzcsOSBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFUaW1lIG1fb3JpZ2luYWxT
dGFydFRpbWU7CiAKKyAgICBpbnQgbV9mb250U2l6ZSB7IDAgfTsKKyAgICBib29sIG1fZm9udFNp
emVJc0ltcG9ydGFudCB7IGZhbHNlIH07CisKICAgICBib29sIG1fc25hcFRvTGluZXMgOiAxOwog
ICAgIGJvb2wgbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSA6IDE7CiAgICAgYm9vbCBtX25vdGlm
eVJlZ2lvbiA6IDE7CkBAIC0yNjMsNyArMjY2LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNv
cmU6OlZUVEN1ZT4gewogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6VlRUQ3VlKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpUZXh0VHJhY2tDdWUmIGN1ZSkgeyByZXR1cm4gY3VlLmlzUmVuZGVyYWJsZSgpOyB9
CitzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlJiBjdWUpIHsg
cmV0dXJuIGN1ZS5jdWVUeXBlKCkgPT0gV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpXZWJWVFQ7IH0K
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVFJlZ2lvbi5jcHAKaW5kZXggNzYwNzI0MTc4Mjk2ZGYwMjZmNDBiY2RhODI3Zjc4
ZDZhYjc1M2JhYS4uZmUwMzljZDJmMGY0ZThkNDlmZDI0MTJkODRkYTA2ZTczY2IyM2U1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBA
IGNvbnN0IEF0b21TdHJpbmcmIFZUVFJlZ2lvbjo6dGV4dFRyYWNrUmVnaW9uU2hhZG93UHNldWRv
SWQoKQogICAgIHJldHVybiB0cmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkOwogfQogCi12b2lkIFZU
VFJlZ2lvbjo6YXBwZW5kVGV4dFRyYWNrQ3VlQm94KFJlZjxWVFRDdWVCb3g+JiYgZGlzcGxheUJv
eCkKK3ZvaWQgVlRUUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVCb3goUmVmPFRleHRUcmFja0N1
ZUJveD4mJiBkaXNwbGF5Qm94KQogewogICAgIEFTU0VSVChtX2N1ZUNvbnRhaW5lcik7CiAKQEAg
LTM0Miw5ICszNDIsMTMgQEAgSFRNTERpdkVsZW1lbnQmIFZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRy
ZWUoKQogewogICAgIGlmICghbV9yZWdpb25EaXNwbGF5VHJlZSkgewogICAgICAgICBtX3JlZ2lv
bkRpc3BsYXlUcmVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4o
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgICAgICBwcmVwYXJlUmVnaW9uRGlzcGxh
eVRyZWUoKTsKKyAgICAgICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0UHNldWRvKHRleHRUcmFj
a1JlZ2lvblNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBtX3JlY2FsY3VsYXRlU3R5bGVzID0g
dHJ1ZTsKICAgICB9CiAKKyAgICBpZiAobV9yZWNhbGN1bGF0ZVN0eWxlcykKKyAgICAgICAgcHJl
cGFyZVJlZ2lvbkRpc3BsYXlUcmVlKCk7CisKICAgICByZXR1cm4gKm1fcmVnaW9uRGlzcGxheVRy
ZWU7CiB9CiAKQEAgLTM4MywxNCArMzg3LDE2IEBAIHZvaWQgVlRUUmVnaW9uOjpwcmVwYXJlUmVn
aW9uRGlzcGxheVRyZWUoKQogCiAgICAgLy8gVGhlIGN1ZSBjb250YWluZXIgaXMgdXNlZCB0byB3
cmFwIHRoZSBjdWVzIGFuZCBpdCBpcyB0aGUgb2JqZWN0IHdoaWNoIGlzCiAgICAgLy8gZ3JhZHVh
bGx5IHNjcm9sbGVkIG91dCBhcyBtdWx0aXBsZSBjdWVzIGFyZSBhcHBlbmRlZCB0byB0aGUgcmVn
aW9uLgotICAgIG1fY3VlQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2Fz
dDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgIGlmICghbV9jdWVD
b250YWluZXIpIHsKKyAgICAgICAgbV9jdWVDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3Jl
YXRlKGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAg
ICAgIG1fY3VlQ29udGFpbmVyLT5zZXRQc2V1ZG8odGV4dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93
UHNldWRvSWQoKSk7CisgICAgICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKCpt
X2N1ZUNvbnRhaW5lcik7CisgICAgfQogICAgIG1fY3VlQ29udGFpbmVyLT5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAwLjBmLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKIAotICAgIG1fY3VlQ29udGFpbmVyLT5zZXRQc2V1ZG8odGV4dFRyYWNrQ3VlQ29udGFpbmVy
U2hhZG93UHNldWRvSWQoKSk7Ci0gICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQo
Km1fY3VlQ29udGFpbmVyKTsKLQogICAgIC8vIDcuNSBFdmVyeSBXZWJWVFQgcmVnaW9uIG9iamVj
dCBpcyBpbml0aWFsaXNlZCB3aXRoIHRoZSBmb2xsb3dpbmcgQ1NTCi0gICAgbV9yZWdpb25EaXNw
bGF5VHJlZS0+c2V0UHNldWRvKHRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKCkpOworCisg
ICAgbV9yZWNhbGN1bGF0ZVN0eWxlcyA9IGZhbHNlOwogfQogCiB2b2lkIFZUVFJlZ2lvbjo6c3Rh
cnRUaW1lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uaAppbmRleCA2ZmNjNGYz
MzkxM2UyNjRiODRjMmJmNmJjNGZmNmJmMmNjNzMyZWNiLi5kNjc2MmZjMjcyNTE5ZGIwNzRjYTRi
NDkxNzFiMjA0YjU5NzdjOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmgK
QEAgLTg4LDEwICs4OCwxMiBAQCBwdWJsaWM6CiAKICAgICBIVE1MRGl2RWxlbWVudCYgZ2V0RGlz
cGxheVRyZWUoKTsKICAgICAKLSAgICB2b2lkIGFwcGVuZFRleHRUcmFja0N1ZUJveChSZWY8VlRU
Q3VlQm94PiYmKTsKKyAgICB2b2lkIGFwcGVuZFRleHRUcmFja0N1ZUJveChSZWY8VGV4dFRyYWNr
Q3VlQm94PiYmKTsKICAgICB2b2lkIGRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCk7CiAgICAg
dm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrQ3VlQm94KFZUVEN1ZUJveCopOwogCisgICAgdm9pZCBj
dWVTdHlsZUNoYW5nZWQoKSB7IG1fcmVjYWxjdWxhdGVTdHlsZXMgPSB0cnVlOyB9CisKIHByaXZh
dGU6CiAgICAgVlRUUmVnaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIApAQCAtMTUxLDYg
KzE1Myw4IEBAIHByaXZhdGU6CiAgICAgLy8gY3VycmVudGx5IGl0IGlzIHVzZWQgYWxzbyBmb3Ig
bm9uLXNjcm9sbGluZyByZWdpb25zIHRvIHVzZSBhIHNpbmdsZQogICAgIC8vIGNvZGUgcGF0aC4K
ICAgICBUaW1lciBtX3Njcm9sbFRpbWVyOworCisgICAgYm9vbCBtX3JlY2FsY3VsYXRlU3R5bGVz
IHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCA2
NDdlZTU2NDQ4OGM0OWEzZTA2YjJmYmQ0NDE3M2ViNmJhMTYzYWQ5Li44YmRjYzcwMzBhOWNlNDk1
ZTNlMzljMTJiOTgyMDBlZjk2NGNmZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNTg3LDcgKzU4Nyw3IEBA
IFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNTdHlsZVNoZWV0
T3ZlcnJpZGUoKSBjb25zdAogICAgIFN0cmluZyB3aW5kb3dDb3JuZXJSYWRpdXMgPSB3aW5kb3dS
b3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCk7CiAgICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkg
fHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kTGl0ZXJhbCgiIDo6Iik7Ci0gICAgICAgIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0LmFwcGVuZChWVFRDdWU6OmN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQo
KSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tD
dWU6OmN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoKSk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJp
ZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOwogICAgICAgICAKICAgICAgICAgaWYgKCF3aW5kb3dD
b2xvci5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggYzczMGRiNzhm
ZDVmOTJjZGEzMjcwNWQ4NjZiNzAxNjM5YWZiZDI2MC4uZWVlMzFmNDUxYmIzMTBiYTlmODk3M2Iw
Y2Q1NmRkZWEyZDVjZjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzE3LDYg
KzMxNyw5IEBAIHNob3VsZERpc3BsYXlDYXB0aW9uczoKIHNob3VsZERpc3BsYXlUZXh0RGVzY3Jp
cHRpb25zOgogICBpbml0aWFsOiBmYWxzZQogICBjb25kaXRpb25hbDogVklERU9fVFJBQ0sKK2dl
bmVyaWNDdWVBUElFbmFibGVkOgorICAgIGluaXRpYWw6IGZhbHNlCisgICAgY29uZGl0aW9uYWw6
IFZJREVPX1RSQUNLCiBzY3JvbGxpbmdDb29yZGluYXRvckVuYWJsZWQ6CiAgIGluaXRpYWw6IGZh
bHNlCiBzY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IGZjNjg1MTA4ZmFiZjFiYjRkYzJmNzY0NWRhMTg3MDhh
N2FiN2M2MjQuLjgxMDM1ZWY0NzZkMTBjMTg0NDkzODA4YzhiNDcxMGNkNDQ4OWQ0YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCkBAIC00Myw4ICs0MywxMCBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyVlRUQ3VlKTsKIAogUmVuZGVyVlRU
Q3VlOjpSZW5kZXJWVFRDdWUoVlRUQ3VlQm94JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwg
bV9jdWUoZWxlbWVudC5nZXRDdWUoKSkKKyAgICAsIG1fY3VlKGRvd25jYXN0PFZUVEN1ZT4oZWxl
bWVudC5nZXRDdWUoKSkpCiB7CisgICAgQVNTRVJUKG1fY3VlKTsKKyAgICBBU1NFUlQoaXM8VlRU
Q3VlPihtX2N1ZSkpOwogfQogCiB2b2lkIFJlbmRlclZUVEN1ZTo6bGF5b3V0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IDE1MzExZTk1N2RjOTAxNzlkODVi
NzM2MmFkNzJmNzAxMzUzMzNhNDAuLmIxNzc4M2Q0YmQ3MjJjMDYzNzM4MTYwYjE1OTk2MjFlZDQ1
YzI4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlh
bWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMTQ2
Niw2ICsxNDY2LDE1IEBAIENTU1NoYWRvd1BhcnRzRW5hYmxlZDoKICAgY2F0ZWdvcnk6IGV4cGVy
aW1lbnRhbAogICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRGZWF0dXJlcwogCitHZW5l
cmljQ3VlQVBJRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZhbHNlCisg
IGNvbmRpdGlvbjogRU5BQkxFKFZJREVPX1RSQUNLKQorICBodW1hblJlYWRhYmxlTmFtZTogIkdl
bmVyaWMgVGV4dCBUcmFjayBDdWUgQVBJIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJF
bmFibGUgR2VuZXJpYyBUZXh0IFRyYWNrIEN1ZSBBUEkiCisgIGNhdGVnb3J5OiBleHBlcmltZW50
YWwKKyAgd2ViY29yZU5hbWU6IGdlbmVyaWNDdWVBUElFbmFibGVkCisKICMgRm9yIGludGVybmFs
IGZlYXR1cmVzOgogIyBUaGUgdHlwZSBzaG91bGQgYmUgYm9vbGVhbi4KICMgWW91IG11c3QgcHJv
dmlkZSBhIGh1bWFuUmVhZGFibGVOYW1lIGFuZCBodW1hblJlYWRhYmxlRGVzY3JpcHRpb24gZm9y
IGFsbCBkZWJ1ZyBmZWF0dXJlcy4gVGhleQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMWFkY2Jk
ZWFjNWM0Yjk4YTc5YzFmYjQ2NGYwNzhkMTIwMzdmYTliYS4uMGIyNDlkNmU2ZTliMWM4MTIyMjli
Y2FiM2JkYzFiZGE4ODkyZTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0yMzgsNiArMjM4
LDE1IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JUZXN0
UnVubmVyKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlCiAgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0V2ViUlRDTUROU0lDRUNhbmRpZGF0ZXNFbmFibGVk
KGVuYWJsZWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKHBy
ZWZlcmVuY2UgPT0gIldlYktpdEdlbmVyaWNDdWVBUElFbmFibGVkIikgeworICAgICAgICBXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpvdmVycmlkZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6aW1hZ2VDb250cm9sc0VuYWJsZWRLZXkoKSwgZW5hYmxlZCk7CisgICAgICAgIGZvciAoYXV0
byogcGFnZSA6IHBhZ2VzKQorICAgICAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRHZW5lcmlj
Q3VlQVBJRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
CiAgICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdElzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZUVu
YWJsZWQiKSB7CiAgICAgICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6Om92ZXJyaWRlQm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojppc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVk
S2V5KCksIGVuYWJsZWQpOwogICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnNldElzU2VjdXJlQ29udGV4dEF0dHJpYnV0ZUVuYWJsZWQoZW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VL
ZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlS2V5c1ByaXZhdGUuaAppbmRleCBiM2RhMmQ2MDZjODMxMmFlYjBkMjIzMTJjYTQ3OWNhNmRl
NWNhYjg3Li4xM2YxMWJkMDk2YWEzM2U4NWVkOWE2YWIxMDVhNzFjNzU5ZGU4YzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKQEAgLTI2MCw2ICsyNjAsNyBAQAogI2RlZmluZSBXZWJLaXRMZWdhY3lF
bmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWRLZXkgQCJXZWJLaXRMZWdhY3lFbmNyeXB0ZWRNZWRpYUFQ
SUVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZEtleSBAIldl
YktpdEVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0UGljdHVyZUluUGlj
dHVyZUFQSUVuYWJsZWRLZXkgQCJXZWJLaXRQaWN0dXJlSW5QaWN0dXJlQVBJRW5hYmxlZCIKKyNk
ZWZpbmUgV2ViS2l0R2VuZXJpY0N1ZUFQSUVuYWJsZWRLZXkgQCJXZWJLaXRHZW5lcmljQ3VlQVBJ
RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0QWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydEFzRmFsbGJhY2tLZXkgQCJXZWJLaXRBbGxvd01lZGlhQ29udGVudFR5cGVz
UmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayIKICNkZWZpbmUgV2ViS2l0SW5zcGVj
dG9yQWRkaXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRJbnNwZWN0b3JBZGRpdGlv
bnNFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdEFjY2Vzc2liaWxpdHlPYmplY3RNb2RlbEVuYWJsZWQiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpp
bmRleCA4MTFiM2E1YzY2ZDFmNzEzMmQ2NGNkZTBjMWQ4ZmY3YjM2YWI3NjYxLi5mNzU3YjEzYWM3
NjFkZDU4ZDJiMTdhZDczNmM2ZmVhMjE4MTBiMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTYxMyw2ICs2MTMsMTAgQEAg
cHVibGljOgogICAgICAgICBATk8sIFdlYktpdFBpY3R1cmVJblBpY3R1cmVBUElFbmFibGVkS2V5
LAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIEBOTywgV2ViS2l0
R2VuZXJpY0N1ZUFQSUVuYWJsZWRLZXksCisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgICAgIEBOTywgV2ViS2l0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZFByZWZlcmVu
Y2VLZXksCiAgICAgICAgIEBZRVMsIFdlYktpdE1vY2tDYXB0dXJlRGV2aWNlc1Byb21wdEVuYWJs
ZWRQcmVmZXJlbmNlS2V5LApAQCAtMzM0NCw2ICszMzQ4LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAq
Y2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9y
S2V5OldlYktpdFBpY3R1cmVJblBpY3R1cmVBUElFbmFibGVkS2V5XTsKIH0KIAorLSAoQk9PTCln
ZW5lcmljQ3VlQVBJRW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5
OldlYktpdEdlbmVyaWNDdWVBUElFbmFibGVkS2V5XTsKK30KKworLSAodm9pZClzZXRHZW5lcmlj
Q3VlQVBJRW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFn
IGZvcktleTpXZWJLaXRHZW5lcmljQ3VlQVBJRW5hYmxlZEtleV07Cit9CisKIC0gKEJPT0wpdmll
d3BvcnRGaXRFbmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2Vi
S2l0Vmlld3BvcnRGaXRFbmFibGVkUHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCBk
YWQyM2MxNWU4YmI3NTI4YjU5YjFhMjllMjdjOGIwZWRiMGI2OTY5Li5mY2JhMWI4MmMwYTZhZjk1
ZDcxYWE0ZjQ4Yjk3Zjk0YTRiODQ2ZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTY0NCw2ICs2NDQs
NyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRl
cm5hbE5vdGlmaWNhdGlvbiBXRUJLSVRfREVQUgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
bGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
cGljdHVyZUluUGljdHVyZUFQSUVuYWJsZWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBn
ZW5lcmljQ3VlQVBJRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHZpZXdwb3J0
Rml0RW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGNvbnN0YW50UHJvcGVydGll
c0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjb2xvckZpbHRlckVuYWJsZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZjhkNDFh
M2Y4NDhjZTg1NmUwOTQ5OGJmM2ZiY2U5OWI1NWZiYTdkYi4uZmUwMWNlMmM2NWZlNTZlYmFmODY5
MjExNDA3ZDZlMWE4MzAxNjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMzIwNCw2ICszMjA0LDEwIEBAIHN0YXRpYyBib29sIG5lZWRzU2VsZlJl
dGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKICAgICBzZXR0aW5ncy5zZXRQaWN0dXJlSW5QaWN0dXJl
QVBJRW5hYmxlZChwcmVmZXJlbmNlcy5waWN0dXJlSW5QaWN0dXJlQVBJRW5hYmxlZCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBzZXR0aW5ncy5zZXRHZW5lcmljQ3Vl
QVBJRW5hYmxlZChwcmVmZXJlbmNlcy5nZW5lcmljQ3VlQVBJRW5hYmxlZCk7CisjZW5kaWYKKwog
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0SW5zcGVjdG9y
QWRkaXRpb25zRW5hYmxlZChwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKTsK
IAogICAgIHNldHRpbmdzLnNldEFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnRBc0ZhbGxiYWNrKHByZWZlcmVuY2VzLmFsbG93TWVkaWFDb250ZW50VHlwZXNSZXF1
aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNTc2
OTJkZWU1ZjE5YzY2YTA3OTlmZTE2YThjMTg5NDkyNTY0MzhmYi4uMjFlNTcxZTMzOTRhNjMxYzg2
YTQ5NzdmZjc2M2JlNmMyNzMzYjcxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTU1NCw2ICs1NTQs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoV0tEaWN0aW9uYXJ5UmVmIHNl
dHRpbmdzLCBCZWdpbmdUZXN0aW5nTW9kZSB0ZQogCiAgICAgbV90ZXN0UnVubmVyLT5zZXRFbmNy
eXB0ZWRNZWRpYUFQSUVuYWJsZWQodHJ1ZSk7CiAgICAgbV90ZXN0UnVubmVyLT5zZXRQaWN0dXJl
SW5QaWN0dXJlQVBJRW5hYmxlZCh0cnVlKTsKKyAgICBtX3Rlc3RSdW5uZXItPnNldEdlbmVyaWND
dWVBUElFbmFibGVkKGZhbHNlKTsKIAogICAgIG1fdGVzdFJ1bm5lci0+c2V0Q2xvc2VSZW1haW5p
bmdXaW5kb3dzV2hlbkNvbXBsZXRlKGZhbHNlKTsKICAgICBtX3Rlc3RSdW5uZXItPnNldEFjY2Vw
dHNFZGl0aW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggOWJlNjk0MDdmYjMzMDhiYmFiNTFlZjJjYzY1
OTZmZTdiODY5MzRhMC4uY2Q3ZGNkMTJmNjg1N2M4N2M3ZTFlNzBjNDY2ZDk4N2ZkMzdjMWMzNCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCkBAIC00OTAsNiArNDkwLDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGljdHVy
ZUluUGljdHVyZUFQSUVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIFdLQnVuZGxlT3ZlcnJpZGVC
b29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIoaW5qZWN0ZWRCdW5kbGUuYnVuZGxlKCksIGluamVj
dGVkQnVuZGxlLnBhZ2VHcm91cCgpLCBrZXkuZ2V0KCksIGVuYWJsZWQpOwogfQogCit2b2lkIFRl
c3RSdW5uZXI6OnNldEdlbmVyaWNDdWVBUElFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4ga2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiV2ViS2l0R2VuZXJpY0N1ZUFQSUVuYWJsZWQiKSk7CisgICAgYXV0byYgaW5q
ZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7CisgICAgV0tCdW5kbGVP
dmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihpbmplY3RlZEJ1bmRsZS5idW5kbGUo
KSwgaW5qZWN0ZWRCdW5kbGUucGFnZUdyb3VwKCksIGtleS5nZXQoKSwgZW5hYmxlZCk7Cit9CisK
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCBlbmFibGVk
KQogewogICAgIGF1dG8mIGluamVjdGVkQnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAppbmRleCAwZThmZDY0YjFiYmQwOWU3NGNiNDk2ZTVhMDQ2MjJmYWFmODk0YTJlLi5j
ZDliNzFmMWIyZWNmNjhmZjBkNmUwOTNiMDJhNDRmNzk4ZjYyYzg5IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMTMwLDYg
KzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZFN3YXBUb0RlZmF1bHRTZXNzaW9u
T25OZXh0TmF2aWdhdGlvbihib29sKTsKICAgICB2b2lkIHNldEVuY3J5cHRlZE1lZGlhQVBJRW5h
YmxlZChib29sKTsKICAgICB2b2lkIHNldFBpY3R1cmVJblBpY3R1cmVBUElFbmFibGVkKGJvb2wp
OworICAgIHZvaWQgc2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRN
ZWRpYURldmljZXNFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0V2ViUlRDTUROU0lDRUNhbmRp
ZGF0ZXNFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0Q3VzdG9tVXNlckFnZW50KEpTU3RyaW5n
UmVmKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA4ZDM0ODkwMWMwNDQ5Y2NjODU1YzljNjgxY2ZmYzA0ZGVlZTY3ODE2Li45
ZmQyYjA4N2QwZDNjYTI4ZWNlYWVkZDI5M2I0NWI0OWQ5MGZmOTZkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTktMTAtMzAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBUZXh0VHJhY2tDdWUgQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2NDkKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzU1Njc1MTcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1h
ZGRjdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0dHJh
Y2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90
cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1j
b25zdHJ1Y3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0dHJhY2tj
dWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTktMTAtMjggIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFVw
ZGF0ZSBXUFQgdGVzdHMgcmVsYXRlZCB0byBXZWIgQW5pbWF0aW9ucyBhbmQgcmVtb3ZlIGltcG9y
dGVkIE1vemlsbGEgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Rl
eHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iZmUxYTdlOTRiM2U4NWY4YjRmMWU0MzIxNjEwMmVkMmUzMDQ5NjY4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3Rl
eHR0cmFja2N1ZS1hZGRjdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCisKK1BBU1Mg
c2V0dXAgCitQQVNTIHRyYWNrLmFkZEN1ZSgpIGFkZHMgdG8gdHJhY2suY3VlcyAKK1BBU1MgY3Vl
IG9yZGVyIHNob3VsZCBjaGFuZ2Ugd2hlbiBzdGFydCB0aW1lIGlzIGNoYW5nZWQgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUt
YWRkY3VlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRy
YWNrY3VlLWFkZGN1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxZjQyOThjZWQ3ODdhZWM3OGU0MzA0OTYw
NGI0NGU3OGMxYmI1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS5odG1sCkBAIC0wLDAgKzEsNjMgQEAK
KzwhZG9jdHlwZSBodG1sPgorPHRpdGxlPlRleHRUcmFja0N1ZSBhZGRjdWU8L3RpdGxlPgorPGRp
dj48L2Rpdj4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLWNvbnRyb2xzLmpzPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+
CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0R2VuZXJp
Y0N1ZUFQSUVuYWJsZWQodHJ1ZSk7CisKK2Z1bmN0aW9uIGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQo
dGV4dCkKK3sKKyAgICBsZXQgY3VlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4n
KTsKKyAgICBjdWVOb2RlLnNldEF0dHJpYnV0ZSgnY3VlJywgJycpOworICAgIGN1ZU5vZGUuaW5u
ZXJUZXh0ID0gdGV4dDsKKworICAgIGxldCBiYWNrZ3JvdW5kTm9kZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIGJhY2tncm91bmROb2RlLnNldEF0dHJpYnV0ZSgnY3VlYmFj
a2dyb3VuZCcsICcnKTsKKyAgICBiYWNrZ3JvdW5kTm9kZS5hcHBlbmRDaGlsZChjdWVOb2RlKTsK
KworICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAg
IGZyYWdtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmROb2RlKTsKKworICAgIHJldHVybiBmcmFn
bWVudDsKK30KKwordGVzdCh0ZXN0ID0+IHsKKyAgICB3aW5kb3cudmlkZW8gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd2aWRlbycpOworICAgIHZpZGVvLmNvbnRyb2xzID0gdHJ1ZTsKKworICAg
IHdpbmRvdy50cmFjayA9IHZpZGVvLmFkZFRleHRUcmFjaygnc3VidGl0bGVzJyk7CisgICAgdHJh
Y2suZGVmYXVsdCA9IHRydWU7CisgICAgdHJhY2subW9kZSA9ICdzaG93aW5nJzsKKworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlkZW8pOworfSwgJ3NldHVwJyk7CisKK3Rlc3QodGVz
dCA9PiB7CisgICAgbGV0IGN1ZTEgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEsIGNyZWF0ZVZhbGlk
Q3VlRnJhZ21lbnQoJ0ZpcnN0IGN1ZScpKTsKKyAgICBjdWUxLmlkID0gIm9uZSI7CisgICAgdHJh
Y2suYWRkQ3VlKGN1ZTEpOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlcy5sZW5ndGgsIDEs
ICdvbmx5IG9uZSBjdWUnKTsKKworICAgIGxldCBjdWUyID0gbmV3IFRleHRUcmFja0N1ZSgxLCAy
LCBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCdTZWNvbmQgY3VlJykpOworICAgIGN1ZTIuaWQgPSAi
dHdvIjsKKyAgICB0cmFjay5hZGRDdWUoY3VlMik7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5j
dWVzLmxlbmd0aCwgMiwgInRyYWNrLmN1ZXMubGVuZ3RoIGluY2x1ZGVzIHNlY29uZCBjdWUiKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXNbMF0uaWQsICdvbmUnLCAnY3VlIDEgc2hvdWxk
IGJlIGZpcnN0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzWzFdLmlkLCAndHdvJywg
J2N1ZSAyIHNob3VsZCBiZSBzZWNvbmQnKTsgICAgCit9LCAndHJhY2suYWRkQ3VlKCkgYWRkcyB0
byB0cmFjay5jdWVzJyk7CisKK3Rlc3QodGVzdCA9PiB7CisgICAgdHJhY2subW9kZSA9ICdzaG93
aW5nJzsKKyAgICB0cmFjay5jdWVzWzFdLnN0YXJ0VGltZSA9IDA7CisgICAgYXNzZXJ0X2VxdWFs
cyh0cmFjay5jdWVzWzBdLmlkLCAndHdvJywgJ2N1ZSAyIHNob3VsZCBiZSBmaXJzdCcpOworICAg
IGFzc2VydF9lcXVhbHModHJhY2suY3Vlc1sxXS5pZCwgJ29uZScsICdjdWUgMSBzaG91bGQgYmUg
c2Vjb25kJyk7CisKKyAgICB0cmFjay5jdWVzWzBdLnN0YXJ0VGltZSA9IDAuNTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHRyYWNrLmN1ZXNbMF0uaWQsICdvbmUnLCAnY3VlIDEgc2hvdWxkIGJlIGZpcnN0
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzWzFdLmlkLCAndHdvJywgJ2N1ZSAyIHNo
b3VsZCBiZSBzZWNvbmQnKTsKK30sICdjdWUgb3JkZXIgc2hvdWxkIGNoYW5nZSB3aGVuIHN0YXJ0
IHRpbWUgaXMgY2hhbmdlZCcpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUt
Y29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMzEzNDRiYTNlYzYyY2RhNWQ0
MmI0MjE3MGVkNTVkMDA5NTk3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKKworUEFTUyBUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJUeXBl
RXJyb3IiIGlmIHRoZSBjdWUgbm9kZSBpcyBub3QgYSBkb2N1bWVudEZyYWdtZW50IAorUEFTUyBU
ZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5cGVFcnJvciIgaWYgcGFzc2Vk
IGFuIGludmFsaWQgZG9jdW1lbnRGcmFnbWVudCAKK1BBU1MgVGV4dFRyYWNrQ3VlIHNob3VsZCB0
aHJvdyAiSW52YWxpZE5vZGVUeXBlRXJyb3IiIGlmIGRvY3VtZW50RnJhZ21lbnQgaGFzIGFuIGlu
dmFsaWQgbm9kZSAKK1BBU1MgVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiSW52YWxpZFN0YXRl
RXJyb3IiIGlmIGRvY3VtZW50RnJhZ21lbnQgZG9lc24ndCBoYXZlICdjdWViYWNrZ3JvdW5kJyBh
bmQgJ2N1ZScgbm9kZXMgCitQQVNTIFRleHRUcmFja0N1ZSBzaG91bGQgYWxsb3cgYWxsIHZhbGlk
IG5vZGUgdHlwZXMgCitQQVNTIFRlc3QgVGV4dFRyYWNrQ3VlLmdldEN1ZUFzSFRNTCgpIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNr
Y3VlLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tj
dWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI1NDBlNDZmZTA0
ZTEyZDIwZGU1YjRkOGY5NDYyZWJjZTM4MTkzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0b3IuaHRt
bApAQCAtMCwwICsxLDEwNSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8dGl0bGU+VGV4dFRyYWNrQ3Vl
IGNvbnN0cnVjdG9yPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEdlbmVyaWNDdWVBUElFbmFibGVkKHRy
dWUpOworCit0ZXN0KCB0ZXN0ID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3Is
IF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCAiIikgfSk7CisgICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgeyB9KSB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3Vl
KDAsIDEwLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkgfSk7Cit9LCAnVGV4dFRyYWNr
Q3VlIHNob3VsZCB0aHJvdyAiVHlwZUVycm9yIiBpZiB0aGUgY3VlIG5vZGUgaXMgbm90IGEgZG9j
dW1lbnRGcmFnbWVudCcpOworCit0ZXN0KCB0ZXN0ID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzKCJJ
bnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1
bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpIH0pOworfSwgJ1RleHRUcmFja0N1ZSBzaG91
bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVycm9yIiBpZiBwYXNzZWQgYW4gaW52YWxpZCBkb2N1
bWVudEZyYWdtZW50Jyk7CisKK2Z1bmN0aW9uIGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoKQorewor
ICAgIGxldCBjdWVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIGN1
ZU5vZGUuc2V0QXR0cmlidXRlKCdjdWUnLCAnJyk7CisKKyAgICBsZXQgYmFja2dyb3VuZE5vZGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBiYWNrZ3JvdW5kTm9kZS5zZXRB
dHRyaWJ1dGUoJ2N1ZWJhY2tncm91bmQnLCAnJyk7CisgICAgYmFja2dyb3VuZE5vZGUuYXBwZW5k
Q2hpbGQoY3VlTm9kZSk7CisKKyAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kTm9kZSk7CisK
KyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKK3Rlc3QoIHRlc3QgPT4geworICAgIGxldCBmcmFn
bWVudCA9IGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoKTsKKyAgICBsZXQgdmFsaWRDdWUgPSBuZXcg
VGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpKTsKKyAgICBhc3NlcnRfdGhyb3dzKCJJ
bnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFn
bWVudCkgfSk7CisKK30sIGBUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5
cGVFcnJvciIgaWYgZG9jdW1lbnRGcmFnbWVudCBoYXMgYW4gaW52YWxpZCBub2RlYCk7CisKK3Rl
c3QoIHRlc3QgPT4geworICAgIGxldCBmcmFnbWVudCA9IGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQo
KTsKKyAgICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7
CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxkLnJlbW92ZUF0dHJpYnV0ZSgnY3VlYmFja2dyb3Vu
ZCcpCisgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBfID0+IHsgbmV3IFRl
eHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworCisgICAgZnJhZ21lbnQgPSBjcmVhdGVW
YWxpZEN1ZUZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQuZmlyc3RDaGlsZC5maXJzdENoaWxkLnJl
bW92ZUF0dHJpYnV0ZSgnY3VlJykKKyAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7Cit9LCBgVGV4
dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiSW52YWxpZFN0YXRlRXJyb3IiIGlmIGRvY3VtZW50RnJh
Z21lbnQgZG9lc24ndCBoYXZlICdjdWViYWNrZ3JvdW5kJyBhbmQgJ2N1ZScgbm9kZXNgKTsKKwor
dGVzdCggdGVzdCA9PiB7CisgICAgbGV0IGZyYWdtZW50ID0gY3JlYXRlVmFsaWRDdWVGcmFnbWVu
dCgpOworICAgIGxldCB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50
KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnYnInKSk7CisgICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBm
cmFnbWVudCk7CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUo
MCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJykpOworICAgIHZhbGlkQ3VlID0gbmV3IFRleHRU
cmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RDaGlsZC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykpOworICAgIHZhbGlkQ3VlID0gbmV3
IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RDaGls
ZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyYicpKTsKKyAgICB2YWxpZEN1
ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZp
cnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncnQnKSk7CisgICAg
dmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAgICBmcmFn
bWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3J0Yycp
KTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKwor
ICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgncnVieScpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdt
ZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwg
MTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0hlbGxvIScpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0
VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworfSwgYFRleHRUcmFja0N1ZSBzaG91bGQgYWxs
b3cgYWxsIHZhbGlkIG5vZGUgdHlwZXNgKTsKKworCit0ZXN0KCB0ZXN0ID0+IHsKKyAgICBsZXQg
c291cmNlRnJhZ21lbnQgPSBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCk7CisgICAgbGV0IHZhbGlk
Q3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgbGV0IGN1ZUZy
YWdtZW50ID0gdmFsaWRDdWUuZ2V0Q3VlQXNIVE1MKCk7CisgICAgYXNzZXJ0X3RydWUoY3VlRnJh
Z21lbnQgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KTsKKworICAgIGFzc2VydF90cnVlKGN1
ZUZyYWdtZW50LmlzRXF1YWxOb2RlKHNvdXJjZUZyYWdtZW50KSk7CisKKyAgICBhc3NlcnRfbm90
X2VxdWFscyh2YWxpZEN1ZS5nZXRDdWVBc0hUTUwoKSwgY3VlRnJhZ21lbnQsICJnZXRDdWVBc0hU
TUwoKSBzaG91bGQgcmV0dXJuIGEgZGlmZmVyZW50IGZyYWdtZW50IGVhY2ggdGltZSIpOworCit9
LCBgVGVzdCBUZXh0VHJhY2tDdWUuZ2V0Q3VlQXNIVE1MKClgKTsKKworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3Vl
LWRpc3BsYXljdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRy
YWNrY3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
MDRlMWM1ZTM5YjBjZTIyYjJhNWJiNTUzYTFhMGMxNGYwOGE3MjE3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1kaXNw
bGF5Y3VlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworCitQQVNTIEN1ZXMgYXJlIGRp
c3BsYXllZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNr
Y3VlL3RleHR0cmFja2N1ZS1kaXNwbGF5Y3VlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZmMzYzIxZGM5OTExMmY2ZDEyYmRkNjdiOTNlMGFiY2ZmMGQwNjYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1kaXNw
bGF5Y3VlLmh0bWwKQEAgLTAsMCArMSw5NCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8dGl0bGU+VGV4
dFRyYWNrQ3VlIGRpc3BsYXkgY3VlPC90aXRsZT4KKworPGRpdj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PS4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PS4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPS4uLy4uL21lZGlhLWNvbnRyb2xzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4v
Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFs
cykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQodHJ1ZSk7
CisKK2Z1bmN0aW9uIGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQodGV4dCkKK3sKKyAgICBsZXQgY3Vl
Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICBjdWVOb2RlLnNldEF0
dHJpYnV0ZSgnY3VlJywgJycpOworICAgIGN1ZU5vZGUuaW5uZXJUZXh0ID0gdGV4dDsKKworICAg
IGxldCBiYWNrZ3JvdW5kTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IGJhY2tncm91bmROb2RlLnNldEF0dHJpYnV0ZSgnY3VlYmFja2dyb3VuZCcsICcnKTsKKyAgICBi
YWNrZ3JvdW5kTm9kZS5hcHBlbmRDaGlsZChjdWVOb2RlKTsKKworICAgIGZyYWdtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIGZyYWdtZW50LmFwcGVuZENoaWxk
KGJhY2tncm91bmROb2RlKTsKKworICAgIHJldHVybiBmcmFnbWVudDsKK30KKworYXN5bmNfdGVz
dCh0ZXN0ID0+IHsKKworICAgIHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8n
KTsKKyAgICB2aWRlby5jb250cm9scyA9IHRydWU7CisKKyAgICB0cmFjayA9IHZpZGVvLmFkZFRl
eHRUcmFjaygnc3VidGl0bGVzJyk7CisgICAgdHJhY2suZGVmYXVsdCA9IHRydWU7CisgICAgdHJh
Y2subW9kZSA9ICdzaG93aW5nJzsKKworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodmlk
ZW8pOworCisgICAgbGV0IGN1ZTFUZXh0ID0gJ0ZpcnN0IGN1ZSc7CisgICAgbGV0IGN1ZTEgPSBu
ZXcgVGV4dFRyYWNrQ3VlKDAsIDEuMSwgY3JlYXRlVmFsaWRDdWVGcmFnbWVudChjdWUxVGV4dCkp
OworICAgIGN1ZTEuaWQgPSAib25lIjsKKyAgICB0cmFjay5hZGRDdWUoY3VlMSk7CisgICAgYXNz
ZXJ0X2VxdWFscyh0cmFjay5jdWVzLmxlbmd0aCwgMSwgJ29ubHkgb25lIGN1ZScpOworCisgICAg
bGV0IGN1ZTJUZXh0ID0gJ1NlY29uZCBjdWUnOworICAgIGxldCBjdWUyID0gbmV3IFRleHRUcmFj
a0N1ZSgxLCAyLCBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KGN1ZTJUZXh0KSk7CisgICAgY3VlMi5p
ZCA9ICJ0d28iOworICAgIHRyYWNrLmFkZEN1ZShjdWUyKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRy
YWNrLmN1ZXMubGVuZ3RoLCAyLCAidHJhY2suY3Vlcy5sZW5ndGggaW5jbHVkZXMgc2Vjb25kIGN1
ZSIpOworCisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzWzBdLmlkLCAnb25lJywgJ2N1ZSAx
IHNob3VsZCBiZSBmaXJzdCcpOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlc1sxXS5pZCwg
J3R3bycsICdjdWUgMiBzaG91bGQgYmUgc2Vjb25kJyk7ICAgIAorCisgICAgdmlkZW8uYWRkRXZl
bnRMaXN0ZW5lcignY2FucGxheScsIGV2ZW50ID0+IHsKKworICAgICAgICBsZXQgc2Vla0NvdW50
ID0gMDsKKyAgICAgICAgbGV0IHN0ZXAgPSBfID0+IHsKKyAgICAgICAgICAgIGxldCBjdWVDb250
YWluZXIgPSBtZWRpYUNvbnRyb2xzRWxlbWVudChpbnRlcm5hbHMuc2hhZG93Um9vdCh2aWRlbyku
Zmlyc3RDaGlsZCwgIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoKytzZWVrQ291bnQpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmFjdGl2ZUN1ZXMubGVuZ3RoLCAxLCAib25s
eSBvbmUgYWN0aXZlIGN1ZSIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3VlQ29u
dGFpbmVyLmlubmVyVGV4dCwgY3VlMVRleHQsICJjdWUgb25lIGlzIHZpc2libGUiKTsKKyAgICAg
ICAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IHRyYWNrLmN1ZXNbMV0uc3RhcnRUaW1lOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5hY3RpdmVDdWVzLmxlbmd0aCwgMiwgInR3byBhY3Rp
dmUgY3VlcyIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3VlQ29udGFpbmVyLmlu
bmVyVGV4dCwgYCR7Y3VlMVRleHR9XG4ke2N1ZTJUZXh0fWAsICJjdWVzIG9uZSBhbmQgdHdvIGFy
ZSB2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSB0cmFjay5j
dWVzWzFdLmVuZFRpbWUgLSAuNTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHJhY2suYWN0aXZlQ3Vl
cy5sZW5ndGgsIDEsICJvbmx5IG9uZSBhY3RpdmUgY3VlIik7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjdWVDb250YWluZXIuaW5uZXJUZXh0LCBjdWUyVGV4dCwgImN1ZSB0d28gaXMg
dmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdHJhY2suY3Vl
c1sxXS5lbmRUaW1lICsgMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
Y2FzZSA0OgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHJhY2suYWN0aXZlQ3Vlcy5s
ZW5ndGgsIDAsICJubyBhY3RpdmUgY3VlcyIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoY3VlQ29udGFpbmVyLmlubmVyVGV4dCwgJycsICJubyBjdWVzIGFyZSB2aXNpYmxlIik7Cisg
ICAgICAgICAgICAgICAgdGVzdC5kb25lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignc2Vl
a2VkJywgdGVzdC5zdGVwX2Z1bmMoc3RlcCkpOworICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9
IHRyYWNrLmN1ZXNbMF0uc3RhcnRUaW1lOworICAgIH0pOworCisgICAgdmlkZW8uc3JjID0gZmlu
ZE1lZGlhRmlsZSgndmlkZW8nLCAnLi4vLi4vY29udGVudC90ZXN0Jyk7CisKK30sICdDdWVzIGFy
ZSBkaXNwbGF5ZWQnKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDJmMWUyODA0NGQ5ODEzYjI1Yjk5NWIyYmY4YjFlYWQ4Y2M1ZjNm
NDcuLmIxZjM0ZWI5YzJlZTk4OGI4N2I0MGJjYzZhMGE5Y2QwYTM3YmNhMzkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNDk2LDYgKzI0OTYsOSBAQCB3
ZWJraXQub3JnL2IvMTYwMzY3IG1lZGlhL3RyYWNrL3RyYWNrLXJlbW92ZS1jcmFzaC5odG1sCiAj
IFRoZXkgYXJlIGFsc28gZmxha2lseSBmYWlsaW5nIG9uIFdlYktpdDIsIGFzIHNuYXBzaG90IHNv
bWV0aW1lcyBoYXMgYSBibGFjayByZWN0YW5nbGUgZm9yIHZpZGVvIGVsZW1lbnQgaW5zdGVhZCBv
ZiB3aGl0ZSBvbmUuCiB3ZWJraXQub3JnL2IvMTMxNDc2IG1lZGlhL3RyYWNrL3czYy90cmFjay93
ZWJ2dHQKIAorIyBWVFRSZWdpb24gaGVpZ2h0IGRvZXNuJ3QgYWRqdXN0IHdoZW4gY3VlIGZvbnQg
c2l6ZSBjaGFuZ2VzLgord2Via2l0Lm9yZy9iLzIwMzYyMSBtZWRpYS90cmFjay9yZWdpb25zLXdl
YnZ0dC92dHQtcmVnaW9uLWRpc3BsYXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCisKIG1lZGlhL3Zp
ZGVvLW9iamVjdC1maXQtY2hhbmdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIG1lZGlhL3Zp
ZGVvLW9iamVjdC1maXQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDdkM2VjNDhmYTczZjg3MDEzZGM0Mjg3
MmEyOTRmMTE2MjRmNTI1NjMuLmYxMDQyYWM1YWY2Yzc0NmJkM2I3M2U2ZTExOGY0ZTNlNzdmYTQw
MmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC04NTcs
NiArODU3LDkgQEAgd2Via2l0Lm9yZy9iLzEwMzkyNiBtZWRpYS90cmFjay9vcGVyYS90cmFjay93
ZWJ2dHQvcmVuZGVyaW5nL2FkaG9jL3ZvaWNlX3dpdGhfZXYKICMgVGhleSBhcmUgYWxzbyBmbGFr
aWx5IGZhaWxpbmcgb24gV2ViS2l0MiwgYXMgc25hcHNob3Qgc29tZXRpbWVzIGhhcyBhIGJsYWNr
IHJlY3RhbmdsZSBmb3IgdmlkZW8gZWxlbWVudCBpbnN0ZWFkIG9mIHdoaXRlIG9uZS4KIHdlYmtp
dC5vcmcvYi8xMzE0NzYgbWVkaWEvdHJhY2svdzNjL3RyYWNrL3dlYnZ0dCBbIFNraXAgXQogCisj
IFZUVFJlZ2lvbiBoZWlnaHQgZG9lc24ndCBhZGp1c3Qgd2hlbiBjdWUgZm9udCBzaXplIGNoYW5n
ZXMuCit3ZWJraXQub3JnL2IvMjAzNjIxIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1y
ZWdpb24tZGlzcGxheS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KKwogd2Via2l0Lm9yZy9iLzY3NzE2
IG1lZGlhL21lZGlhLWNvbnRyb2xzLWludmFsaWQtdXJsLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzc1MTg0IG1lZGlhL1czQy92aWRlby9jYW5QbGF5VHlwZS9jYW5QbGF5VHlwZV9j
b2RlY3Nfb3JkZXJfMi5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382624</attachid>
            <date>2019-11-01 13:55:49 -0700</date>
            <delta_ts>2019-11-01 15:50:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203649-20191101155547.patch</filename>
            <type>text/plain</type>
            <size>90573</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY0NDU5MjViMzRiYTM4
NmViMzBiZjdjNmEzN2QwYzI1MzViYzQxYy4uMjM2NWI3NmY2YjY0MGNlZGM4ZDZmMTcxYTEwMmJi
MmMyYTZiNDg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxOS0xMC0zMCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJp
bWVudGFsIFRleHRUcmFja0N1ZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzY0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NzUxNzI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIFRlc3RzOiBtZWRp
YS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS5odG1sCisgICAgICAgICAg
ICAgICBtZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0
bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUt
ZGlzcGxheWN1ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFD
b250cm9sc0hvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnVw
ZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9s
cy9NZWRpYUNvbnRyb2xzSG9zdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
Q3VlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5lZWRzUnVudGltZUNo
ZWNrKToKKyAgICAgICAgKEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbDoKKyAgICAgICAgKEdlbmVyYXRl
Q29uc3RydWN0b3JBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5p
ZGw6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50Ojpwcm9jZXNzQWN0aXZlVlRUQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZUN1ZXNG
b250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50Ojp1cGRhdGVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVN0eWxlRm9yVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
Lmg6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpzZXRNb2RlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmN1ZUJveFNoYWRvd1BzZXVk
b0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQ
c2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpjdWVBdHRyaWJ1dE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWVCb3g6OmdldEN1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjppc0xlZ2FsTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkTm9kZUV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpjaGVja0ZvckludmFsaWROb2RlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6dGFn
UHNldWRvT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVQc2V1ZG9BdHRyaWJ1dGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0N1ZTo6ZGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6
c2V0SXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjp0b0pTT04gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpkZWJ1Z1N0cmluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmlzUmVuZGVyYWJsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldERpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6cmVtb3ZlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpzZXRGb250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OnJlYnVpbGREaXNwbGF5VHJlZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZUJveDo6flRleHRUcmFja0N1ZUJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmN1ZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlOjpyZWNhbGN1bGF0ZVN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6aXNSZW5kZXJhYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6OmlzRXF1YWwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlR2VuZXJpYzo6aXNPcmRlcmVk
QmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6Omlz
UG9zaXRpb25lZEFib3ZlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1
ZUdlbmVyaWMuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRD
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94OjpWVFRDdWVCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6VlRUQ3VlOjpnZXREaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6
OnJlbW92ZURpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlZUVEN1ZTo6c2V0Rm9udFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WVFRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlQm94OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94Ojpn
ZXRDdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VlRUQ3VlQm94Ojp2dHRD
dWVCb3hTaGFkb3dQc2V1ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6
OmN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvdHJh
Y2svVlRUQ3VlLmg6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWVCb3g6OmNyZWF0ZSk6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUUmVnaW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6YXBwZW5kVGV4dFRyYWNrQ3VlQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OlZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
VlRUUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVlRUUmVnaW9uLmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2V0
dGluZ3MueWFtbDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6UmVuZGVyVlRUQ3VlKToKKwogMjAxOS0xMC0yOCAg
Q2hhcmxpZSBUdXJuZXIgIDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1hZ2VEZWNv
ZGVyczogdXNlIGEgdGhyZWFkIHNhZmUgZGF0YSBidWZmZXIgZm9yIENhaXJvIGJhY2tpbmcgc3Rv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYzc3NTg0YzlmNGNhMTAzNDY3OGFjZTQ5MDc3OTY5MGNiOGFkZmIxZi4u
YTA4NmY3Y2EyZGRiODYzNmRiMGY5ZWE5OGViYmVmMDRkYjQ5MGViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxOS0xMC0zMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIFRleHRUcmFja0N1ZSBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY0OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTU2NzUxNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5v
YmxlLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMTktMTAt
MjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFNpbXBsaWZ5IHRoZSBJbnB1dCBNZXRob2QgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwCmluZGV4IDEwZmY3MmZiYjNkZDU0ZGQ4N2UyZjIyMjc4ZTdkZWI1MmM5MTNiZTcu
LjUzNjY3NGFlZjMzZGFjOGU4ZWZlOTAzMDJiY2Y5Mzk2ZDJkZDUzMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcApAQCAtMTc3LDEwICsxNzcsMTAgQEAgdm9pZCBNZWRpYUNvbnRyb2xzSG9zdDo6ZXhp
dGVkRnVsbHNjcmVlbigpCiAgICAgICAgIG1fdGV4dFRyYWNrQ29udGFpbmVyLT5leGl0ZWRGdWxs
c2NyZWVuKCk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sc0hvc3Q6OnVwZGF0ZUNhcHRpb25EaXNw
bGF5U2l6ZXMoKQordm9pZCBNZWRpYUNvbnRyb2xzSG9zdDo6dXBkYXRlQ2FwdGlvbkRpc3BsYXlT
aXplcyhGb3JjZVVwZGF0ZSBmb3JjZSkKIHsKICAgICBpZiAobV90ZXh0VHJhY2tDb250YWluZXIp
Ci0gICAgICAgIG1fdGV4dFRyYWNrQ29udGFpbmVyLT51cGRhdGVTaXplcyh0cnVlKTsKKyAgICAg
ICAgbV90ZXh0VHJhY2tDb250YWluZXItPnVwZGF0ZVNpemVzKGZvcmNlID09IEZvcmNlVXBkYXRl
OjpZZXMgPyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpGb3JjZVVwZGF0
ZTo6WWVzIDogTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Rm9yY2VVcGRh
dGU6Ok5vKTsKIH0KICAgICAKIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OmFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRleCBlZjVkMDU3MmFkNGFjMDBm
NWI3NmExMmRlYzM3OWYxZjI4NDQ3MWU1Li45ZDI2MGQ4MTQwYmJiNWNjOTZmMWIwYTkyNjcwOGE4
ZjEyNDhmZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaApAQCAtNzIsNyArNzIsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzaG91bGRGb3JjZUNvbnRyb2xzRGlzcGxheSgpIGNvbnN0OwogICAgIHZvaWQgc2V0
UHJlcGFyZWRUb1JldHVyblZpZGVvTGF5ZXJUb0lubGluZShib29sKTsKIAotICAgIHZvaWQgdXBk
YXRlQ2FwdGlvbkRpc3BsYXlTaXplcygpOworICAgIGVudW0gY2xhc3MgRm9yY2VVcGRhdGUgeyBZ
ZXMsIE5vIH07CisgICAgdm9pZCB1cGRhdGVDYXB0aW9uRGlzcGxheVNpemVzKEZvcmNlVXBkYXRl
IGZvcmNlID0gRm9yY2VVcGRhdGU6Ok5vKTsKICAgICB2b2lkIGVudGVyZWRGdWxsc2NyZWVuKCk7
CiAgICAgdm9pZCBleGl0ZWRGdWxsc2NyZWVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA2ZWNhY2VlOWY4ODJh
ZjU3ZjUyODhiMTMxNzk5ODZlMjBiODhkNDg0Li43NTI5NTcyMzEyM2U4NWJjNzA4Y2VjMzlhNTg5
MjcwMTI5MTE4MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0N1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdWVDdXN0b20uY3BwCkBAIC02NywxMiArNjcsMTQgQEAgSlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFQKICAgICBjYXNlIFRleHRUcmFja0N1ZTo6RGF0YToKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8RGF0YUN1ZT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGN1ZSkpOwogICAgIGNh
c2UgVGV4dFRyYWNrQ3VlOjpXZWJWVFQ6Ci0gICAgY2FzZSBUZXh0VHJhY2tDdWU6OkdlbmVyaWM6
CisgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkNvbnZlcnRlZFRvV2ViVlRUOgogICAgICAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxWVFRDdWU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShjdWUpKTsKLSAg
ICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpHZW5lcmljOgorICAgICAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxUZXh0VHJhY2tDdWU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShjdWUp
KTsKICAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4ganNOdWxs
KCk7CiB9CiAKIEpTVmFsdWUgdG9KUyhKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGV4dFRyYWNrQ3VlJiBjdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5k
ZXggNzcxMmQyMWIzYWQ5NzFkYjc3MTQ3NDQzNmU3MGYwMzdlZDczZDAzZC4uMjEwMzVjY2UxOWI0
YzNlOTZjNTgzZWExMzBmMTk3Y2ZlNDI1MDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMjE2LDYgKzIxNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhTdGF0aWNSYW5nZSkgXAogICAgIG1hY3JvKFN0eWxl
UHJvcGVydHlNYXBSZWFkT25seSkgXAogICAgIG1hY3JvKFN0eWxlUHJvcGVydHlNYXApIFwKKyAg
ICBtYWNybyhUZXh0VHJhY2tDdWUpIFwKICAgICBtYWNybyhVbmRvSXRlbSkgXAogICAgIG1hY3Jv
KFVuZG9NYW5hZ2VyKSBcCiAgICAgbWFjcm8oVlJEaXNwbGF5KSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDVkNTkwOGQ4
ZDMyMGUyNGI2NmRjNWUxNTE4NjcyNmIyNDczNDU3OTYuLjIxMzkzN2I3YWNmMmI2NzA5YWQ4MWUy
MzVmMmJlYzRkODU3ZDVmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBzdWIgR2VuZXJh
dGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgICAgICAgICAgbXkgJG5l
ZWRzUnVudGltZUNoZWNrID0gTmVlZHNSdW50aW1lQ2hlY2soJGRpY3Rpb25hcnksICRtZW1iZXIp
OwogICAgICAgICAgICAgICAgIG15ICRpbmRlbnQgPSAiIjsKICAgICAgICAgICAgICAgICBpZiAo
JG5lZWRzUnVudGltZUNoZWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRydW50aW1lRW5h
YmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0
cmluZygkZGljdGlvbmFyeSwgJG1lbWJlciwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJs
ZUNvbmRpdGlvbmFsU3RyaW5nKCRkaWN0aW9uYXJ5LCAkbWVtYmVyLCAiJmdsb2JhbE9iamVjdCIp
OwogICAgICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKCR7cnVudGltZUVuYWJs
ZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIjsKICAgICAgICAgICAgICAgICAgICAgJGluZGVudCA9
ICIgICAgIjsKICAgICAgICAgICAgICAgICB9CkBAIC0zNzM0LDcgKzM3MzQsNyBAQCBzdWIgR2Vu
ZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcKICAgICBteSAoJGludGVyZmFjZSwg
JGNvbnRleHQsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBfOwogCiAgICAgbXkgQGNvbmp1bmN0
czsKLSAgICBteSAkZ2xvYmFsT2JqZWN0UHRyID0gJGdsb2JhbE9iamVjdElzUGFyYW0gPyAiJmds
b2JhbE9iamVjdCIgOiAiZ2xvYmFsT2JqZWN0KCkiOworICAgIG15ICRnbG9iYWxPYmplY3RQdHIg
PSAkZ2xvYmFsT2JqZWN0SXNQYXJhbSA/ICRnbG9iYWxPYmplY3RJc1BhcmFtIDogImdsb2JhbE9i
amVjdCgpIjsKICAgICAKICAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Nl
Y3VyZUNvbnRleHR9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiKTsKQEAgLTM4MjMsNiArMzgyMywxNSBAQCBzdWIgR2VuZXJhdGVSdW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcKICAgICAgICAgcHVzaChAY29uanVuY3RzLCAgIiR7bmFt
ZX06OmVuYWJsZWRGb3JDb250ZXh0KCIgLiAkY29udGV4dFJlZiAuICIpIik7CiAgICAgfQogCisg
ICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRC
eVNldHRpbmd9KSB7CisgICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBDb25z
dHJ1Y3RvckVuYWJsZWRCeVNldHRpbmcuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZ30gZXEgIlZBTFVFX0lTX01JU1NJTkciOwor
CisgICAgICAgIG15IEBzZXR0aW5ncyA9IHNwbGl0KC8mLywgJGNvbnRleHQtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZ30pOworICAgICAgICBmb3JlYWNo
IG15ICRzZXR0aW5nIChAc2V0dGluZ3MpIHsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywg
ImRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2Jh
bE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLiIg
LiBUb01ldGhvZE5hbWUoJHNldHRpbmcpIC4gIkVuYWJsZWQoKSIpOworICAgICAgICB9CisgICAg
fQorCiAgICAgbXkgJHJlc3VsdCA9IGpvaW4oIiAmJiAiLCBAY29uanVuY3RzKTsKICAgICAkcmVz
dWx0ID0gIigkcmVzdWx0KSIgaWYgQGNvbmp1bmN0cyA+IDE7CiAgICAgcmV0dXJuICRyZXN1bHQ7
CkBAIC03MjYyLDYgKzcyNzEsMTQgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY2FzdGVk
VGhpcyk7XG4iKTsKIAorICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNldHRpbmd9KSB7CisgICAgICAgICAgICAgICAg
IG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFi
bGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uLCAibGV4aWNhbEdsb2Jh
bE9iamVjdCIpOworICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYg
KCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOworICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHRocm93VHlwZUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFwiSWxsZWdhbCBjb25zdHJ1Y3RvclwiX3MpO1xuIik7
CisgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIH1cbiIpOworICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVy
ZmFjZSwgIiAgICAiKTsKIAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gImNyZWF0ZUZvckpTQ29uc3RydWN0
b3IiIDogImNyZWF0ZSI7CkBAIC03Mzk1LDcgKzc0MTIsMTYgQEAgc3ViIEdlbmVyYXRlQ29uc3Ry
dWN0b3JIZWxwZXJNZXRob2RzCiAgICAgfQogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBTdHJpbmcoXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIl9zKSksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xu
Iik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigke2xlYXN0Q29uc3RydWN0b3JMZW5ndGh9KSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7XG4iKSBpZiBkZWZpbmVkICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoOworCisgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yRW5hYmxlZEJ5
U2V0dGluZ30pIHsKKyAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRpbnRl
cmZhY2UsICImZ2xvYmFsT2JqZWN0Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpbnQgY29uc3RydWN0b3JMZW5ndGggPSAke2xlYXN0Q29uc3RydWN0b3JMZW5ndGh9O1xuIik7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNv
bmRpdGlvbmFsU3RyaW5nfSlcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIGNvbnN0cnVjdG9yTGVuZ3RoID0gMDtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KGNvbnN0cnVjdG9yTGVuZ3RoKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH0pLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTtcbiIpOworICAgIH0KIAogICAgIG15ICRjbGFzc0ZvclRoaXMgPSAiJHtjbGFzc05hbWV9
OjppbmZvKCkiOwogICAgIGlmICgkaW50ZXJmYWNlLT5pc0NhbGxiYWNrKSB7CkBAIC03NDA4LDcg
Kzc0MzQsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb25PckF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcykg
ewogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkb3BlcmF0aW9uT3JBdHRyaWJ1dGUpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKLSAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVy
YXRpb25PckF0dHJpYnV0ZSwgInRydWUiKTsKKyAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25k
aXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRp
bnRlcmZhY2UsICRvcGVyYXRpb25PckF0dHJpYnV0ZSwgIiZnbG9iYWxPYmplY3QiKTsKICAgICAg
ICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
fSkge1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4
IDlmNGFkYzNkYWE0YTg4NzQ2NGQ3NDY5NWFkOWIwNjU5MmRmYzE5MjUuLjk1NTllMmM2MDc5MTAz
YThjZWRmMWRjOGJjYTY5N2VmMTViZWY3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCkBAIC04Miw2ICs4MiwxMCBAQAogICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAi
dmFsdWVzIjogWyJEb2N1bWVudCIsICJFeGVjU3RhdGUiLCAiUnVudGltZUZsYWdzIiwgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQiXQogICAgICAgICB9LAorICAgICAgICAiQ29uc3RydWN0b3JFbmFi
bGVkQnlTZXR0aW5nIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmli
dXRlIiwgImludGVyZmFjZSJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCisgICAgICAg
IH0sCiAgICAgICAgICJDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIjogewogICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKaW5kZXgg
NDJjNTFmZWY0YjY1Y2I3NDRhODA0ZTZkYWY4MzAzM2VmMmZiMDdkMS4uYTRkOGQzZTY1ZGU1MDlk
NjJiOTg1YzczZmE2MmJlZWZjMDc5ODRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwKQEAgLTI4Myw3ICsyODMsOCBAQCBzdWIg
R2VuZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGVO
YW1lIChzb3J0IGtleXMgJXskZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewogICAgICAgbmV4dCB1bmxl
c3MgKCRhdHRyaWJ1dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEg
IkVuYWJsZWRBdFJ1bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9yV29ybGQi
CiAgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIiB8fCAkYXR0
cmlidXRlTmFtZSBlcSAiU2VjdXJlQ29udGV4dCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIlByaXZh
dGVJZGVudGlmaWVyIgotICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGljSWRlbnRp
ZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWlyayIgfHwgJGF0dHJpYnV0
ZU5hbWUgZXEgIkVuYWJsZWRCeVF1aXJrIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEZv
ckNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJDdXN0b21FbmFibGVkIik7CisgICAgICAg
IHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJQdWJsaWNJZGVudGlmaWVyIiB8fCAkYXR0cmlidXRlTmFt
ZSBlcSAiRGlzYWJsZWRCeVF1aXJrIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiRW5hYmxlZEJ5UXVp
cmsiCisgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9yQ29udGV4dCIgfHwg
JGF0dHJpYnV0ZU5hbWUgZXEgIkN1c3RvbUVuYWJsZWQiKSB8fCAkYXR0cmlidXRlTmFtZSBlcSAi
Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIjsKICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0
ZSA9ICRhdHRyaWJ1dGVOYW1lOwogICAgICAgJGV4dGVuZGVkQXR0cmlidXRlIC49ICI9IiAuICRl
eHRlbmRlZEF0dHJpYnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gdW5sZXNzICRleHRlbmRlZEF0dHJp
YnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogICAgICAgcHVz
aChAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCwgJGV4dGVuZGVkQXR0cmlidXRlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmlkbAppbmRleCA0MDJjNWJhMDFhODI0NTZmODhkZjRl
YTNlZTA2NTJlZDJjYWFjN2U4Li4zMDExOTkzOWM5OGMxOWU5YjkzMDI3NWQzNWNiNjY1MjU0NWVm
NDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaWRsCkBAIC0yMSw2ICsy
MSw3IEBACiAgICAgQ29uc3RydWN0b3IsCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVu
dCwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwK
ICAgICBET01KSVQsCiBdIGludGVyZmFjZSBEb2N1bWVudEZyYWdtZW50IDogTm9kZSB7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNjVmY2U0NmVkMGVi
YTBjODNiMGFmNzRhNGUyZjk3YTg5NjE2YjgxNC4uZWYyYjRlOGQ1M2M4NjYyOTZlYjY4NTMwMzQ1
MWM5ZDdhMWNiOTgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC05NzIsNiArOTcyLDExIEBAIGlubGluZSB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVJlbmRlcmVyKCkKIHsKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKKworI2lmIEVOQUJMRShN
RURJQV9DT05UUk9MU19TQ1JJUFQpCisgICAgaWYgKG1fbWVkaWFDb250cm9sc0hvc3QpCisgICAg
ICAgIG1fbWVkaWFDb250cm9sc0hvc3QtPnVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsKKyNl
bmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCkBA
IC0xNzQ4LDEwICsxNzUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjdXJyZW50Q3Vlc1NpemU7ICsraSkgewogICAgICAgICBSZWZQdHI8VGV4
dFRyYWNrQ3VlPiBjdWUgPSBjdXJyZW50Q3Vlc1tpXS5kYXRhKCk7Ci0KLSAgICAgICAgaWYgKGN1
ZS0+aXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICB0b1ZUVEN1ZShjdWUuZ2V0KCkpLT51cGRh
dGVEaXNwbGF5VHJlZShtb3ZpZVRpbWUpOwotCisgICAgICAgIGN1ZS0+dXBkYXRlRGlzcGxheVRy
ZWUobW92aWVUaW1lKTsKICAgICAgICAgaWYgKCFjdWUtPmlzQWN0aXZlKCkpCiAgICAgICAgICAg
ICBhY3RpdmVTZXRDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CkBAIC0yMDY0LDcgKzIwNjYsOCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0
VHJhY2tDdWUmIGN1ZSkKICAgICAvLyBTaW5jZSB0aGUgY3VlIHdpbGwgYmUgcmVtb3ZlZCBmcm9t
IHRoZSBtZWRpYSBlbGVtZW50IGFuZCBsaWtlbHkgdGhlCiAgICAgLy8gVGV4dFRyYWNrIG1pZ2h0
IGFsc28gYmUgZGVzdHJ1Y3RlZCwgbm90aWZ5aW5nIHRoZSByZWdpb24gb2YgdGhlIGN1ZQogICAg
IC8vIHJlbW92YWwgc2hvdWxkbid0IGJlIGRvbmUuCi0gICAgaWYgKGN1ZS5pc1JlbmRlcmFibGUo
KSkKKyAgICBhdXRvIGlzVlRUID0gaXM8VlRUQ3VlPihjdWUpOworICAgIGlmIChpc1ZUVCkKICAg
ICAgICAgdG9WVFRDdWUoJmN1ZSktPm5vdGlmeVJlZ2lvbldoZW5SZW1vdmluZ0Rpc3BsYXlUcmVl
KGZhbHNlKTsKIAogICAgIHNpemVfdCBpbmRleCA9IG1fY3VycmVudGx5QWN0aXZlQ3Vlcy5maW5k
KGludGVydmFsKTsKQEAgLTIwNzMsMTEgKzIwNzYsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJiBjdWUpCiAgICAg
ICAgIG1fY3VycmVudGx5QWN0aXZlQ3Vlcy5yZW1vdmUoaW5kZXgpOwogICAgIH0KIAotICAgIGlm
IChjdWUuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgIHRvVlRUQ3VlKCZjdWUpLT5yZW1vdmVEaXNw
bGF5VHJlZSgpOworICAgIGN1ZS5yZW1vdmVEaXNwbGF5VHJlZSgpOwogICAgIHVwZGF0ZUFjdGl2
ZVRleHRUcmFja0N1ZXMoY3VycmVudE1lZGlhVGltZSgpKTsKIAotICAgIGlmIChjdWUuaXNSZW5k
ZXJhYmxlKCkpCisgICAgaWYgKGlzVlRUKQogICAgICAgICB0b1ZUVEN1ZSgmY3VlKS0+bm90aWZ5
UmVnaW9uV2hlblJlbW92aW5nRGlzcGxheVRyZWUodHJ1ZSk7CiB9CiAKQEAgLTY1ODYsNiArNjU4
OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxheShU
ZXh0VHJhY2tWaXNpYmlsaXR5Q2hlY2tUeXBlIGNoCiAgICAgICAgIHJldHVybjsKIAogICAgIGVu
c3VyZU1lZGlhQ29udHJvbHNTaGFkb3dSb290KCk7CisgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxh
eSgpOwogI2Vsc2UKICAgICBpZiAoIW1faGF2ZVZpc2libGVUZXh0VHJhY2sgJiYgIWhhc01lZGlh
Q29udHJvbHMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjYwOSw3ICs2NjEyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIAogI2lmIEVOQUJM
RShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1fbWVkaWFDb250cm9sc0hvc3QpCi0g
ICAgICAgIG1fbWVkaWFDb250cm9sc0hvc3QtPnVwZGF0ZUNhcHRpb25EaXNwbGF5U2l6ZXMoKTsK
KyAgICAgICAgbV9tZWRpYUNvbnRyb2xzSG9zdC0+dXBkYXRlQ2FwdGlvbkRpc3BsYXlTaXplcyhN
ZWRpYUNvbnRyb2xzSG9zdDo6Rm9yY2VVcGRhdGU6Olllcyk7CiAjZW5kaWYKIAogICAgIGlmICht
X3BsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAppbmRleCBjZGRjNWI3OTVkNjI0OTZhY2ExNzMzMDY5OTUzYWIyODJmZWEz
MTYxLi4zOWExZDNhMmE5OWFmNTA2OTkxMjFjYWY2NGJjZGMwMWE2Mzg5ZGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBA
IC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZUdl
bmVyaWMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVlRUUmVnaW9u
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0xMTI1LDE0ICsx
MTI2LDEzIEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBk
YXRlRGlzcGxheSgpCiAgICAgLy8gMS4gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaXMgYW4gYXVkaW8g
ZWxlbWVudCwgb3IgaXMgYW5vdGhlciBwbGF5YmFjawogICAgIC8vIG1lY2hhbmlzbSB3aXRoIG5v
IHJlbmRlcmluZyBhcmVhLCBhYm9ydCB0aGVzZSBzdGVwcy4gVGhlcmUgaXMgbm90aGluZyB0bwog
ICAgIC8vIHJlbmRlci4KLSAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFFbGVtZW50LT5p
c1ZpZGVvKCkpCisgICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwgIW1lZGlhRWxlbWVudC0+aXNWaWRl
bygpIHx8IG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyAyLiBMZXQgdmlkZW8gYmUgdGhlIG1lZGlhIGVsZW1lbnQgb3Igb3RoZXIg
cGxheWJhY2sgbWVjaGFuaXNtLgogICAgIEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvID0gZG93bmNh
c3Q8SFRNTFZpZGVvRWxlbWVudD4oKm1lZGlhRWxlbWVudCk7CiAKICAgICAvLyAzLiBMZXQgb3V0
cHV0IGJlIGFuIGVtcHR5IGxpc3Qgb2YgYWJzb2x1dGVseSBwb3NpdGlvbmVkIENTUyBibG9jayBi
b3hlcy4KLSAgICBWZWN0b3I8UmVmUHRyPEhUTUxEaXZFbGVtZW50Pj4gb3V0cHV0OwogCiAgICAg
Ly8gNC4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgZXhwb3NpbmcgYSB1c2VyIGludGVyZmFjZSBmb3Ig
dmlkZW8sIGFkZCB0bwogICAgIC8vIG91dHB1dCBvbmUgb3IgbW9yZSBjb21wbGV0ZWx5IHRyYW5z
cGFyZW50IHBvc2l0aW9uZWQgQ1NTIGJsb2NrIGJveGVzIHRoYXQKQEAgLTExNzMsMTcgKzExNzMs
MTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVE
aXNwbGF5KCkKICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgIGFjdGl2ZUN1ZXMucmVt
b3ZlQWxsTWF0Y2hpbmcoW10gKEN1ZUludGVydmFsJiBjdWVJbnRlcnZhbCkgewotICAgICAgICBp
ZiAoIWlzPFZUVEN1ZT4oY3VlSW50ZXJ2YWwuZGF0YSgpKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgICAgIFJlZjxWVFRDdWU+IGN1ZSA9IGRvd25jYXN0PFZUVEN1ZT4oKmN1ZUlu
dGVydmFsLmRhdGEoKSk7Ci0KLSAgICAgICAgcmV0dXJuICFjdWUtPmlzUmVuZGVyYWJsZSgpCi0g
ICAgICAgICAgICB8fCAhY3VlLT50cmFjaygpCisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+
IGN1ZSA9IGN1ZUludGVydmFsLmRhdGEoKTsKKyAgICAgICAgcmV0dXJuICFjdWUtPnRyYWNrKCkK
ICAgICAgICAgICAgIHx8ICFjdWUtPnRyYWNrKCktPmlzUmVuZGVyZWQoKQogICAgICAgICAgICAg
fHwgY3VlLT50cmFjaygpLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZAogICAg
ICAgICAgICAgfHwgIWN1ZS0+aXNBY3RpdmUoKQotICAgICAgICAgICAgfHwgY3VlLT50ZXh0KCku
aXNFbXB0eSgpOworICAgICAgICAgICAgfHwgIWN1ZS0+aXNSZW5kZXJhYmxlKCk7CiAgICAgfSk7
CiAKICAgICAvLyBTb3J0IHRoZSBhY3RpdmUgY3VlcyBmb3IgdGhlIGFwcHJvcHJpYXRlIGRpc3Bs
YXkgb3JkZXIuIEZvciBleGFtcGxlLCBmb3Igcm9sbC11cApAQCAtMTE5MSwzNyArMTE4NiwyMCBA
QCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3Bs
YXkoKQogICAgIC8vIHNvIHRoYXQgdGhlIG5ld2VzdCBjYXB0aW9ucyBhcHBlYXIgYXQgdGhlIGJv
dHRvbS4KICAgICBzdGQ6OnNvcnQoYWN0aXZlQ3Vlcy5iZWdpbigpLCBhY3RpdmVDdWVzLmVuZCgp
LCAmY29tcGFyZUN1ZUludGVydmFsRm9yRGlzcGxheSk7CiAKLSAgICAvLyAxMC4gRm9yIGVhY2gg
dGV4dCB0cmFjayBjdWUgY3VlIGluIGN1ZXMgdGhhdCBoYXMgbm90IHlldCBoYWQKLSAgICAvLyBj
b3JyZXNwb25kaW5nIENTUyBib3hlcyBhZGRlZCB0byBvdXRwdXQsIGluIHRleHQgdHJhY2sgY3Vl
IG9yZGVyLCBydW4gdGhlCi0gICAgLy8gZm9sbG93aW5nIHN1YnN0ZXBzOgotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYWN0aXZlQ3Vlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIW1l
ZGlhQ29udHJvbGxlcigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIFJlZlB0cjxWVFRDdWU+IGN1ZSA9IGRvd25jYXN0PFZUVEN1ZT4o
YWN0aXZlQ3Vlc1tpXS5kYXRhKCkpOwotCi0gICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVS
LCAiYWRkaW5nIGFuZCBwb3NpdGlvbmluZyBjdWUgIiwgaSwgIjogXCIiLCBjdWUtPnRleHQoKSwg
IlwiLCBzdGFydD0iLCBjdWUtPnN0YXJ0VGltZSgpLCAiLCBlbmQ9IiwgY3VlLT5lbmRUaW1lKCks
ICIsIGxpbmU9IiwgY3VlLT5saW5lKCkpOwotICAgICAgICBSZWY8VlRUQ3VlQm94PiBkaXNwbGF5
Qm94ID0gY3VlLT5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2Zv
bnRTaXplKTsKLSAgICAgICAgUmVmUHRyPFZUVFJlZ2lvbj4gcmVnaW9uID0gY3VlLT50cmFjaygp
LT5yZWdpb25zKCktPmdldFJlZ2lvbkJ5SWQoY3VlLT5yZWdpb25JZCgpKTsKLSAgICAgICAgaWYg
KCFyZWdpb24pIHsKLSAgICAgICAgICAgIC8vIElmIGN1ZSBoYXMgYW4gZW1wdHkgdGV4dCB0cmFj
ayBjdWUgcmVnaW9uIGlkZW50aWZpZXIgb3IgdGhlcmUgaXMgbm8KLSAgICAgICAgICAgIC8vIFdl
YlZUVCByZWdpb24gd2hvc2UgcmVnaW9uIGlkZW50aWZpZXIgaXMgaWRlbnRpY2FsIHRvIGN1ZSdz
IHRleHQKLSAgICAgICAgICAgIC8vIHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciwgcnVuIHRo
ZSBmb2xsb3dpbmcgc3Vic3RlcHM6Ci0gICAgICAgICAgICBpZiAoZGlzcGxheUJveC0+aGFzQ2hp
bGROb2RlcygpICYmICFjb250YWlucyhkaXNwbGF5Qm94LnB0cigpKSkgewotICAgICAgICAgICAg
ICAgIC8vIE5vdGU6IHRoZSBkaXNwbGF5IHRyZWUgb2YgYSBjdWUgaXMgcmVtb3ZlZCB3aGVuIHRo
ZSBhY3RpdmUgZmxhZyBvZiB0aGUgY3VlIGlzIHVuc2V0LgotICAgICAgICAgICAgICAgIGFwcGVu
ZENoaWxkKGRpc3BsYXlCb3gpOwotICAgICAgICAgICAgICAgIGN1ZS0+c2V0Rm9udFNpemUobV9m
b250U2l6ZSwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKSwgbV9mb250U2l6ZUlzSW1wb3J0YW50
KTsKKyAgICBpZiAobWVkaWFDb250cm9sbGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKSB7
CisgICAgICAgIC8vIDEwLiBGb3IgZWFjaCB0ZXh0IHRyYWNrIGN1ZSBjdWUgaW4gY3VlcyB0aGF0
IGhhcyBub3QgeWV0IGhhZAorICAgICAgICAvLyBjb3JyZXNwb25kaW5nIENTUyBib3hlcyBhZGRl
ZCB0byBvdXRwdXQsIGluIHRleHQgdHJhY2sgY3VlIG9yZGVyLCBydW4gdGhlCisgICAgICAgIC8v
IGZvbGxvd2luZyBzdWJzdGVwczoKKyAgICAgICAgZm9yIChhdXRvJiBpbnRlcnZhbCA6IGFjdGl2
ZUN1ZXMpIHsKKyAgICAgICAgICAgIGF1dG8gY3VlID0gaW50ZXJ2YWwuZGF0YSgpOworICAgICAg
ICAgICAgY3VlLT5zZXRGb250U2l6ZShtX2ZvbnRTaXplLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6
ZSgpLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQpOworICAgICAgICAgICAgaWYgKGlzPFZUVEN1ZT4o
Y3VlKSB8fCBpczxUZXh0VHJhY2tDdWVHZW5lcmljPihjdWUpKQorICAgICAgICAgICAgICAgIHBy
b2Nlc3NBY3RpdmVWVFRDdWUoKnRvVlRUQ3VlKGN1ZSkpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBkaXNwbGF5Qm94ID0gY3VlLT5nZXREaXNwbGF5VHJlZShtX3Zp
ZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXplKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZGlzcGxheUJveC0+aGFzQ2hpbGROb2RlcygpICYmICFjb250YWlucyhkaXNwbGF5Qm94LmdldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQoKmRpc3BsYXlCb3gpOwogICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTGV0IHJlZ2lvbiBiZSB0
aGUgV2ViVlRUIHJlZ2lvbiB3aG9zZSByZWdpb24gaWRlbnRpZmllcgotICAgICAgICAgICAgLy8g
bWF0Y2hlcyB0aGUgdGV4dCB0cmFjayBjdWUgcmVnaW9uIGlkZW50aWZpZXIgb2YgY3VlLgotICAg
ICAgICAgICAgUmVmPEhUTUxEaXZFbGVtZW50PiByZWdpb25Ob2RlID0gcmVnaW9uLT5nZXREaXNw
bGF5VHJlZSgpOwotCi0gICAgICAgICAgICAvLyBBcHBlbmQgdGhlIHJlZ2lvbiB0byB0aGUgdmll
d3BvcnQsIGlmIGl0IHdhcyBub3QgYWxyZWFkeS4KLSAgICAgICAgICAgIGlmICghY29udGFpbnMo
cmVnaW9uTm9kZS5wdHIoKSkpCi0gICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQocmVnaW9uLT5n
ZXREaXNwbGF5VHJlZSgpKTsKLQotICAgICAgICAgICAgcmVnaW9uLT5hcHBlbmRUZXh0VHJhY2tD
dWVCb3goV1RGTW92ZShkaXNwbGF5Qm94KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyMzUs
NiArMTIxMywzMyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OnVwZGF0ZURpc3BsYXkoKQogICAgIH0KIH0KIAordm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50Ojpwcm9jZXNzQWN0aXZlVlRUQ3VlKFZUVEN1ZSYgY3VlKQoreworICAg
IEFTU0VSVChpczxWVFRDdWU+KGN1ZSkgfHwgaXM8VGV4dFRyYWNrQ3VlR2VuZXJpYz4oY3VlKSk7
CisKKyAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImFkZGluZyBhbmQgcG9zaXRpb25pbmcg
Y3VlOiBcIiIsIGN1ZS50ZXh0KCksICJcIiwgc3RhcnQ9IiwgY3VlLnN0YXJ0VGltZSgpLCAiLCBl
bmQ9IiwgY3VlLmVuZFRpbWUoKSwgIiwgbGluZT0iLCBjdWUubGluZSgpKTsKKyAgICBSZWY8VGV4
dFRyYWNrQ3VlQm94PiBkaXNwbGF5Qm94ID0gKmN1ZS5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlz
cGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXplKTsKKworICAgIGlmIChhdXRvIHJlZ2lvbiA9IGN1
ZS50cmFjaygpLT5yZWdpb25zKCktPmdldFJlZ2lvbkJ5SWQoY3VlLnJlZ2lvbklkKCkpKSB7Cisg
ICAgICAgIC8vIExldCByZWdpb24gYmUgdGhlIFdlYlZUVCByZWdpb24gd2hvc2UgcmVnaW9uIGlk
ZW50aWZpZXIKKyAgICAgICAgLy8gbWF0Y2hlcyB0aGUgdGV4dCB0cmFjayBjdWUgcmVnaW9uIGlk
ZW50aWZpZXIgb2YgY3VlLgorICAgICAgICBSZWY8SFRNTERpdkVsZW1lbnQ+IHJlZ2lvbk5vZGUg
PSByZWdpb24tPmdldERpc3BsYXlUcmVlKCk7CisKKyAgICAgICAgaWYgKCFjb250YWlucyhyZWdp
b25Ob2RlLnB0cigpKSkKKyAgICAgICAgICAgIGFwcGVuZENoaWxkKHJlZ2lvbi0+Z2V0RGlzcGxh
eVRyZWUoKSk7CisKKyAgICAgICAgcmVnaW9uLT5hcHBlbmRUZXh0VHJhY2tDdWVCb3goV1RGTW92
ZShkaXNwbGF5Qm94KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSWYgY3VlIGhhcyBhbiBl
bXB0eSB0ZXh0IHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciBvciB0aGVyZSBpcyBubworICAg
ICAgICAvLyBXZWJWVFQgcmVnaW9uIHdob3NlIHJlZ2lvbiBpZGVudGlmaWVyIGlzIGlkZW50aWNh
bCB0byBjdWUncyB0ZXh0CisgICAgICAgIC8vIHRyYWNrIGN1ZSByZWdpb24gaWRlbnRpZmllciwg
cnVuIHRoZSBmb2xsb3dpbmcgc3Vic3RlcHM6CisgICAgICAgIGlmIChkaXNwbGF5Qm94LT5oYXND
aGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKGRpc3BsYXlCb3gucHRyKCkpKSB7CisgICAgICAgICAg
ICAvLyBOb3RlOiB0aGUgZGlzcGxheSB0cmVlIG9mIGEgY3VlIGlzIHJlbW92ZWQgd2hlbiB0aGUg
YWN0aXZlIGZsYWcgb2YgdGhlIGN1ZSBpcyB1bnNldC4KKyAgICAgICAgICAgIGFwcGVuZENoaWxk
KGRpc3BsYXlCb3gpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZUN1ZXNGb250U2l6ZSgpCiB7CiAg
ICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKQEAgLTEyNTAsMTIgKzEyNTUsOSBAQCB2b2lkIE1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZUN1ZXNGb250
U2l6ZSgpCiAKICAgICBmb3IgKGF1dG8mIGFjdGl2ZUN1ZSA6IG1lZGlhRWxlbWVudC0+Y3VycmVu
dGx5QWN0aXZlQ3VlcygpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSA9IGFj
dGl2ZUN1ZS5kYXRhKCk7Ci0gICAgICAgIGlmICghY3VlLT5pc1JlbmRlcmFibGUoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHRvVlRUQ3VlKGN1ZS5nZXQoKSktPnNldEZvbnRT
aXplKG1fZm9udFNpemUsIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCksIG1fZm9udFNpemVJc0lt
cG9ydGFudCk7CisgICAgICAgIGlmIChjdWUtPmlzUmVuZGVyYWJsZSgpKQorICAgICAgICAgICAg
Y3VlLT5zZXRGb250U2l6ZShtX2ZvbnRTaXplLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBt
X2ZvbnRTaXplSXNJbXBvcnRhbnQpOwogICAgIH0KLQogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVRleHRTdHJva2VTdHlsZSgpCkBAIC0xMjk1
LDYgKzEyOTcsMTMgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
Ojp1cGRhdGVUaW1lckZpcmVkKCkKICAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBhdXRvIG1lZGlhRWxlbWVudCA9IHBhcmVudE1lZGlhRWxlbWVudCh0
aGlzKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChhdXRvJiBhY3RpdmVDdWUgOiBtZWRpYUVsZW1lbnQtPmN1cnJlbnRseUFjdGl2ZUN1ZXMoKSkK
KyAgICAgICAgYWN0aXZlQ3VlLmRhdGEoKS0+cmVjYWxjdWxhdGVTdHlsZXMoKTsKKwogICAgIGlm
IChtX3RleHRUcmFja1JlcHJlc2VudGF0aW9uKQogICAgICAgICB1cGRhdGVTdHlsZUZvclRleHRU
cmFja1JlcHJlc2VudGF0aW9uKCk7CiAKQEAgLTEzMTIsNyArMTMyMSw3IEBAIHZvaWQgTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24oKQogICAgIGlmICghbWVkaWFFbGVtZW50LT5yZXF1aXJlc1RleHRUcmFja1JlcHJlc2Vu
dGF0aW9uKCkpIHsKICAgICAgICAgaWYgKG1fdGV4dFRyYWNrUmVwcmVzZW50YXRpb24pIHsKICAg
ICAgICAgICAgIGNsZWFyVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKLSAgICAgICAgICAgIHVw
ZGF0ZVNpemVzKHRydWUpOworICAgICAgICAgICAgdXBkYXRlU2l6ZXMoRm9yY2VVcGRhdGU6Olll
cyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzNDYsNiArMTM1NSw3
IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU3R5
bGVGb3JUZXh0VHJhY2tSZXByZXNlbnRhdGlvCiB7CiAgICAgaWYgKCFtX3VwZGF0ZVRleHRUcmFj
a1JlcHJlc2VudGF0aW9uU3R5bGUpCiAgICAgICAgIHJldHVybjsKKwogICAgIG1fdXBkYXRlVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25TdHlsZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fdGV4dFRyYWNr
UmVwcmVzZW50YXRpb24pIHsKQEAgLTEzNjgsMTYgKzEzNzgsMTYgQEAgdm9pZCBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjplbnRlcmVkRnVsbHNjcmVlbigpCiB7CiAgICAg
aWYgKGhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgdXBkYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oKTsKLSAgICB1cGRhdGVTaXplcyh0cnVlKTsKKyAgICB1cGRhdGVTaXplcyhGb3JjZVVwZGF0
ZTo6WWVzKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
OjpleGl0ZWRGdWxsc2NyZWVuKCkKIHsKICAgICBjbGVhclRleHRUcmFja1JlcHJlc2VudGF0aW9u
KCk7Ci0gICAgdXBkYXRlU2l6ZXModHJ1ZSk7CisgICAgdXBkYXRlU2l6ZXMoRm9yY2VVcGRhdGU6
Olllcyk7CiB9CiAKLXZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlU2l6ZXMoYm9vbCBmb3JjZVVwZGF0ZSkKK3ZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoRm9yY2VVcGRhdGUgZm9yY2UpCiB7CiAgICAg
YXV0byBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFt
ZWRpYUVsZW1lbnQpCkBAIC0xMzk4LDcgKzE0MDgsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKGJvb2wgZm9yY2VVcGRhdGUpCiAgICAg
ICAgIHZpZGVvQm94ID0gZG93bmNhc3Q8UmVuZGVyVmlkZW8+KCptZWRpYUVsZW1lbnQtPnJlbmRl
cmVyKCkpLnZpZGVvQm94KCk7CiAgICAgfQogCi0gICAgaWYgKCFmb3JjZVVwZGF0ZSAmJiBtX3Zp
ZGVvRGlzcGxheVNpemUgPT0gdmlkZW9Cb3gpCisgICAgaWYgKGZvcmNlID09IEZvcmNlVXBkYXRl
OjpObyAmJiBtX3ZpZGVvRGlzcGxheVNpemUgPT0gdmlkZW9Cb3gpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fdmlkZW9EaXNwbGF5U2l6ZSA9IHZpZGVvQm94OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKaW5kZXggN2MyY2M2NWY5NjMw
NzlmMDY1M2QzMmQ2ZmVhZDNjOGY1NTZjNjNjOS4uZWFiNTU4ZjUyMzgxNzg1ZDVlZGRmMmM4YmM3
ZTQ2OGYyY2ZiMDgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ2Nyw2ICs0NjcsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQogCitjbGFzcyBWVFRDdWU7CisKIGNsYXNzIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQgZmluYWwKICAgICA6IHB1YmxpYyBNZWRpYUNvbnRyb2xE
aXZFbGVtZW50CiAgICAgLCBwdWJsaWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQKQEAg
LTQ3OCw4ICs0ODAsMTAgQEAgY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudCBmaW5hbAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKKyAgICBlbnVtIGNsYXNzIEZv
cmNlVXBkYXRlIHsgWWVzLCBObyB9OworICAgIHZvaWQgdXBkYXRlU2l6ZXMoRm9yY2VVcGRhdGUg
Zm9yY2UgPSBGb3JjZVVwZGF0ZTo6Tm8pOworCiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5KCk7Ci0g
ICAgdm9pZCB1cGRhdGVTaXplcyhib29sIGZvcmNlVXBkYXRlID0gZmFsc2UpOwogICAgIHZvaWQg
ZW50ZXJlZEZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKTsKIApAQCAt
NDg3LDYgKzQ5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7CiAg
ICAgdm9pZCB1cGRhdGVBY3RpdmVDdWVzRm9udFNpemUoKTsKICAgICB2b2lkIHVwZGF0ZVRleHRT
dHJva2VTdHlsZSgpOworICAgIHZvaWQgcHJvY2Vzc0FjdGl2ZVZUVEN1ZShWVFRDdWUmKTsKIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3Bw
CmluZGV4IGE3ZGJkYWRiMzI4OGVjM2JmN2QwOTBkY2M1NmIyNzkzMjBiOTJmYzAuLjY0Yzg4ZTU2
YmRiOGQzODExM2Y5MDc3MzhmMDg2NWJhOWJjMGY0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBNZWRp
YUNvbnRyb2xzOjp0ZXh0VHJhY2tQcmVmZXJlbmNlc0NoYW5nZWQoKQogewogICAgIGNsb3NlZENh
cHRpb25UcmFja3NDaGFuZ2VkKCk7CiAgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCi0g
ICAgICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVwZGF0ZVNpemVzKHRydWUpOworICAgICAg
ICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVTaXplcyhNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpGb3JjZVVwZGF0ZTo6WWVzKTsKIH0KIAogdm9pZCBNZWRpYUNv
bnRyb2xzOjpjbGVhclRleHREaXNwbGF5Q29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmNwcAppbmRleCA1OWExOTI0NjIwOWIwMDlhYzAxNGFiYTliNzIwZjMyMmQ1
NjE3OTc3Li4xODBjOTZjYzdhZjhhZGYxNWE1ZjFhNjJjNTc2MDY4YTRlYjA1MDFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC0yMzcsMTEgKzIzNyw4IEBAIHZv
aWQgVGV4dFRyYWNrOjpzZXRNb2RlKE1vZGUgbW9kZSkKICAgICAgICAgbV9jbGllbnQtPnRleHRU
cmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOwogCiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6
U2hvd2luZyAmJiBtX2N1ZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1
ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+IGN1
ZSA9IG1fY3Vlcy0+aXRlbShpKTsKLSAgICAgICAgICAgIGlmIChjdWUtPmlzUmVuZGVyYWJsZSgp
KQotICAgICAgICAgICAgICAgIHRvVlRUQ3VlKGN1ZS5nZXQoKSktPnJlbW92ZURpc3BsYXlUcmVl
KCk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxl
bmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX2N1ZXMtPml0ZW0oaSktPnJlbW92ZURpc3BsYXlU
cmVlKCk7CiAgICAgfQogCiAgICAgbV9tb2RlID0gbW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA4ZWFjNzUxY2Q3Y2E2ODk4MTlhYTA2YzJlM2Fl
ZWYzNzliM2U1NDA5Li5mYWMwNmJkZjVmMTgwYjY2YjI4NjRlZjk2ZTJlYzEyZjU1MjNiYjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0zNiw5ICsz
NiwxNSBAQAogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Zh
bHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJET01SZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
KyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNj
cmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0
VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCkBAIC00OCwxMSArNTQsMTMg
QEAKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVy
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChUZXh0VHJhY2tDdWUpOworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRUcmFja0N1
ZUJveCk7CiAKIGNvbnN0IEF0b21TdHJpbmcmIFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRv
SWQoKQogewpAQCAtNjAsMTIgKzY4LDE2NSBAQCBjb25zdCBBdG9tU3RyaW5nJiBUZXh0VHJhY2tD
dWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkKICAgICByZXR1cm4gY3VlOwogfQogCitjb25zdCBBdG9t
U3RyaW5nJiBUZXh0VHJhY2tDdWU6OmN1ZUJveFNoYWRvd1BzZXVkb0lkKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJhY2tEaXNwbGF5Qm94U2hhZG93
UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQ
c2V1ZG9JZDsKK30KKworY29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJv
cFNoYWRvd1BzZXVkb0lkKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gY3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrLWRpc3BsYXktYmFja2Ryb3AiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
CisgICAgcmV0dXJuIGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQ7Cit9CisKK3N0YXRpYyBjb25z
dCBRdWFsaWZpZWROYW1lJiBjdWVBdHRyaWJ1dE5hbWUoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVUYWcobnVsbEF0b20oKSwgImN1ZSIsIG51bGxBdG9t
KCkpOworICAgIHJldHVybiBjdWVUYWc7Cit9CisKK3N0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1l
JiBjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlQmFja2dyb3VuZFRhZyhudWxsQXRvbSgpLCAiY3VlYmFja2dy
b3VuZCIsIG51bGxBdG9tKCkpOworICAgIHJldHVybiBjdWVCYWNrZ3JvdW5kVGFnOworfQorCitU
ZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveChEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRU
cmFja0N1ZSYgY3VlKQorICAgIDogSFRNTEVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3Vt
ZW50KQorICAgICwgbV9jdWUobWFrZVdlYWtQdHIoY3VlKSkKK3sKKyAgICBzZXRIYXNDdXN0b21T
dHlsZVJlc29sdmVDYWxsYmFja3MoKTsKKyAgICBzZXRQc2V1ZG8oVGV4dFRyYWNrQ3VlOjpjdWVC
b3hTaGFkb3dQc2V1ZG9JZCgpKTsKK30KKworVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVCb3g6
OmdldEN1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3VlLmdldCgpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNMZWdhbE5vZGUoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS5o
YXNUYWdOYW1lKEhUTUxOYW1lczo6YnJUYWcpCisgICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OmRpdlRhZykKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
aW1nVGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwVGFnKQorICAg
ICAgICB8fCBub2RlLmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpyYlRhZykKKyAgICAgICAgfHwgbm9k
ZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cnRUYWcpCisgICAgICAgIHx8IG5vZGUuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnJ0Y1RhZykKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6cnVieVRhZykKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3BhblRh
ZykKKyAgICAgICAgfHwgbm9kZS5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERTsKK30KKwor
c3RhdGljIEV4Y2VwdGlvbiBpbnZhbGlkTm9kZUV4Y2VwdGlvbihOb2RlJiBub2RlKQoreworICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTm9kZVR5cGVFcnJvciwgbWFrZVN0cmluZygiSW52
YWxpZCBub2RlIHR5cGU6ICIsIG5vZGUubm9kZU5hbWUoKSkgfTsKK30KKworc3RhdGljIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGNoZWNrRm9ySW52YWxpZE5vZGVUeXBlcyhOb2RlJiByb290KQoreworICAg
IGlmICghaXNMZWdhbE5vZGUocm9vdCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkTm9kZUV4Y2Vw
dGlvbihyb290KTsKKworICAgIGZvciAoYXV0byogY2hpbGQgPSByb290LmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKCFpc0xl
Z2FsTm9kZSgqY2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIGludmFsaWROb2RlRXhjZXB0aW9u
KCpjaGlsZCk7CisKKyAgICAgICAgaWYgKGlzPENvbnRhaW5lck5vZGU+KCpjaGlsZCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gY2hlY2tGb3JJbnZhbGlkTm9kZVR5cGVzKCpjaGlsZCk7
CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHsgfTsKK30KKworZW51bSBSZXF1aXJlZE5vZGVzIHsKKyAgICBDdWUgPSAxIDw8
IDAsCisgICAgQ3VlQmFja2dyb3VuZCA9IDEgPDwgMSwKK307CisKK3N0YXRpYyBPcHRpb25TZXQ8
UmVxdWlyZWROb2Rlcz4gdGFnUHNldWRvT2JqZWN0cyhOb2RlJiBub2RlKQoreworICAgIGlmICgh
aXM8RWxlbWVudD4obm9kZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBPcHRpb25TZXQ8
UmVxdWlyZWROb2Rlcz4gbm9kZVR5cGVzID0geyB9OworCisgICAgYXV0byYgZWxlbWVudCA9IGRv
d25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY3VlQXR0cmlidXROYW1lKCkpKSB7CisgICAgICAgIGVsZW1lbnQu
c2V0UHNldWRvKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIG5v
ZGVUeXBlcyA9IHsgUmVxdWlyZWROb2Rlczo6Q3VlIH07CisgICAgfSBlbHNlIGlmIChlbGVtZW50
Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY3VlQmFja2dyb3VuZEF0dHJpYnV0
TmFtZSgpKSkgeworICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhUZXh0VHJhY2tDdWU6OmN1ZUJh
Y2tkcm9wU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIG5vZGVUeXBlcyA9IHsgUmVxdWlyZWRO
b2Rlczo6Q3VlQmFja2dyb3VuZCB9OworICAgIH0KKworICAgIGZvciAoYXV0byogY2hpbGQgPSBl
bGVtZW50LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
CisgICAgICAgIG5vZGVUeXBlcy5hZGQodGFnUHNldWRvT2JqZWN0cygqY2hpbGQpKTsKKworICAg
IHJldHVybiBub2RlVHlwZXM7Cit9CisKK3N0YXRpYyB2b2lkIHJlbW92ZVBzZXVkb0F0dHJpYnV0
ZXMoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7Cisg
ICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjdWVBdHRy
aWJ1dE5hbWUoKSkgfHwgZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKSkpCisgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0
cmlidXRlKEhUTUxOYW1lczo6cHNldWRvQXR0cik7CisKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0g
ZWxlbWVudC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KQorICAgICAgICByZW1vdmVQc2V1ZG9BdHRyaWJ1dGVzKCpjaGlsZCk7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZjxUZXh0VHJhY2tDdWU+PiBUZXh0VHJhY2tDdWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIERvY3VtZW50RnJh
Z21lbnQmIGN1ZURvY3VtZW50KQoreworICAgIEFTU0VSVChjb250ZXh0LmlzRG9jdW1lbnQoKSk7
CisgICAgQVNTRVJUKGlzPERvY3VtZW50RnJhZ21lbnQ+KGN1ZURvY3VtZW50KSk7CisKKyAgICBp
ZiAoIWN1ZURvY3VtZW50LmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWROb2RlVHlwZUVycm9yLCAiRW1wdHkgY3VlIGZyYWdtZW50IiB9OworCisgICAgZm9y
IChOb2RlKiBub2RlID0gY3VlRG9jdW1lbnQuZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9k
ZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNoZWNrRm9ySW52YWxp
ZE5vZGVUeXBlcygqbm9kZSk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICB9CisKKyAg
ICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KSk7CisgICAgZm9yIChOb2RlKiBub2RlID0gY3VlRG9jdW1lbnQuZmlyc3RD
aGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBhdXRv
IHJlc3VsdCA9IGZyYWdtZW50LT5lbnN1cmVQcmVJbnNlcnRpb25WYWxpZGl0eSgqbm9kZSwgbnVs
bHB0cik7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICB9CisgICAgY3VlRG9jdW1lbnQu
Y2xvbmVDaGlsZE5vZGVzKGZyYWdtZW50KTsKKworICAgIE9wdGlvblNldDxSZXF1aXJlZE5vZGVz
PiBub2RlVHlwZXMgPSB7IH07CisgICAgZm9yIChOb2RlKiBub2RlID0gZnJhZ21lbnQtPmZpcnN0
Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIG5vZGVU
eXBlcy5hZGQodGFnUHNldWRvT2JqZWN0cygqbm9kZSkpOworCisgICAgaWYgKCFub2RlVHlwZXMu
Y29udGFpbnMoUmVxdWlyZWROb2Rlczo6Q3VlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0
ZTogIiwgY3VlQXR0cmlidXROYW1lKCkudG9TdHJpbmcoKSkgfTsKKyAgICBpZiAoIW5vZGVUeXBl
cy5jb250YWlucyhSZXF1aXJlZE5vZGVzOjpDdWVCYWNrZ3JvdW5kKSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBtYWtlU3RyaW5nKCJNaXNzaW5nIHJlcXVp
cmVkIGF0dHJpYnV0ZTogIiwgY3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpLnRvU3RyaW5nKCkp
IH07CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tDdWUoY29udGV4dCwgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKGVuZCksIFdURk1vdmUoZnJhZ21lbnQuZ2V0KCkpKSk7Cit9CisKK1RleHRUcmFja0N1ZTo6
VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBEb2N1bWVudEZyYWdtZW50JiYgY3Vl
RnJhZ21lbnQpCisgICAgOiBUZXh0VHJhY2tDdWUoY29udGV4dCwgc3RhcnQsIGVuZCkKK3sKKyAg
ICBtX2N1ZU5vZGUgPSAmY3VlRnJhZ21lbnQ7Cit9CisKIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNr
Q3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQogICAgIDogbV9zdGFydFRpbWUoc3RhcnQpCiAgICAg
LCBtX2VuZFRpbWUoZW5kKQogICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQp
Ci0gICAgLCBtX2lzQWN0aXZlKGZhbHNlKQotICAgICwgbV9wYXVzZU9uRXhpdChmYWxzZSkKIHsK
ICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7CiB9CkBA
IC04NSw2ICsyNDYsOCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6ZGlkQ2hhbmdlKCkKICAgICBpZiAo
LS1tX3Byb2Nlc3NpbmdDdWVDaGFuZ2VzKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX2Rpc3Bs
YXlUcmVlTmVlZHNVcGRhdGUgPSB0cnVlOworCiAgICAgaWYgKG1fdHJhY2spCiAgICAgICAgIG1f
dHJhY2stPmN1ZURpZENoYW5nZSh0aGlzKTsKIH0KQEAgLTE2Niw2ICszMjksMTMgQEAgYm9vbCBU
ZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkKIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2ZShi
b29sIGFjdGl2ZSkKIHsKICAgICBtX2lzQWN0aXZlID0gYWN0aXZlOworCisgICAgaWYgKG1faXNB
Y3RpdmUgfHwgIW1fZGlzcGxheVRyZWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBk
aXNwbGF5IHRyZWUgaXMgbmV2ZXIgZXhwb3NlZCB0byBhdXRob3Igc2NyaXB0cyBzbyBpdCdzIHNh
ZmUgdG8gZGlzcGF0Y2ggZXZlbnRzIGhlcmUuCisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpF
dmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKm1fZGlzcGxheVRyZWUpOworICAgIG1fZGlz
cGxheVRyZWUtPnJlbW92ZSgpOwogfQogCiBib29sIFRleHRUcmFja0N1ZTo6aXNPcmRlcmVkQmVm
b3JlKGNvbnN0IFRleHRUcmFja0N1ZSogb3RoZXIpIGNvbnN0CkBAIC0yMjUsOCArMzk1LDggQEAg
dm9pZCBUZXh0VHJhY2tDdWU6OnRvSlNPTihKU09OOjpPYmplY3QmIHZhbHVlKSBjb25zdAogewog
ICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gIkdlbmVyaWMiX3M7CiAgICAgc3dpdGNoIChjdWVUeXBl
KCkpIHsKLSAgICBjYXNlIFRleHRUcmFja0N1ZTo6R2VuZXJpYzoKLSAgICAgICAgdHlwZSA9ICJH
ZW5lcmljIl9zOworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpDb252ZXJ0ZWRUb1dlYlZUVDoKKyAg
ICAgICAgdHlwZSA9ICJDb252ZXJ0ZWRUb1dlYlZUVCJfczsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBUZXh0VHJhY2tDdWU6OldlYlZUVDoKICAgICAgICAgdHlwZSA9ICJXZWJWVFQiX3M7CkBA
IC0yMzQsNiArNDA0LDkgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OnRvSlNPTihKU09OOjpPYmplY3Qm
IHZhbHVlKSBjb25zdAogICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpEYXRhOgogICAgICAgICB0eXBl
ID0gIkRhdGEiX3M7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dFRyYWNrQ3VlOjpHZW5l
cmljOgorICAgICAgICB0eXBlID0gIkdlbmVyaWMiX3M7CisgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIHZhbHVlLnNldFN0cmluZygidHlwZSJfcywgdHlwZSk7CkBAIC0yNTMsMTEgKzQyNiwx
MDggQEAgU3RyaW5nIFRleHRUcmFja0N1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIFN0cmluZyBU
ZXh0VHJhY2tDdWU6OmRlYnVnU3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmcgdGV4dDsKLSAg
ICBpZiAoaXNSZW5kZXJhYmxlKCkpCisgICAgaWYgKGlzPFZUVEN1ZT4odGhpcykpCiAgICAgICAg
IHRleHQgPSB0b1ZUVEN1ZSh0aGlzKS0+dGV4dCgpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKCIw
eCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIGlkPSIsIGlkKCks
ICIgaW50ZXJ2YWw9Iiwgc3RhcnRUaW1lKCksICItLT4iLCBlbmRUaW1lKCksICIgY3VlPSIsIHRl
eHQsICcpJyk7CiB9CiAKK1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6Omdl
dEN1ZUFzSFRNTCgpCit7CisgICAgaWYgKCFtX2N1ZU5vZGUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0
ZShvd25lckRvY3VtZW50KCkpOworICAgIG1fY3VlTm9kZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25l
ZEZyYWdtZW50KTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IGNsb25lZEZyYWdtZW50LT5maXJz
dENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICByZW1v
dmVQc2V1ZG9BdHRyaWJ1dGVzKCpub2RlKTsKKworICAgIHJldHVybiBjbG9uZWRGcmFnbWVudDsK
K30KKworYm9vbCBUZXh0VHJhY2tDdWU6OmlzUmVuZGVyYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fY3VlTm9kZSAmJiBtX2N1ZU5vZGUtPmZpcnN0Q2hpbGQoKTsKK30KKworUmVmUHRyPFRl
eHRUcmFja0N1ZUJveD4gVGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5VHJlZShjb25zdCBJbnRTaXpl
JiwgaW50KQoreworICAgIGlmIChtX2Rpc3BsYXlUcmVlICYmICFtX2Rpc3BsYXlUcmVlTmVlZHNV
cGRhdGUpCisgICAgICAgIHJldHVybiBtX2Rpc3BsYXlUcmVlOworCisgICAgcmVidWlsZERpc3Bs
YXlUcmVlKCk7CisKKyAgICByZXR1cm4gbV9kaXNwbGF5VHJlZTsKK30KKwordm9pZCBUZXh0VHJh
Y2tDdWU6OnJlbW92ZURpc3BsYXlUcmVlKCkKK3sKKyAgICBpZiAoIW1fZGlzcGxheVRyZWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBkaXNwbGF5IHRyZWUgaXMgbmV2ZXIgZXhwb3Nl
ZCB0byBhdXRob3Igc2NyaXB0cyBzbyBpdCdzIHNhZmUgdG8gZGlzcGF0Y2ggZXZlbnRzIGhlcmUu
CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2Nv
cGUoKm1fZGlzcGxheVRyZWUpOworICAgIG1fZGlzcGxheVRyZWUtPnJlbW92ZSgpOworfQorCit2
b2lkIFRleHRUcmFja0N1ZTo6c2V0Rm9udFNpemUoaW50IGZvbnRTaXplLCBjb25zdCBJbnRTaXpl
JiwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgaWYgKGZvbnRTaXplID09IG1fZm9udFNpemUgJiYg
aW1wb3J0YW50ID09IG1fZm9udFNpemVJc0ltcG9ydGFudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRlID0gdHJ1ZTsKKyAgICBtX2ZvbnRTaXplSXNJbXBv
cnRhbnQgPSBpbXBvcnRhbnQ7CisgICAgbV9mb250U2l6ZSA9IGZvbnRTaXplOworfQorCit2b2lk
IFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKCkKK3sKKyAgICBpZiAoIW1fY3VlTm9k
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFs
bG93ZWRTY29wZSBhbGxvd2VkU2NvcGVGb3JSZWZlcmVuY2VUcmVlKCptX2N1ZU5vZGUpOworCisg
ICAgaWYgKCFtX2Rpc3BsYXlUcmVlKSB7CisgICAgICAgIG1fZGlzcGxheVRyZWUgPSBUZXh0VHJh
Y2tDdWVCb3g6OmNyZWF0ZShvd25lckRvY3VtZW50KCksICp0aGlzKTsKKyAgICAgICAgbV9kaXNw
bGF5VHJlZS0+c2V0UHNldWRvKEF0b21TdHJpbmcoIi13ZWJraXQtZ2VuZXJpYy1jdWUtcm9vdCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgfQorCisgICAgbV9kaXNw
bGF5VHJlZS0+cmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICBhdXRvIGNsb25lZEZyYWdtZW50ID0gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnQoKSk7CisgICAgbV9jdWVOb2RlLT5j
bG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQpOworICAgIG1fZGlzcGxheVRyZWUtPmFwcGVu
ZENoaWxkKGNsb25lZEZyYWdtZW50KTsKKworICAgIGlmIChtX2ZvbnRTaXplICYmIG93bmVyRG9j
dW1lbnQoKS5wYWdlKCkpIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChvd25lckRvY3VtZW50KCkucGFnZSgpLT5jYXB0aW9uVXNlclByZWZl
cmVuY2VzU3R5bGVTaGVldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgOjoi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9J
ZCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJ3snKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoZ2V0UHJvcGVydHlOYW1lU3RyaW5nKENTU1Byb3BlcnR5Rm9udFNpemUpKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyht
X2ZvbnRTaXplLCAicHgiKSk7CisgICAgICAgIGlmIChtX2ZvbnRTaXplSXNJbXBvcnRhbnQpCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiAhaW1wb3J0YW50Iik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOyB9Iik7CisKKyAgICAgICAgYXV0byBzdHlsZSA9IEhU
TUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnN0eWxlVGFnLCBvd25lckRvY3VtZW50
KCksIGZhbHNlKTsKKyAgICAgICAgc3R5bGUtPnNldFRleHRDb250ZW50KGJ1aWxkZXIudG9TdHJp
bmcoKSk7CisgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKHN0eWxlKTsKKyAgICB9
CisKKyAgICBpZiAodHJhY2soKSkgeworICAgICAgICBpZiAoY29uc3QgYXV0byYgc3R5bGVTaGVl
dHMgPSB0cmFjaygpLT5zdHlsZVNoZWV0cygpKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGNzc1N0cmluZyA6ICpzdHlsZVNoZWV0cykgeworICAgICAgICAgICAgICAgIGF1dG8gc3R5
bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpzdHlsZVRhZywgbV9kaXNw
bGF5VHJlZS0+ZG9jdW1lbnQoKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRU
ZXh0Q29udGVudChjc3NTdHJpbmcpOworICAgICAgICAgICAgICAgIG1fZGlzcGxheVRyZWUtPmFw
cGVuZENoaWxkKHN0eWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fZGlzcGxheVRyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgK
aW5kZXggYWVkZGJkM2Q3OTFmZThjMjUyOTA5YTk2YjI2M2ZlMjI4NmI3M2YyNC4uZWJiNDU5NzUx
YTE0NzJhYzVmZjc4N2RhOTRhY2Y5YTMwMjRhMGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCkBAIC0zNCwxNyArMzQsNDQgQEAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVz
Lmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1ZTsKIAotY2xhc3MgVGV4dFRyYWNr
Q3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEgeworY2xhc3MgVGV4dFRyYWNrQ3VlQm94IDogcHVibGljIEhUTUxFbGVt
ZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFja0N1ZUJveCk7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxUZXh0VHJhY2tDdWVCb3g+IGNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIFRleHRUcmFja0N1ZSYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVGV4dFRyYWNrQ3VlQm94KGRvY3VtZW50LCBjdWUpKTsKKyAgICB9CisKKyAgICBUZXh0
VHJhY2tDdWUqIGdldEN1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhcHBseUNTU1Byb3Bl
cnRpZXMoY29uc3QgSW50U2l6ZSYpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgVGV4dFRyYWNrQ3Vl
Qm94KERvY3VtZW50JiwgVGV4dFRyYWNrQ3VlJik7CisgICAgflRleHRUcmFja0N1ZUJveCgpIHsg
fQorCitwcml2YXRlOgorCisgICAgV2Vha1B0cjxUZXh0VHJhY2tDdWU+IG1fY3VlOworfTsKKwor
Y2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVi
bGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0
VHJhY2tDdWU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFja0N1ZSk7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1ZVNoYWRvd1BzZXVkb0lkKCk7
CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQo
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgY3VlQm94U2hhZG93UHNldWRvSWQoKTsK
KworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8VGV4dFRyYWNrQ3VlPj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIERvY3VtZW50RnJh
Z21lbnQmKTsKIAogICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdDsKICAgICB2b2lkIHNldFRy
YWNrKFRleHRUcmFjayopOwpAQCAtNzUsOSArMTAyLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNFcXVpdmFsZW50U3RhcnRUaW1lKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0OwogCi0gICAg
ZW51bSBDdWVUeXBlIHsgRGF0YSwgR2VuZXJpYywgV2ViVlRUIH07Ci0gICAgdmlydHVhbCBDdWVU
eXBlIGN1ZVR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgZW51bSBDdWVUeXBlIHsgR2VuZXJpYywgRGF0
YSwgQ29udmVydGVkVG9XZWJWVFQsIFdlYlZUVCB9OworICAgIHZpcnR1YWwgQ3VlVHlwZSBjdWVU
eXBlKCkgY29uc3QgeyByZXR1cm4gQ3VlVHlwZTo6R2VuZXJpYzsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1JlbmRlcmFibGUoKSBjb25zdDsKIAogICAgIGVudW0gQ3VlTWF0Y2hSdWxlcyB7IE1hdGNo
QWxsRmllbGRzLCBJZ25vcmVEdXJhdGlvbiB9OwogICAgIHZpcnR1YWwgYm9vbCBpc0VxdWFsKGNv
bnN0IFRleHRUcmFja0N1ZSYsIEN1ZU1hdGNoUnVsZXMpIGNvbnN0OwpAQCAtODYsMTMgKzExMywy
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsQ2hhbmdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZSgpOwogCisgICAgdmlydHVhbCBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBnZXREaXNw
bGF5VHJlZShjb25zdCBJbnRTaXplJiwgaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGlz
cGxheVRyZWUoKTsKKworICAgIHZpcnR1YWwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1
ZUFzSFRNTCgpOworCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogICAgIFN0cmlu
ZyBkZWJ1Z1N0cmluZygpIGNvbnN0OwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCisgICAgdmlydHVhbCB2b2lkIHJlY2FsY3VsYXRl
U3R5bGVzKCkgeyBtX2Rpc3BsYXlUcmVlTmVlZHNVcGRhdGUgPSB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldEZvbnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVRyZWUoY29uc3QgTWVkaWFUaW1lJikgeyB9
OworCiBwcm90ZWN0ZWQ6CisgICAgVGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgRG9jdW1lbnRG
cmFnbWVudCYmKTsKICAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKTsKIAogICAgIERvY3Vt
ZW50JiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7IH0KQEAgLTExMSw2ICsxNDgsOCBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBib29sIGN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3Q7
CiAKKyAgICB2b2lkIHJlYnVpbGREaXNwbGF5VHJlZSgpOworCiAgICAgU3RyaW5nIG1faWQ7CiAg
ICAgTWVkaWFUaW1lIG1fc3RhcnRUaW1lOwogICAgIE1lZGlhVGltZSBtX2VuZFRpbWU7CkBAIC0x
MjAsOCArMTU5LDE1IEBAIHByaXZhdGU6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICBib29sIG1faXNBY3RpdmUgOiAxOwotICAg
IGJvb2wgbV9wYXVzZU9uRXhpdCA6IDE7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG1f
Y3VlTm9kZTsKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlQm94PiBtX2Rpc3BsYXlUcmVlOworCisg
ICAgaW50IG1fZm9udFNpemUgeyAwIH07CisgICAgYm9vbCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQg
eyBmYWxzZSB9OworCisgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
cGF1c2VPbkV4aXQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaXNwbGF5VHJlZU5lZWRzVXBkYXRl
IHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCmluZGV4IDQ0ZmUxNjhhYWQ2NTVkNmE3OWM2NjRh
ZGIxNWEzODcyYTE4ODUzMjUuLmQ1NGQwMTVmNWMwZTFjMmIwM2Q2YzkyMTg5YThlMzlmMDNlYTg3
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYg
KzMwLDEwIEBACiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlv
biwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKKyAgICBDb25zdHJ1Y3Rvcihkb3VibGUgc3Rh
cnRUaW1lLCBkb3VibGUgZW5kVGltZSwgRG9jdW1lbnRGcmFnbWVudCBjdWVOb2RlKSwKKyAgICBD
b25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgQ29uc3RydWN0
b3JFbmFibGVkQnlTZXR0aW5nPUdlbmVyaWNDdWVBUEksCisgICAgQ29uc3RydWN0b3JNYXlUaHJv
d0V4Y2VwdGlvbiwKIF0gaW50ZXJmYWNlIFRleHRUcmFja0N1ZSA6IEV2ZW50VGFyZ2V0IHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrIHRyYWNrOwogCkBAIC0zOSw0ICs0NCw2IEBA
CiAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZW50ZXI7CiAgICAgYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbmV4aXQ7CisKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1HZW5lcmljQ3VlQVBJ
XSBEb2N1bWVudEZyYWdtZW50IGdldEN1ZUFzSFRNTCgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCmluZGV4IDE1ZGZhMjMzODU5
ZGNiYWIwNzVmMTRhZDg2MmEzNjgyYzMwM2I2NGUuLmM0YjZmZDljZDUzNjUwMTY4MDNmODViZjFj
MTdiMzE5NWQ5N2EyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmNwcApAQCAtMjI5LDcgKzIyOSw3IEBAIGJvb2wgVGV4dFRyYWNrQ3Vl
R2VuZXJpYzo6aXNFcXVhbChjb25zdCBUZXh0VHJhY2tDdWUmIGN1ZSwgVGV4dFRyYWNrQ3VlOjpD
dWVNYXRjCiAgICAgaWYgKCFUZXh0VHJhY2tDdWU6OmlzRXF1YWwoY3VlLCBtYXRjaCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChjdWUuY3VlVHlwZSgpICE9IFRleHRUcmFja0N1
ZTo6R2VuZXJpYykKKyAgICBpZiAoY3VlLmN1ZVR5cGUoKSAhPSBUZXh0VHJhY2tDdWU6OkNvbnZl
cnRlZFRvV2ViVlRUKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gY3VlQ29u
dGVudHNNYXRjaChjdWUpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgVGV4dFRyYWNrQ3VlR2Vu
ZXJpYzo6aXNPcmRlcmVkQmVmb3JlKGNvbnN0IFRleHRUcmFja0N1ZSogdGhhdCkgY29uc3QKICAg
ICBpZiAoVlRUQ3VlOjppc09yZGVyZWRCZWZvcmUodGhhdCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgaWYgKHRoYXQtPmN1ZVR5cGUoKSA9PSBHZW5lcmljICYmIHN0YXJ0VGltZSgpID09
IHRoYXQtPnN0YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0aGF0LT5lbmRUaW1lKCkpIHsKKyAg
ICBpZiAodGhhdC0+Y3VlVHlwZSgpID09IENvbnZlcnRlZFRvV2ViVlRUICYmIHN0YXJ0VGltZSgp
ID09IHRoYXQtPnN0YXJ0VGltZSgpICYmIGVuZFRpbWUoKSA9PSB0aGF0LT5lbmRUaW1lKCkpIHsK
ICAgICAgICAgLy8gRnVydGhlciBvcmRlciBnZW5lcmljIGN1ZXMgYnkgdGhlaXIgY2FsY3VsYXRl
ZCBsaW5lIHZhbHVlLgogICAgICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IHRoaXNQb3Np
dGlvbiA9IGdldFBvc2l0aW9uQ29vcmRpbmF0ZXMoKTsKICAgICAgICAgc3RkOjpwYWlyPGRvdWJs
ZSwgZG91YmxlPiB0aGF0UG9zaXRpb24gPSB0b1ZUVEN1ZSh0aGF0KS0+Z2V0UG9zaXRpb25Db29y
ZGluYXRlcygpOwpAQCAtMjYxLDE0ICsyNjEsMTQgQEAgYm9vbCBUZXh0VHJhY2tDdWVHZW5lcmlj
Ojppc09yZGVyZWRCZWZvcmUoY29uc3QgVGV4dFRyYWNrQ3VlKiB0aGF0KSBjb25zdAogCiBib29s
IFRleHRUcmFja0N1ZUdlbmVyaWM6OmlzUG9zaXRpb25lZEFib3ZlKGNvbnN0IFRleHRUcmFja0N1
ZSogdGhhdCkgY29uc3QKIHsKLSAgICBpZiAodGhhdC0+Y3VlVHlwZSgpID09IEdlbmVyaWMgJiYg
c3RhcnRUaW1lKCkgPT0gdGhhdC0+c3RhcnRUaW1lKCkgJiYgZW5kVGltZSgpID09IHRoYXQtPmVu
ZFRpbWUoKSkgeworICAgIGlmICh0aGF0LT5jdWVUeXBlKCkgPT0gQ29udmVydGVkVG9XZWJWVFQg
JiYgc3RhcnRUaW1lKCkgPT0gdGhhdC0+c3RhcnRUaW1lKCkgJiYgZW5kVGltZSgpID09IHRoYXQt
PmVuZFRpbWUoKSkgewogICAgICAgICAvLyBGdXJ0aGVyIG9yZGVyIGdlbmVyaWMgY3VlcyBieSB0
aGVpciBjYWxjdWxhdGVkIGxpbmUgdmFsdWUuCiAgICAgICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRv
dWJsZT4gdGhpc1Bvc2l0aW9uID0gZ2V0UG9zaXRpb25Db29yZGluYXRlcygpOwogICAgICAgICBz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IHRoYXRQb3NpdGlvbiA9IHRvVlRUQ3VlKHRoYXQpLT5n
ZXRQb3NpdGlvbkNvb3JkaW5hdGVzKCk7CiAgICAgICAgIHJldHVybiB0aGlzUG9zaXRpb24uc2Vj
b25kID4gdGhhdFBvc2l0aW9uLnNlY29uZCB8fCAodGhpc1Bvc2l0aW9uLnNlY29uZCA9PSB0aGF0
UG9zaXRpb24uc2Vjb25kICYmIHRoaXNQb3NpdGlvbi5maXJzdCA8IHRoYXRQb3NpdGlvbi5maXJz
dCk7CiAgICAgfQogICAgIAotICAgIGlmICh0aGF0LT5jdWVUeXBlKCkgPT0gR2VuZXJpYykKKyAg
ICBpZiAodGhhdC0+Y3VlVHlwZSgpID09IENvbnZlcnRlZFRvV2ViVlRUKQogICAgICAgICByZXR1
cm4gc3RhcnRUaW1lKCkgPiB0aGF0LT5zdGFydFRpbWUoKTsKICAgICAKICAgICByZXR1cm4gVlRU
Q3VlOjppc09yZGVyZWRCZWZvcmUodGhhdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCmluZGV4IDJjZDcxMDBjZTE1YWEzY2E2MWI1ZmNiODM1
NTAwNDdlMDkyNjlhZWEuLmZkMGNiM2ViMzExOGNjM2YzM2M5YjY4ODZhYTBmNjJhMDY0ZjFkNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJp
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5o
CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjdWVDb250ZW50c01hdGNoKGNv
bnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZG9lc0V4dGVuZEN1ZShj
b25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBmaW5hbDsKIAotICAgIEN1ZVR5cGUgY3VlVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEdlbmVyaWM7IH0KKyAgICBDdWVUeXBlIGN1ZVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBDb252ZXJ0ZWRUb1dlYlZUVDsgfQogCiAgICAgQ29sb3IgbV9m
b3JlZ3JvdW5kQ29sb3I7CiAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CkBAIC0xMTEsNyAr
MTExLDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM+
IHsKIH0KIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0VHJhY2tD
dWVHZW5lcmljKQotc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRleHRUcmFja0N1
ZSYgY3VlKSB7IHJldHVybiBjdWUuY3VlVHlwZSgpID09IFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6
R2VuZXJpYzsgfQorc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRleHRUcmFja0N1
ZSYgY3VlKSB7IHJldHVybiBjdWUuY3VlVHlwZSgpID09IFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6
Q29udmVydGVkVG9XZWJWVFQ7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggOWUwMmMyNmMwODMzOTEy
YzkxMTM3NjU5ZmU3YmJkN2U4ZjBmM2MwYi4uOGRmZWJkMjVjMzRkNjAzMzYxZjRkNzRiYWQ3NzNi
ZWZkNjk5YTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRleHRU
cmFja0N1ZUdlbmVyaWMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVk
ZSAiVlRUUmVnaW9uTGlzdC5oIgogI2luY2x1ZGUgIlZUVFNjYW5uZXIuaCIKQEAgLTU5LDggKzYw
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoVlRUQ3VlQm94KTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChWVFRDdWUpOworV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFZUVEN1ZUJveCk7CiAKIC8vIFRoaXMgY29uc3RhbnQg
c2hvdWxkIGNvcnJlc3BvbmQgd2l0aCB0aGUgcGVyY2VudGFnZSByZXR1cm5lZCBieSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpjYXB0aW9uRm9udFNpemVTY2FsZUFuZEltcG9ydGFuY2UuCiBzdGF0
aWMgY29uc3RleHByIGRvdWJsZSBERUZBVUxUQ0FQVElPTkZPTlRTSVpFUEVSQ0VOVEFHRSA9IDU7
CkBAIC0xMjYsMzEgKzEyNywxOSBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiB2ZXJ0aWNhbEdyb3dp
bmdSaWdodEtleXdvcmQoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJl
ZjxWVFRDdWVCb3g+IFZUVEN1ZUJveDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVlRUQ3Vl
JiBjdWUpCi17Ci0gICAgVlRUQ3VlQm94JiBjdWVCb3ggPSAqbmV3IFZUVEN1ZUJveChkb2N1bWVu
dCwgY3VlKTsKLSAgICBjdWVCb3guc2V0UHNldWRvKFZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93
UHNldWRvSWQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKGN1ZUJveCk7Ci19Ci0KIFZUVEN1ZUJv
eDo6VlRUQ3VlQm94KERvY3VtZW50JiBkb2N1bWVudCwgVlRUQ3VlJiBjdWUpCi0gICAgOiBIVE1M
RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQotICAgICwgbV9jdWUobWFrZVdlYWtQdHIoY3VlKSkK
LXsKLSAgICBzZXRQc2V1ZG8odnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKSk7Ci19Ci0KLVZUVEN1
ZSogVlRUQ3VlQm94OjpnZXRDdWUoKSBjb25zdAorICAgIDogVGV4dFRyYWNrQ3VlQm94KGRvY3Vt
ZW50LCBjdWUpCiB7Ci0gICAgcmV0dXJuIG1fY3VlLmdldCgpOwogfQogCiB2b2lkIFZUVEN1ZUJv
eDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKIHsKLSAgICBp
ZiAoIW1fY3VlKQorICAgIGF1dG8gdGV4dFRyYWNrQ3VlID0gZ2V0Q3VlKCk7CisgICAgaWYgKCF0
ZXh0VHJhY2tDdWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY3VlID0gbWFrZVJlZigq
bV9jdWUpOworICAgIEFTU0VSVChpczxWVFRDdWU+KHRleHRUcmFja0N1ZSkgfHwgaXM8VGV4dFRy
YWNrQ3VlR2VuZXJpYz4odGV4dFRyYWNrQ3VlKSk7CisgICAgYXV0byBjdWUgPSBtYWtlUmVmKCp0
b1ZUVEN1ZSh0ZXh0VHJhY2tDdWUpKTsKIAogICAgIC8vIEZJWE1FOiBBcHBseSBhbGwgdGhlIGlu
aXRpYWwgQ1NTIHBvc2l0aW9uaW5nIHByb3BlcnRpZXMuIGh0dHA6Ly93a2IudWcvNzk5MTYKICAg
ICBpZiAoIWN1ZS0+cmVnaW9uSWQoKS5pc0VtcHR5KCkpIHsKQEAgLTI0MiwxMiArMjMxLDYgQEAg
dm9pZCBWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyhjb25zdCBJbnRTaXplJiB2aWRlb1Np
emUpCiAgICAgY3VlLT5lbGVtZW50KCkuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2libGUpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBWVFRD
dWVCb3g6OnZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQoIi13
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHJldHVybiB0cmFja0Rpc3BsYXlCb3hTaGFkb3dQc2V1ZG9JZDsKLX0K
LQogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZUVEN1ZT4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKQEAgLTI1NSwxMiArMjM4LDYgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFZUVEN1
ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGMKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBBdG9tU3RyaW5nJiBWVFRDdWU6
OmN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1l
ZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJvcCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICByZXR1cm4gY3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZDsKLX0KLQog
UmVmPFZUVEN1ZT4gVlRUQ3VlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgV2ViVlRUQ3VlRGF0YSYgZGF0YSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBWVFRDdWUoY29udGV4dCwgZGF0YSkpOwpAQCAtODY3LDExICs4NDQsMTEgQEAgdm9pZCBWVFRD
dWU6OnVwZGF0ZURpc3BsYXlUcmVlKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgIG1f
Y3VlSGlnaGxpZ2h0Qm94LT5hcHBlbmRDaGlsZCgqcmVmZXJlbmNlVHJlZSk7CiB9CiAKLVZUVEN1
ZUJveCYgVlRUQ3VlOjpnZXREaXNwbGF5VHJlZShjb25zdCBJbnRTaXplJiB2aWRlb1NpemUsIGlu
dCBmb250U2l6ZSkKK1JlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IFZUVEN1ZTo6Z2V0RGlzcGxheVRy
ZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBpbnQgZm9udFNpemUpCiB7CiAgICAgUmVmPFZU
VEN1ZUJveD4gZGlzcGxheVRyZWUgPSBkaXNwbGF5VHJlZUludGVybmFsKCk7CiAgICAgaWYgKCFt
X2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlIHx8ICF0cmFjaygpLT5pc1JlbmRlcmVkKCkpCi0gICAg
ICAgIHJldHVybiBkaXNwbGF5VHJlZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlUcmVl
OwogCiAgICAgLy8gMTAuMSAtIDEwLjEwCiAgICAgY2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMo
KTsKQEAgLTkxNywxNSArODk0LDI4IEBAIFZUVEN1ZUJveCYgVlRUQ3VlOjpnZXREaXNwbGF5VHJl
ZShjb25zdCBJbnRTaXplJiB2aWRlb1NpemUsIGludCBmb250U2l6ZSkKICAgICAgICAgfQogICAg
IH0KIAorICAgIGlmIChtX2ZvbnRTaXplKQorICAgICAgICBkaXNwbGF5VHJlZS0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBtX2ZvbnRTaXplLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYLCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQpOworCiAgICAgbV9kaXNwbGF5
VHJlZVNob3VsZENoYW5nZSA9IGZhbHNlOwogCisgICAgaWYgKHRyYWNrKCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHJlZ2lvbnMgPSB0cmFjaygpLT5yZWdpb25zKCkpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIHJlZ2lvbiA9IHJlZ2lvbnMtPmdldFJlZ2lvbkJ5SWQobV9yZWdpb25JZCkpCisgICAg
ICAgICAgICAgICAgcmVnaW9uLT5jdWVTdHlsZUNoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIC8vIDEwLjE1LiBMZXQgY3VlJ3MgdGV4dCB0cmFjayBjdWUgZGlzcGxheSBzdGF0ZSBo
YXZlIHRoZSBDU1MgYm94ZXMgaW4KICAgICAvLyBib3hlcy4KLSAgICByZXR1cm4gZGlzcGxheVRy
ZWUuZ2V0KCk7CisgICAgcmV0dXJuIGRpc3BsYXlUcmVlOwogfQogCiB2b2lkIFZUVEN1ZTo6cmVt
b3ZlRGlzcGxheVRyZWUoKQogeworICAgIGlmICghaGFzRGlzcGxheVRyZWUoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgLy8gVGhlIHJlZ2lvbiBuZWVkcyB0byBiZSBpbmZvcm1lZCBhYm91dCB0
aGUgY3VlIHJlbW92YWwuCiAgICAgaWYgKG1fbm90aWZ5UmVnaW9uICYmIHRyYWNrKCkpIHsKICAg
ICAgICAgaWYgKFZUVFJlZ2lvbkxpc3QqIHJlZ2lvbnMgPSB0cmFjaygpLT5yZWdpb25zKCkpIHsK
QEAgLTkzNiw5ICs5MjYsNiBAQCB2b2lkIFZUVEN1ZTo6cmVtb3ZlRGlzcGxheVRyZWUoKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFoYXNEaXNwbGF5VHJlZSgpKQotICAgICAgICByZXR1
cm47Ci0KICAgICAvLyBUaGUgZGlzcGxheSB0cmVlIGlzIG5ldmVyIGV4cG9zZWQgdG8gYXV0aG9y
IHNjcmlwdHMgc28gaXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBoZXJlLgogICAgIFNjcmlw
dERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKGRpc3BsYXlU
cmVlSW50ZXJuYWwoKSk7CiAgICAgZGlzcGxheVRyZWVJbnRlcm5hbCgpLnJlbW92ZSgpOwpAQCAt
MTI0OCwxMSArMTIzNSwxMiBAQCBib29sIFZUVEN1ZTo6ZG9lc0V4dGVuZEN1ZShjb25zdCBUZXh0
VHJhY2tDdWUmIGN1ZSkgY29uc3QKICAgICAKIHZvaWQgVlRUQ3VlOjpzZXRGb250U2l6ZShpbnQg
Zm9udFNpemUsIGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCkKIHsKLSAgICBpZiAoIWhh
c0Rpc3BsYXlUcmVlKCkgfHwgIWZvbnRTaXplKQorICAgIGlmIChmb250U2l6ZSA9PSBtX2ZvbnRT
aXplICYmIGltcG9ydGFudCA9PSBtX2ZvbnRTaXplSXNJbXBvcnRhbnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UgPSB0cnVlOwotICAgIGRpc3BsYXlU
cmVlSW50ZXJuYWwoKS5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUs
IGZvbnRTaXplLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYLCBpbXBvcnRhbnQpOworICAgIG1f
Zm9udFNpemVJc0ltcG9ydGFudCA9IGltcG9ydGFudDsKKyAgICBtX2ZvbnRTaXplID0gZm9udFNp
emU7CiB9CiAKIFZUVEN1ZSogdG9WVFRDdWUoVGV4dFRyYWNrQ3VlKiBjdWUpCkBAIC0xMjYyLDcg
KzEyNTAsNyBAQCBWVFRDdWUqIHRvVlRUQ3VlKFRleHRUcmFja0N1ZSogY3VlKQogCiBjb25zdCBW
VFRDdWUqIHRvVlRUQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSogY3VlKQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGN1ZS0+aXNSZW5kZXJhYmxlKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8VlRUQ3VlPihjdWUpIHx8IGlz
PFRleHRUcmFja0N1ZUdlbmVyaWM+KGN1ZSkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBWVFRDdWUqPihjdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAppbmRleCAx
YmY3ZjU1M2EyNjgwNGE4Zjg1YjBiMjU1OTgzZWMyMzM3MzIyZTcxLi40NTE1MTQyMmQ0OGNhZWI4
MmI2N2ExMmQ4OWVmZTg2NDU3OThmODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgK
QEAgLTQ5LDE1ICs0OSwxNiBAQCBjbGFzcyBXZWJWVFRDdWVEYXRhOwogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIFZUVEN1ZUJveCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCB7CitjbGFzcyBWVFRDdWVCb3ggOiBwdWJsaWMgVGV4dFRyYWNrQ3VlQm94IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFZUVEN1ZUJveCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxW
VFRDdWVCb3g+IGNyZWF0ZShEb2N1bWVudCYsIFZUVEN1ZSYpOworICAgIHN0YXRpYyBSZWY8VlRU
Q3VlQm94PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZUVEN1ZUJveChkb2N1bWVudCwgY3VlKSk7Cisg
ICAgfQogCi0gICAgVlRUQ3VlKiBnZXRDdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
bHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSk7CisgICAgdm9pZCBhcHBs
eUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGNv
bnN0IEF0b21TdHJpbmcmIHZ0dEN1ZUJveFNoYWRvd1BzZXVkb0lkKCk7CiAgICAgdm9pZCBzZXRG
b250U2l6ZUZyb21DYXB0aW9uVXNlclByZWZzKGludCBmb250U2l6ZSkgeyBtX2ZvbnRTaXplRnJv
bUNhcHRpb25Vc2VyUHJlZnMgPSBmb250U2l6ZTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC03NCw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xh
c3MgVlRUQ3VlIDogcHVibGljIFRleHRUcmFja0N1ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPFZU
VEN1ZT4geworY2xhc3MgVlRUQ3VlIDogcHVibGljIFRleHRUcmFja0N1ZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChWVFRDdWUpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VlRUQ3Vl
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCkBAIC04OSw4ICs5MCw2IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBSZWY8VlRUQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFdlYlZUVEN1ZURhdGEmKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCk7Ci0KICAgICB2aXJ0dWFsIH5WVFRDdWUoKTsK
IAogICAgIGVudW0gQXV0b0tleXdvcmQgewpAQCAtMTIzLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIGN1ZVNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsg
fQogICAgIHZvaWQgc2V0Q3VlU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CiAKLSAgICBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7CisgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGdldEN1ZUFzSFRNTCgpIGZpbmFsOwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIHJlZ2lvbklk
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25JZDsgfQpAQCAtMTMzLDExICsxMzIsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGhh
c0Rpc3BsYXlUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5VHJlZTsgfQotICAgIFZUVEN1
ZUJveCYgZ2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBpbnQgZm9udFNp
emUpOworICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVCb3g+IGdldERpc3BsYXlUcmVlKGNvbnN0IElu
dFNpemUmLCBpbnQpIGZpbmFsOwogICAgIEhUTUxTcGFuRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuICptX2N1ZUhpZ2hsaWdodEJveDsgfQogCi0gICAgdm9pZCB1cGRhdGVEaXNwbGF5
VHJlZShjb25zdCBNZWRpYVRpbWUmKTsKLSAgICB2b2lkIHJlbW92ZURpc3BsYXlUcmVlKCk7Cisg
ICAgdm9pZCB1cGRhdGVEaXNwbGF5VHJlZShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKKyAgICB2
b2lkIHJlbW92ZURpc3BsYXlUcmVlKCkgZmluYWw7CiAgICAgdm9pZCBtYXJrRnV0dXJlQW5kUGFz
dE5vZGVzKENvbnRhaW5lck5vZGUqLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
KTsKIAogICAgIGludCBjYWxjdWxhdGVDb21wdXRlZExpbmVQb3NpdGlvbigpOwpAQCAtMTY4LDE0
ICsxNjcsMTUgQEAgcHVibGljOgogICAgIH07CiAgICAgQ3VlQWxpZ25tZW50IGdldEFsaWdubWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VlQWxpZ25tZW50OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Rm9udFNpemUoaW50LCBjb25zdCBJbnRTaXplJiwgYm9vbCBpbXBvcnRhbnQpOworICAgIHZv
aWQgcmVjYWxjdWxhdGVTdHlsZXMoKSBmaW5hbCB7IG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2Ug
PSB0cnVlOyB9CisgICAgdm9pZCBzZXRGb250U2l6ZShpbnQsIGNvbnN0IEludFNpemUmLCBib29s
IGltcG9ydGFudCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzRXF1YWwoY29uc3QgVGV4dFRyYWNr
Q3VlJiwgQ3VlTWF0Y2hSdWxlcykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjdWVDb250ZW50
c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZG9l
c0V4dGVuZEN1ZShjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEN1
ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdlYlZUVDsgfQotICAgIGJv
b2wgaXNSZW5kZXJhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNSZW5kZXJhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1fY29udGVudC5pc0VtcHR5KCk7
IH0KIAogICAgIHZvaWQgZGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKQEAgLTIzNyw2ICsyMzcsOSBA
QCBwcml2YXRlOgogCiAgICAgTWVkaWFUaW1lIG1fb3JpZ2luYWxTdGFydFRpbWU7CiAKKyAgICBp
bnQgbV9mb250U2l6ZSB7IDAgfTsKKyAgICBib29sIG1fZm9udFNpemVJc0ltcG9ydGFudCB7IGZh
bHNlIH07CisKICAgICBib29sIG1fc25hcFRvTGluZXMgOiAxOwogICAgIGJvb2wgbV9kaXNwbGF5
VHJlZVNob3VsZENoYW5nZSA6IDE7CiAgICAgYm9vbCBtX25vdGlmeVJlZ2lvbiA6IDE7CkBAIC0y
NjMsNyArMjY2LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlZUVEN1ZT4gewogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
VlRUQ3VlKQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpUZXh0VHJhY2tD
dWUmIGN1ZSkgeyByZXR1cm4gY3VlLmlzUmVuZGVyYWJsZSgpOyB9CitzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6VGV4dFRyYWNrQ3VlJiBjdWUpIHsgcmV0dXJuIGN1ZS5jdWVUeXBl
KCkgPT0gV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpXZWJWVFQ7IH0KIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5j
cHAKaW5kZXggNzYwNzI0MTc4Mjk2ZGYwMjZmNDBiY2RhODI3Zjc4ZDZhYjc1M2JhYS4uZmUwMzlj
ZDJmMGY0ZThkNDlmZDI0MTJkODRkYTA2ZTczY2IyM2U1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIGNvbnN0IEF0b21TdHJpbmcm
IFZUVFJlZ2lvbjo6dGV4dFRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQoKQogICAgIHJldHVybiB0
cmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkOwogfQogCi12b2lkIFZUVFJlZ2lvbjo6YXBwZW5kVGV4
dFRyYWNrQ3VlQm94KFJlZjxWVFRDdWVCb3g+JiYgZGlzcGxheUJveCkKK3ZvaWQgVlRUUmVnaW9u
OjphcHBlbmRUZXh0VHJhY2tDdWVCb3goUmVmPFRleHRUcmFja0N1ZUJveD4mJiBkaXNwbGF5Qm94
KQogewogICAgIEFTU0VSVChtX2N1ZUNvbnRhaW5lcik7CiAKQEAgLTM0Miw5ICszNDIsMTMgQEAg
SFRNTERpdkVsZW1lbnQmIFZUVFJlZ2lvbjo6Z2V0RGlzcGxheVRyZWUoKQogewogICAgIGlmICgh
bV9yZWdpb25EaXNwbGF5VHJlZSkgewogICAgICAgICBtX3JlZ2lvbkRpc3BsYXlUcmVlID0gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkpOwotICAgICAgICBwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKTsKKyAgICAgICAg
bV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0UHNldWRvKHRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVk
b0lkKCkpOworICAgICAgICBtX3JlY2FsY3VsYXRlU3R5bGVzID0gdHJ1ZTsKICAgICB9CiAKKyAg
ICBpZiAobV9yZWNhbGN1bGF0ZVN0eWxlcykKKyAgICAgICAgcHJlcGFyZVJlZ2lvbkRpc3BsYXlU
cmVlKCk7CisKICAgICByZXR1cm4gKm1fcmVnaW9uRGlzcGxheVRyZWU7CiB9CiAKQEAgLTM4Mywx
NCArMzg3LDE2IEBAIHZvaWQgVlRUUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxheVRyZWUoKQog
CiAgICAgLy8gVGhlIGN1ZSBjb250YWluZXIgaXMgdXNlZCB0byB3cmFwIHRoZSBjdWVzIGFuZCBp
dCBpcyB0aGUgb2JqZWN0IHdoaWNoIGlzCiAgICAgLy8gZ3JhZHVhbGx5IHNjcm9sbGVkIG91dCBh
cyBtdWx0aXBsZSBjdWVzIGFyZSBhcHBlbmRlZCB0byB0aGUgcmVnaW9uLgotICAgIG1fY3VlQ29u
dGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOworICAgIGlmICghbV9jdWVDb250YWluZXIpIHsKKyAgICAg
ICAgbV9jdWVDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvd25jYXN0PERvY3Vt
ZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CisgICAgICAgIG1fY3VlQ29udGFpbmVy
LT5zZXRQc2V1ZG8odGV4dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93UHNldWRvSWQoKSk7CisgICAg
ICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKCptX2N1ZUNvbnRhaW5lcik7Cisg
ICAgfQogICAgIG1fY3VlQ29udGFpbmVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VG9wLCAwLjBmLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIAotICAgIG1fY3VlQ29u
dGFpbmVyLT5zZXRQc2V1ZG8odGV4dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93UHNldWRvSWQoKSk7
Ci0gICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoKm1fY3VlQ29udGFpbmVyKTsK
LQogICAgIC8vIDcuNSBFdmVyeSBXZWJWVFQgcmVnaW9uIG9iamVjdCBpcyBpbml0aWFsaXNlZCB3
aXRoIHRoZSBmb2xsb3dpbmcgQ1NTCi0gICAgbV9yZWdpb25EaXNwbGF5VHJlZS0+c2V0UHNldWRv
KHRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKCkpOworCisgICAgbV9yZWNhbGN1bGF0ZVN0
eWxlcyA9IGZhbHNlOwogfQogCiB2b2lkIFZUVFJlZ2lvbjo6c3RhcnRUaW1lcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WVFRSZWdpb24uaAppbmRleCA2ZmNjNGYzMzkxM2UyNjRiODRjMmJmNmJj
NGZmNmJmMmNjNzMyZWNiLi5kNjc2MmZjMjcyNTE5ZGIwNzRjYTRiNDkxNzFiMjA0YjU5NzdjOWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUUmVnaW9uLmgKQEAgLTg4LDEwICs4OCwxMiBA
QCBwdWJsaWM6CiAKICAgICBIVE1MRGl2RWxlbWVudCYgZ2V0RGlzcGxheVRyZWUoKTsKICAgICAK
LSAgICB2b2lkIGFwcGVuZFRleHRUcmFja0N1ZUJveChSZWY8VlRUQ3VlQm94PiYmKTsKKyAgICB2
b2lkIGFwcGVuZFRleHRUcmFja0N1ZUJveChSZWY8VGV4dFRyYWNrQ3VlQm94PiYmKTsKICAgICB2
b2lkIGRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94KCk7CiAgICAgdm9pZCB3aWxsUmVtb3ZlVGV4
dFRyYWNrQ3VlQm94KFZUVEN1ZUJveCopOwogCisgICAgdm9pZCBjdWVTdHlsZUNoYW5nZWQoKSB7
IG1fcmVjYWxjdWxhdGVTdHlsZXMgPSB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgVlRUUmVnaW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIApAQCAtMTUxLDYgKzE1Myw4IEBAIHByaXZhdGU6
CiAgICAgLy8gY3VycmVudGx5IGl0IGlzIHVzZWQgYWxzbyBmb3Igbm9uLXNjcm9sbGluZyByZWdp
b25zIHRvIHVzZSBhIHNpbmdsZQogICAgIC8vIGNvZGUgcGF0aC4KICAgICBUaW1lciBtX3Njcm9s
bFRpbWVyOworCisgICAgYm9vbCBtX3JlY2FsY3VsYXRlU3R5bGVzIHsgdHJ1ZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCA2NDdlZTU2NDQ4OGM0OWEzZTA2
YjJmYmQ0NDE3M2ViNmJhMTYzYWQ5Li44YmRjYzcwMzBhOWNlNDk1ZTNlMzljMTJiOTgyMDBlZjk2
NGNmZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtNTg3LDcgKzU4Nyw3IEBAIFN0cmluZyBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdAog
ICAgIFN0cmluZyB3aW5kb3dDb3JuZXJSYWRpdXMgPSB3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVz
Q1NTKCk7CiAgICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkgfHwgIXdpbmRvd0Nvcm5lclJh
ZGl1cy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBw
ZW5kTGl0ZXJhbCgiIDo6Iik7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZChWVFRDdWU6OmN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWU6OmN1ZUJhY2tkcm9wU2hh
ZG93UHNldWRvSWQoKSk7CiAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgneycpOwogICAgICAgICAKICAgICAgICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggYzczMGRiNzhmZDVmOTJjZGEzMjcwNWQ4NjZi
NzAxNjM5YWZiZDI2MC4uZWVlMzFmNDUxYmIzMTBiYTlmODk3M2IwY2Q1NmRkZWEyZDVjZjQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzE3LDYgKzMxNyw5IEBAIHNob3VsZERp
c3BsYXlDYXB0aW9uczoKIHNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zOgogICBpbml0aWFs
OiBmYWxzZQogICBjb25kaXRpb25hbDogVklERU9fVFJBQ0sKK2dlbmVyaWNDdWVBUElFbmFibGVk
OgorICAgIGluaXRpYWw6IGZhbHNlCisgICAgY29uZGl0aW9uYWw6IFZJREVPX1RSQUNLCiBzY3Jv
bGxpbmdDb29yZGluYXRvckVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiBzY3JvbGxpbmdUcmVl
SW5jbHVkZXNGcmFtZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3Bw
CmluZGV4IGZjNjg1MTA4ZmFiZjFiYjRkYzJmNzY0NWRhMTg3MDhhN2FiN2M2MjQuLjRjZjhmYTM3
MmU1ZWQ5MTkwNzY2MTIxOTcwZDgzMzMxZDBjODFmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWVFRDdWUuY3BwCkBAIC00Myw4ICs0MywxMCBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoUmVuZGVyVlRUQ3VlKTsKIAogUmVuZGVyVlRUQ3VlOjpSZW5kZXJWVFRDdWUo
VlRUQ3VlQm94JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxv
Y2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9jdWUoZWxlbWVudC5nZXRD
dWUoKSkKKyAgICAsIG1fY3VlKHRvVlRUQ3VlKGVsZW1lbnQuZ2V0Q3VlKCkpKQogeworICAgIEFT
U0VSVChtX2N1ZSk7CisgICAgQVNTRVJUKGlzPFZUVEN1ZT4obV9jdWUpKTsKIH0KIAogdm9pZCBS
ZW5kZXJWVFRDdWU6OmxheW91dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbAppbmRleCAxNTMxMWU5NTdkYzkwMTc5ZDg1YjczNjJhZDcyZjcwMTM1MzMzYTQwLi5iMTc3
ODNkNGJkNzIyYzA2MzczODE2MGIxNTk5NjIxZWQ0NWMyODkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTE0NjYsNiArMTQ2NiwxNSBAQCBDU1NTaGFkb3dQ
YXJ0c0VuYWJsZWQ6CiAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKICAgd2ViY29yZUJpbmRpbmc6
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKIAorR2VuZXJpY0N1ZUFQSUVuYWJsZWQ6CisgIHR5cGU6
IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShWSURFT19U
UkFDSykKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJHZW5lcmljIFRleHQgVHJhY2sgQ3VlIEFQSSIK
KyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIEdlbmVyaWMgVGV4dCBUcmFjayBD
dWUgQVBJIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisgIHdlYmNvcmVOYW1lOiBnZW5lcmlj
Q3VlQVBJRW5hYmxlZAorCiAjIEZvciBpbnRlcm5hbCBmZWF0dXJlczoKICMgVGhlIHR5cGUgc2hv
dWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3ZpZGUgYSBodW1hblJlYWRhYmxlTmFtZSBh
bmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBhbGwgZGVidWcgZmVhdHVyZXMuIFRoZXkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDFhZGNiZGVhYzVjNGI5OGE3OWMxZmI0NjRmMDc4ZDEy
MDM3ZmE5YmEuLjBiMjQ5ZDZlNmU5YjFjODEyMjI5YmNhYjNiZGMxYmRhODg5MmU0ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtMjM4LDYgKzIzOCwxNSBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSog
cGFnZQogICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
dFdlYlJUQ01ETlNJQ0VDYW5kaWRhdGVzRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChwcmVmZXJlbmNlID09ICJXZWJLaXRHZW5lcmlj
Q3VlQVBJRW5hYmxlZCIpIHsKKyAgICAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6b3ZlcnJpZGVC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmltYWdlQ29udHJvbHNFbmFibGVkS2V5
KCksIGVuYWJsZWQpOworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwYWdlcykKKyAgICAgICAg
ICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQoZW5hYmxlZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChwcmVmZXJlbmNlID09ICJX
ZWJLaXRJc1NlY3VyZUNvbnRleHRBdHRyaWJ1dGVFbmFibGVkIikgewogICAgICAgICBXZWJQcmVm
ZXJlbmNlc1N0b3JlOjpvdmVycmlkZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
aXNTZWN1cmVDb250ZXh0QXR0cmlidXRlRW5hYmxlZEtleSgpLCBlbmFibGVkKTsKICAgICAgICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRJc1NlY3VyZUNvbnRl
eHRBdHRyaWJ1dGVFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggYjNk
YTJkNjA2YzgzMTJhZWIwZDIyMzEyY2E0NzljYTZkZTVjYWI4Ny4uMTNmMTFiZDA5NmFhMzNlODVl
ZDlhNmFiMTA1YTcxYzc1OWRlOGMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0yNjAsNiAr
MjYwLDcgQEAKICNkZWZpbmUgV2ViS2l0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkS2V5
IEAiV2ViS2l0TGVnYWN5RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkIgogI2RlZmluZSBXZWJLaXRF
bmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWRLZXkgQCJXZWJLaXRFbmNyeXB0ZWRNZWRpYUFQSUVuYWJs
ZWQiCiAjZGVmaW5lIFdlYktpdFBpY3R1cmVJblBpY3R1cmVBUElFbmFibGVkS2V5IEAiV2ViS2l0
UGljdHVyZUluUGljdHVyZUFQSUVuYWJsZWQiCisjZGVmaW5lIFdlYktpdEdlbmVyaWNDdWVBUElF
bmFibGVkS2V5IEAiV2ViS2l0R2VuZXJpY0N1ZUFQSUVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEFs
bG93TWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnRBc0ZhbGxiYWNrS2V5
IEAiV2ViS2l0QWxsb3dNZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydEFz
RmFsbGJhY2siCiAjZGVmaW5lIFdlYktpdEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWRQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0
QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRBY2Nl
c3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggODExYjNhNWM2NmQxZjcxMzJkNjRj
ZGUwYzFkOGZmN2IzNmFiNzY2MS4uZjc1N2IxM2FjNzYxZGQ1OGQyYjE3YWQ3MzZjNmZlYTIxODEw
YjFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tCkBAIC02MTMsNiArNjEzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgQE5PLCBXZWJL
aXRQaWN0dXJlSW5QaWN0dXJlQVBJRW5hYmxlZEtleSwKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgICAgICBATk8sIFdlYktpdEdlbmVyaWNDdWVBUElFbmFibGVkS2V5LAor
I2VuZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICAgICBATk8sIFdlYktpdE1v
Y2tDYXB0dXJlRGV2aWNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAWUVTLCBXZWJL
aXRNb2NrQ2FwdHVyZURldmljZXNQcm9tcHRFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTMzNDQs
NiArMzM0OCwxNiBAQCBzdGF0aWMgTlNTdHJpbmcgKmNsYXNzSUJDcmVhdG9ySUQgPSBuaWw7CiAg
ICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRQaWN0dXJlSW5QaWN0dXJl
QVBJRW5hYmxlZEtleV07CiB9CiAKKy0gKEJPT0wpZ2VuZXJpY0N1ZUFQSUVuYWJsZWQKK3sKKyAg
ICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRHZW5lcmljQ3VlQVBJRW5hYmxl
ZEtleV07Cit9CisKKy0gKHZvaWQpc2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQ6KEJPT0wpZmxhZwor
eworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2ViS2l0R2VuZXJpY0N1ZUFQ
SUVuYWJsZWRLZXldOworfQorCiAtIChCT09MKXZpZXdwb3J0Rml0RW5hYmxlZAogewogICAgIHJl
dHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdFZpZXdwb3J0Rml0RW5hYmxlZFByZWZl
cmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggZGFkMjNjMTVlOGJiNzUyOGI1OWIxYTI5ZTI3
YzhiMGVkYjBiNjk2OS4uZmNiYTFiODJjMGE2YWY5NWQ3MWFhNGY0OGI5N2Y5NGE0Yjg0NmYyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCkBAIC02NDQsNiArNjQ0LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQ
cmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb24gV0VCS0lUX0RF
UFIKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5h
YmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGVuY3J5cHRlZE1lZGlhQVBJRW5hYmxl
ZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHBpY3R1cmVJblBpY3R1cmVBUElFbmFibGVk
OworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZ2VuZXJpY0N1ZUFQSUVuYWJsZWQ7CiBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCB2aWV3cG9ydEZpdEVuYWJsZWQ7CiBAcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBjb25zdGFudFByb3BlcnRpZXNFbmFibGVkOwogQHByb3BlcnR5IChub25h
dG9taWMpIEJPT0wgY29sb3JGaWx0ZXJFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGY4ZDQxYTNmODQ4Y2U4NTZlMDk0OThiZjNmYmNlOTli
NTVmYmE3ZGIuLmZlMDFjZTJjNjVmZTU2ZWJhZjg2OTIxMTQwN2Q2ZTFhODMwMTY1NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMyMDQsNiArMzIw
NCwxMCBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxvYWRpbmdRdWlyaygpCiAg
ICAgc2V0dGluZ3Muc2V0UGljdHVyZUluUGljdHVyZUFQSUVuYWJsZWQocHJlZmVyZW5jZXMucGlj
dHVyZUluUGljdHVyZUFQSUVuYWJsZWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgc2V0dGluZ3Muc2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQocHJlZmVyZW5jZXMuZ2Vu
ZXJpY0N1ZUFQSUVuYWJsZWQpOworI2VuZGlmCisKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQocHJlZmVyZW5j
ZXMuaW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCk7CiAKICAgICBzZXR0aW5ncy5zZXRBbGxvd01l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxsYmFjayhwcmVmZXJl
bmNlcy5hbGxvd01lZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0QXNGYWxs
YmFjayk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDU3NjkyZGVlNWYxOWM2NmEwNzk5ZmUxNmE4YzE4
OTQ5MjU2NDM4ZmIuLjIxZTU3MWUzMzk0YTYzMWM4NmE0OTc3ZmY3NjNiZTZjMjczM2I3MTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCkBAIC01NTQsNiArNTU0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
YmVnaW5UZXN0aW5nKFdLRGljdGlvbmFyeVJlZiBzZXR0aW5ncywgQmVnaW5nVGVzdGluZ01vZGUg
dGUKIAogICAgIG1fdGVzdFJ1bm5lci0+c2V0RW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKHRydWUp
OwogICAgIG1fdGVzdFJ1bm5lci0+c2V0UGljdHVyZUluUGljdHVyZUFQSUVuYWJsZWQodHJ1ZSk7
CisgICAgbV90ZXN0UnVubmVyLT5zZXRHZW5lcmljQ3VlQVBJRW5hYmxlZChmYWxzZSk7CiAKICAg
ICBtX3Rlc3RSdW5uZXItPnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZShmYWxz
ZSk7CiAgICAgbV90ZXN0UnVubmVyLT5zZXRBY2NlcHRzRWRpdGluZyh0cnVlKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmlu
ZGV4IDliZTY5NDA3ZmIzMzA4YmJhYjUxZWYyY2M2NTk2ZmU3Yjg2OTM0YTAuLmNkN2RjZDEyZjY4
NTdjODdjN2UxZTcwYzQ2NmQ5ODdmZDM3YzFjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNDkwLDYgKzQ5MCwx
MyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBpY3R1cmVJblBpY3R1cmVBUElFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKICAgICBXS0J1bmRsZU92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JUZXN0UnVubmVy
KGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBpbmplY3RlZEJ1bmRsZS5wYWdlR3JvdXAoKSwga2V5
LmdldCgpLCBlbmFibGVkKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRHZW5lcmljQ3VlQVBJ
RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGtl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdEdlbmVyaWND
dWVBUElFbmFibGVkIikpOworICAgIGF1dG8mIGluamVjdGVkQnVuZGxlID0gSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpOworICAgIFdLQnVuZGxlT3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRl
c3RSdW5uZXIoaW5qZWN0ZWRCdW5kbGUuYnVuZGxlKCksIGluamVjdGVkQnVuZGxlLnBhZ2VHcm91
cCgpLCBrZXkuZ2V0KCksIGVuYWJsZWQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFsbG93
c0FueVNTTENlcnRpZmljYXRlKGJvb2wgZW5hYmxlZCkKIHsKICAgICBhdXRvJiBpbmplY3RlZEJ1
bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMGU4ZmQ2NGIxYmJk
MDllNzRjYjQ5NmU1YTA0NjIyZmFhZjg5NGEyZS4uY2Q5YjcxZjFiMmVjZjY4ZmYwZDZlMDkzYjAy
YTQ0Zjc5OGY2MmM4OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24oYm9vbCk7CiAg
ICAgdm9pZCBzZXRFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRQ
aWN0dXJlSW5QaWN0dXJlQVBJRW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldEdlbmVyaWNDdWVB
UElFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0TWVkaWFEZXZpY2VzRW5hYmxlZChib29sKTsK
ICAgICB2b2lkIHNldFdlYlJUQ01ETlNJQ0VDYW5kaWRhdGVzRW5hYmxlZChib29sKTsKICAgICB2
b2lkIHNldEN1c3RvbVVzZXJBZ2VudChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGQzNDg5MDFjMDQ0
OWNjYzg1NWM5YzY4MWNmZmMwNGRlZWU2NzgxNi4uYzU0YmZjZTUxZTQxMWNjMDM4YTYyNGU3NzVi
NDNmYTkwMjA1ZjMyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTEwLTMwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50
YWwgVGV4dFRyYWNrQ3VlIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNjQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTY3NTE3Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90
ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUt
Y29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90
ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtZGlzcGxheWN1ZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0
dHJhY2tjdWUtZGlzcGxheWN1ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAxOS0xMC0yOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWIgQW5pbWF0aW9uc10gVXBkYXRlIFdQVCB0ZXN0cyByZWxhdGVkIHRvIFdlYiBB
bmltYXRpb25zIGFuZCByZW1vdmUgaW1wb3J0ZWQgTW96aWxsYSB0ZXN0cwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1hZGRjdWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0
cmFja2N1ZS1hZGRjdWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZTFhN2U5NGIzZTg1Zjhi
NGYxZTQzMjE2MTAyZWQyZTMwNDk2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWFkZGN1ZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw2IEBACisKKworUEFTUyBzZXR1cCAKK1BBU1MgdHJhY2suYWRkQ3VlKCkgYWRk
cyB0byB0cmFjay5jdWVzIAorUEFTUyBjdWUgb3JkZXIgc2hvdWxkIGNoYW5nZSB3aGVuIHN0YXJ0
IHRpbWUgaXMgY2hhbmdlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1hZGRjdWUuaHRtbCBiL0xheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRkY3VlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTFmNDI5OGNlZDc4N2FlYzc4ZTQzMDQ5NjA0YjQ0ZTc4YzFiYjU1YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtYWRk
Y3VlLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8dGl0bGU+VGV4dFRy
YWNrQ3VlIGFkZGN1ZTwvdGl0bGU+Cis8ZGl2PjwvZGl2PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4v
Li4vbWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1m
aWxlLmpzPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRHZW5lcmljQ3VlQVBJRW5hYmxlZCh0cnVlKTsKKworZnVuY3Rp
b24gY3JlYXRlVmFsaWRDdWVGcmFnbWVudCh0ZXh0KQoreworICAgIGxldCBjdWVOb2RlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIGN1ZU5vZGUuc2V0QXR0cmlidXRlKCdj
dWUnLCAnJyk7CisgICAgY3VlTm9kZS5pbm5lclRleHQgPSB0ZXh0OworCisgICAgbGV0IGJhY2tn
cm91bmROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgYmFja2dyb3Vu
ZE5vZGUuc2V0QXR0cmlidXRlKCdjdWViYWNrZ3JvdW5kJywgJycpOworICAgIGJhY2tncm91bmRO
b2RlLmFwcGVuZENoaWxkKGN1ZU5vZGUpOworCisgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3Vu
ZE5vZGUpOworCisgICAgcmV0dXJuIGZyYWdtZW50OworfQorCit0ZXN0KHRlc3QgPT4geworICAg
IHdpbmRvdy52aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CisgICAgdmlk
ZW8uY29udHJvbHMgPSB0cnVlOworCisgICAgd2luZG93LnRyYWNrID0gdmlkZW8uYWRkVGV4dFRy
YWNrKCdzdWJ0aXRsZXMnKTsKKyAgICB0cmFjay5kZWZhdWx0ID0gdHJ1ZTsKKyAgICB0cmFjay5t
b2RlID0gJ3Nob3dpbmcnOworCisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbyk7
Cit9LCAnc2V0dXAnKTsKKwordGVzdCh0ZXN0ID0+IHsKKyAgICBsZXQgY3VlMSA9IG5ldyBUZXh0
VHJhY2tDdWUoMCwgMSwgY3JlYXRlVmFsaWRDdWVGcmFnbWVudCgnRmlyc3QgY3VlJykpOworICAg
IGN1ZTEuaWQgPSAib25lIjsKKyAgICB0cmFjay5hZGRDdWUoY3VlMSk7CisgICAgYXNzZXJ0X2Vx
dWFscyh0cmFjay5jdWVzLmxlbmd0aCwgMSwgJ29ubHkgb25lIGN1ZScpOworCisgICAgbGV0IGN1
ZTIgPSBuZXcgVGV4dFRyYWNrQ3VlKDEsIDIsIGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoJ1NlY29u
ZCBjdWUnKSk7CisgICAgY3VlMi5pZCA9ICJ0d28iOworICAgIHRyYWNrLmFkZEN1ZShjdWUyKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXMubGVuZ3RoLCAyLCAidHJhY2suY3Vlcy5sZW5n
dGggaW5jbHVkZXMgc2Vjb25kIGN1ZSIpOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlc1sw
XS5pZCwgJ29uZScsICdjdWUgMSBzaG91bGQgYmUgZmlyc3QnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHRyYWNrLmN1ZXNbMV0uaWQsICd0d28nLCAnY3VlIDIgc2hvdWxkIGJlIHNlY29uZCcpOyAgICAK
K30sICd0cmFjay5hZGRDdWUoKSBhZGRzIHRvIHRyYWNrLmN1ZXMnKTsKKwordGVzdCh0ZXN0ID0+
IHsKKyAgICB0cmFjay5tb2RlID0gJ3Nob3dpbmcnOworICAgIHRyYWNrLmN1ZXNbMV0uc3RhcnRU
aW1lID0gMDsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXNbMF0uaWQsICd0d28nLCAnY3Vl
IDIgc2hvdWxkIGJlIGZpcnN0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0cmFjay5jdWVzWzFdLmlk
LCAnb25lJywgJ2N1ZSAxIHNob3VsZCBiZSBzZWNvbmQnKTsKKworICAgIHRyYWNrLmN1ZXNbMF0u
c3RhcnRUaW1lID0gMC41OworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlc1swXS5pZCwgJ29u
ZScsICdjdWUgMSBzaG91bGQgYmUgZmlyc3QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1
ZXNbMV0uaWQsICd0d28nLCAnY3VlIDIgc2hvdWxkIGJlIHNlY29uZCcpOworfSwgJ2N1ZSBvcmRl
ciBzaG91bGQgY2hhbmdlIHdoZW4gc3RhcnQgdGltZSBpcyBjaGFuZ2VkJyk7Cis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJh
Y2tjdWUtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTMzMTM0NGJhM2VjNjJjZGE1ZDQyYjQyMTcwZWQ1NWQwMDk1OTcwYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tj
dWUtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIFRleHRU
cmFja0N1ZSBzaG91bGQgdGhyb3cgIlR5cGVFcnJvciIgaWYgdGhlIGN1ZSBub2RlIGlzIG5vdCBh
IGRvY3VtZW50RnJhZ21lbnQgCitQQVNTIFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFs
aWROb2RlVHlwZUVycm9yIiBpZiBwYXNzZWQgYW4gaW52YWxpZCBkb2N1bWVudEZyYWdtZW50IAor
UEFTUyBUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5cGVFcnJvciIgaWYg
ZG9jdW1lbnRGcmFnbWVudCBoYXMgYW4gaW52YWxpZCBub2RlIAorUEFTUyBUZXh0VHJhY2tDdWUg
c2hvdWxkIHRocm93ICJJbnZhbGlkU3RhdGVFcnJvciIgaWYgZG9jdW1lbnRGcmFnbWVudCBkb2Vz
bid0IGhhdmUgJ2N1ZWJhY2tncm91bmQnIGFuZCAnY3VlJyBub2RlcyAKK1BBU1MgVGV4dFRyYWNr
Q3VlIHNob3VsZCBhbGxvdyBhbGwgdmFsaWQgbm9kZSB0eXBlcyAKK1BBU1MgVGVzdCBUZXh0VHJh
Y2tDdWUuZ2V0Q3VlQXNIVE1MKCkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0b3IuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YjU0MGU0NmZlMDRlMTJkMjBkZTViNGQ4Zjk0NjJlYmNlMzgxOTMwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3Rl
eHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IWRvY3R5cGUg
aHRtbD4KKzx0aXRsZT5UZXh0VHJhY2tDdWUgY29uc3RydWN0b3I8L3RpdGxlPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQodHJ1ZSk7CisKK3Rlc3QoIHRlc3QgPT4geworICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAs
ICIiKSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCB7IH0pIH0pOworICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
ciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpKSB9KTsKK30sICdUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJUeXBlRXJyb3IiIGlm
IHRoZSBjdWUgbm9kZSBpcyBub3QgYSBkb2N1bWVudEZyYWdtZW50Jyk7CisKK3Rlc3QoIHRlc3Qg
PT4geworICAgIGFzc2VydF90aHJvd3MoIkludmFsaWROb2RlVHlwZUVycm9yIiwgXyA9PiB7IG5l
dyBUZXh0VHJhY2tDdWUoMCwgMTAsIGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkg
fSk7Cit9LCAnVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiSW52YWxpZE5vZGVUeXBlRXJyb3Ii
IGlmIHBhc3NlZCBhbiBpbnZhbGlkIGRvY3VtZW50RnJhZ21lbnQnKTsKKworZnVuY3Rpb24gY3Jl
YXRlVmFsaWRDdWVGcmFnbWVudCgpCit7CisgICAgbGV0IGN1ZU5vZGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzcGFuJyk7CisgICAgY3VlTm9kZS5zZXRBdHRyaWJ1dGUoJ2N1ZScsICcnKTsK
KworICAgIGxldCBiYWNrZ3JvdW5kTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIGJhY2tncm91bmROb2RlLnNldEF0dHJpYnV0ZSgnY3VlYmFja2dyb3VuZCcsICcnKTsK
KyAgICBiYWNrZ3JvdW5kTm9kZS5hcHBlbmRDaGlsZChjdWVOb2RlKTsKKworICAgIGZyYWdtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIGZyYWdtZW50LmFwcGVu
ZENoaWxkKGJhY2tncm91bmROb2RlKTsKKworICAgIHJldHVybiBmcmFnbWVudDsKK30KKwordGVz
dCggdGVzdCA9PiB7CisgICAgbGV0IGZyYWdtZW50ID0gY3JlYXRlVmFsaWRDdWVGcmFnbWVudCgp
OworICAgIGxldCB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsK
KworICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxl
JykpOworICAgIGFzc2VydF90aHJvd3MoIkludmFsaWROb2RlVHlwZUVycm9yIiwgXyA9PiB7IG5l
dyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KSB9KTsKKworfSwgYFRleHRUcmFja0N1ZSBz
aG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVycm9yIiBpZiBkb2N1bWVudEZyYWdtZW50IGhh
cyBhbiBpbnZhbGlkIG5vZGVgKTsKKwordGVzdCggdGVzdCA9PiB7CisgICAgbGV0IGZyYWdtZW50
ID0gY3JlYXRlVmFsaWRDdWVGcmFnbWVudCgpOworICAgIGxldCB2YWxpZEN1ZSA9IG5ldyBUZXh0
VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQucmVt
b3ZlQXR0cmlidXRlKCdjdWViYWNrZ3JvdW5kJykKKyAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlk
U3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7
CisKKyAgICBmcmFnbWVudCA9IGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoKTsKKyAgICBmcmFnbWVu
dC5maXJzdENoaWxkLmZpcnN0Q2hpbGQucmVtb3ZlQXR0cmlidXRlKCdjdWUnKQorICAgIGFzc2Vy
dF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwg
MTAsIGZyYWdtZW50KSB9KTsKK30sIGBUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlk
U3RhdGVFcnJvciIgaWYgZG9jdW1lbnRGcmFnbWVudCBkb2Vzbid0IGhhdmUgJ2N1ZWJhY2tncm91
bmQnIGFuZCAnY3VlJyBub2Rlc2ApOworCit0ZXN0KCB0ZXN0ID0+IHsKKyAgICBsZXQgZnJhZ21l
bnQgPSBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCk7CisgICAgbGV0IHZhbGlkQ3VlID0gbmV3IFRl
eHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RDaGlsZC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKKyAgICB2YWxpZEN1ZSA9
IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0
Q2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgIHZh
bGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21l
bnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKSk7
CisgICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CisKKyAg
ICBmcmFnbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3AnKSk7CisgICAgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7
CisKKyAgICBmcmFnbWVudC5maXJzdENoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3JiJykpOworICAgIHZhbGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJh
Z21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdydCcpKTsKKyAgICB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwg
MTAsIGZyYWdtZW50KTsKKworICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgncnRjJykpOworICAgIHZhbGlkQ3VlID0gbmV3IFRleHRUcmFj
a0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RDaGlsZC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdydWJ5JykpOworICAgIHZhbGlkQ3VlID0gbmV3
IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQuZmlyc3RDaGls
ZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgIHZhbGlk
Q3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCisgICAgZnJhZ21lbnQu
Zmlyc3RDaGlsZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnSGVsbG8hJykp
OworICAgIHZhbGlkQ3VlID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOworCit9
LCBgVGV4dFRyYWNrQ3VlIHNob3VsZCBhbGxvdyBhbGwgdmFsaWQgbm9kZSB0eXBlc2ApOworCisK
K3Rlc3QoIHRlc3QgPT4geworICAgIGxldCBzb3VyY2VGcmFnbWVudCA9IGNyZWF0ZVZhbGlkQ3Vl
RnJhZ21lbnQoKTsKKyAgICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBm
cmFnbWVudCk7CisKKyAgICBsZXQgY3VlRnJhZ21lbnQgPSB2YWxpZEN1ZS5nZXRDdWVBc0hUTUwo
KTsKKyAgICBhc3NlcnRfdHJ1ZShjdWVGcmFnbWVudCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21l
bnQpOworCisgICAgYXNzZXJ0X3RydWUoY3VlRnJhZ21lbnQuaXNFcXVhbE5vZGUoc291cmNlRnJh
Z21lbnQpKTsKKworICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbGlkQ3VlLmdldEN1ZUFzSFRNTCgp
LCBjdWVGcmFnbWVudCwgImdldEN1ZUFzSFRNTCgpIHNob3VsZCByZXR1cm4gYSBkaWZmZXJlbnQg
ZnJhZ21lbnQgZWFjaCB0aW1lIik7CisKK30sIGBUZXN0IFRleHRUcmFja0N1ZS5nZXRDdWVBc0hU
TUwoKWApOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtZGlzcGxheWN1ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwNGUxYzVlMzliMGNlMjJiMmE1YmI1NTNhMWEwYzE0
ZjA4YTcyMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0
dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorCisKK1BBU1MgQ3VlcyBhcmUgZGlzcGxheWVkIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUuaHRt
bCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtZGlz
cGxheWN1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmYzNjMjFkYzk5MTEyZjZkMTJiZGQ2N2I5M2UwYWJj
ZmYwZDA2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0
dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWRpc3BsYXljdWUuaHRtbApAQCAtMCwwICsxLDk0IEBACis8
IWRvY3R5cGUgaHRtbD4KKzx0aXRsZT5UZXh0VHJhY2tDdWUgZGlzcGxheSBjdWU8L3RpdGxlPgor
Cis8ZGl2PjwvZGl2PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtY29udHJvbHMuanM+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRH
ZW5lcmljQ3VlQVBJRW5hYmxlZCh0cnVlKTsKKworZnVuY3Rpb24gY3JlYXRlVmFsaWRDdWVGcmFn
bWVudCh0ZXh0KQoreworICAgIGxldCBjdWVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3BhbicpOworICAgIGN1ZU5vZGUuc2V0QXR0cmlidXRlKCdjdWUnLCAnJyk7CisgICAgY3VlTm9k
ZS5pbm5lclRleHQgPSB0ZXh0OworCisgICAgbGV0IGJhY2tncm91bmROb2RlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgYmFja2dyb3VuZE5vZGUuc2V0QXR0cmlidXRlKCdj
dWViYWNrZ3JvdW5kJywgJycpOworICAgIGJhY2tncm91bmROb2RlLmFwcGVuZENoaWxkKGN1ZU5v
ZGUpOworCisgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
CisgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZE5vZGUpOworCisgICAgcmV0dXJu
IGZyYWdtZW50OworfQorCithc3luY190ZXN0KHRlc3QgPT4geworCisgICAgdmlkZW8gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpOworICAgIHZpZGVvLmNvbnRyb2xzID0gdHJ1ZTsK
KworICAgIHRyYWNrID0gdmlkZW8uYWRkVGV4dFRyYWNrKCdzdWJ0aXRsZXMnKTsKKyAgICB0cmFj
ay5kZWZhdWx0ID0gdHJ1ZTsKKyAgICB0cmFjay5tb2RlID0gJ3Nob3dpbmcnOworCisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZCh2aWRlbyk7CisKKyAgICBsZXQgY3VlMVRleHQgPSAnRmly
c3QgY3VlJzsKKyAgICBsZXQgY3VlMSA9IG5ldyBUZXh0VHJhY2tDdWUoMCwgMS4xLCBjcmVhdGVW
YWxpZEN1ZUZyYWdtZW50KGN1ZTFUZXh0KSk7CisgICAgY3VlMS5pZCA9ICJvbmUiOworICAgIHRy
YWNrLmFkZEN1ZShjdWUxKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmN1ZXMubGVuZ3RoLCAx
LCAnb25seSBvbmUgY3VlJyk7CisKKyAgICBsZXQgY3VlMlRleHQgPSAnU2Vjb25kIGN1ZSc7Cisg
ICAgbGV0IGN1ZTIgPSBuZXcgVGV4dFRyYWNrQ3VlKDEsIDIsIGNyZWF0ZVZhbGlkQ3VlRnJhZ21l
bnQoY3VlMlRleHQpKTsKKyAgICBjdWUyLmlkID0gInR3byI7CisgICAgdHJhY2suYWRkQ3VlKGN1
ZTIpOworICAgIGFzc2VydF9lcXVhbHModHJhY2suY3Vlcy5sZW5ndGgsIDIsICJ0cmFjay5jdWVz
Lmxlbmd0aCBpbmNsdWRlcyBzZWNvbmQgY3VlIik7CisKKyAgICBhc3NlcnRfZXF1YWxzKHRyYWNr
LmN1ZXNbMF0uaWQsICdvbmUnLCAnY3VlIDEgc2hvdWxkIGJlIGZpcnN0Jyk7CisgICAgYXNzZXJ0
X2VxdWFscyh0cmFjay5jdWVzWzFdLmlkLCAndHdvJywgJ2N1ZSAyIHNob3VsZCBiZSBzZWNvbmQn
KTsgICAgCisKKyAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5JywgZXZlbnQgPT4g
eworCisgICAgICAgIGxldCBzZWVrQ291bnQgPSAwOworICAgICAgICBsZXQgc3RlcCA9IF8gPT4g
eworICAgICAgICAgICAgbGV0IGN1ZUNvbnRhaW5lciA9IG1lZGlhQ29udHJvbHNFbGVtZW50KGlu
dGVybmFscy5zaGFkb3dSb290KHZpZGVvKS5maXJzdENoaWxkLCAiLXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWNvbnRhaW5lciIpOworICAgICAgICAgICAgc3dpdGNoICgrK3NlZWtDb3VudCkgewor
ICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHJhY2su
YWN0aXZlQ3Vlcy5sZW5ndGgsIDEsICJvbmx5IG9uZSBhY3RpdmUgY3VlIik7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjdWVDb250YWluZXIuaW5uZXJUZXh0LCBjdWUxVGV4dCwgImN1
ZSBvbmUgaXMgdmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0g
dHJhY2suY3Vlc1sxXS5zdGFydFRpbWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRyYWNrLmFjdGl2
ZUN1ZXMubGVuZ3RoLCAyLCAidHdvIGFjdGl2ZSBjdWVzIik7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjdWVDb250YWluZXIuaW5uZXJUZXh0LCBgJHtjdWUxVGV4dH1cbiR7Y3VlMlRl
eHR9YCwgImN1ZXMgb25lIGFuZCB0d28gYXJlIHZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB2
aWRlby5jdXJyZW50VGltZSA9IHRyYWNrLmN1ZXNbMV0uZW5kVGltZSAtIC41OworICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0cmFjay5hY3RpdmVDdWVzLmxlbmd0aCwgMSwgIm9ubHkgb25lIGFjdGl2ZSBj
dWUiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGN1ZUNvbnRhaW5lci5pbm5lclRl
eHQsIGN1ZTJUZXh0LCAiY3VlIHR3byBpcyB2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdmlk
ZW8uY3VycmVudFRpbWUgPSB0cmFjay5jdWVzWzFdLmVuZFRpbWUgKyAxOworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyh0cmFjay5hY3RpdmVDdWVzLmxlbmd0aCwgMCwgIm5vIGFjdGl2ZSBjdWVzIik7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjdWVDb250YWluZXIuaW5uZXJUZXh0LCAnJywg
Im5vIGN1ZXMgYXJlIHZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB0ZXN0LmRvbmUoKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB2
aWRlby5hZGRFdmVudExpc3RlbmVyKCdzZWVrZWQnLCB0ZXN0LnN0ZXBfZnVuYyhzdGVwKSk7Cisg
ICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdHJhY2suY3Vlc1swXS5zdGFydFRpbWU7CisgICAg
fSk7CisKKyAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICcuLi8uLi9jb250
ZW50L3Rlc3QnKTsKKworfSwgJ0N1ZXMgYXJlIGRpc3BsYXllZCcpOworCis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMmYxZTI4MDQ0ZDk4
MTNiMjViOTk1YjJiZjhiMWVhZDhjYzVmM2Y0Ny4uYjFmMzRlYjljMmVlOTg4Yjg3YjQwYmNjNmEw
YTljZDBhMzdiY2EzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTI0OTYsNiArMjQ5Niw5IEBAIHdlYmtpdC5vcmcvYi8xNjAzNjcgbWVkaWEvdHJhY2sv
dHJhY2stcmVtb3ZlLWNyYXNoLmh0bWwKICMgVGhleSBhcmUgYWxzbyBmbGFraWx5IGZhaWxpbmcg
b24gV2ViS2l0MiwgYXMgc25hcHNob3Qgc29tZXRpbWVzIGhhcyBhIGJsYWNrIHJlY3RhbmdsZSBm
b3IgdmlkZW8gZWxlbWVudCBpbnN0ZWFkIG9mIHdoaXRlIG9uZS4KIHdlYmtpdC5vcmcvYi8xMzE0
NzYgbWVkaWEvdHJhY2svdzNjL3RyYWNrL3dlYnZ0dAogCisjIFZUVFJlZ2lvbiBoZWlnaHQgZG9l
c24ndCBhZGp1c3Qgd2hlbiBjdWUgZm9udCBzaXplIGNoYW5nZXMuCit3ZWJraXQub3JnL2IvMjAz
NjIxIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Z0dC1yZWdpb24tZGlzcGxheS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KKwogbWVkaWEvdmlkZW8tb2JqZWN0LWZpdC1jaGFuZ2UuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogbWVkaWEvdmlkZW8tb2JqZWN0LWZpdC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggN2QzZWM0OGZhNzNmODcwMTNkYzQyODcyYTI5NGYxMTYyNGY1MjU2My4uZjEwNDJhYzVhZjZj
NzQ2YmQzYjczZTZlMTE4ZjRlM2U3N2ZhNDAyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg1Nyw2ICs4NTcsOSBAQCB3ZWJraXQub3JnL2IvMTAzOTI2
IG1lZGlhL3RyYWNrL29wZXJhL3RyYWNrL3dlYnZ0dC9yZW5kZXJpbmcvYWRob2Mvdm9pY2Vfd2l0
aF9ldgogIyBUaGV5IGFyZSBhbHNvIGZsYWtpbHkgZmFpbGluZyBvbiBXZWJLaXQyLCBhcyBzbmFw
c2hvdCBzb21ldGltZXMgaGFzIGEgYmxhY2sgcmVjdGFuZ2xlIGZvciB2aWRlbyBlbGVtZW50IGlu
c3RlYWQgb2Ygd2hpdGUgb25lLgogd2Via2l0Lm9yZy9iLzEzMTQ3NiBtZWRpYS90cmFjay93M2Mv
dHJhY2svd2VidnR0IFsgU2tpcCBdCiAKKyMgVlRUUmVnaW9uIGhlaWdodCBkb2Vzbid0IGFkanVz
dCB3aGVuIGN1ZSBmb250IHNpemUgY2hhbmdlcy4KK3dlYmtpdC5vcmcvYi8yMDM2MjEgbWVkaWEv
dHJhY2svcmVnaW9ucy13ZWJ2dHQvdnR0LXJlZ2lvbi1kaXNwbGF5Lmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQorCiB3ZWJraXQub3JnL2IvNjc3MTYgbWVkaWEvbWVkaWEtY29udHJvbHMtaW52YWxpZC11
cmwuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvNzUxODQgbWVkaWEvVzNDL3ZpZGVv
L2NhblBsYXlUeXBlL2NhblBsYXlUeXBlX2NvZGVjc19vcmRlcl8yLmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>