<?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>178148</bug_id>
          
          <creation_ts>2017-10-10 15:59:31 -0700</creation_ts>
          <short_desc>Modernize Geolocation code</short_desc>
          <delta_ts>2017-10-11 10:43:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>178173</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1358955</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 15:59:31 -0700</bug_when>
    <thetext>Modernize Geolocation code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359020</commentid>
    <comment_count>1</comment_count>
      <attachid>323374</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 20:08:43 -0700</bug_when>
    <thetext>Created attachment 323374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359022</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-10 20:11:20 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359027</commentid>
    <comment_count>3</comment_count>
      <attachid>323376</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 20:18:47 -0700</bug_when>
    <thetext>Created attachment 323376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359029</commentid>
    <comment_count>4</comment_count>
      <attachid>323378</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 20:32:44 -0700</bug_when>
    <thetext>Created attachment 323378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359031</commentid>
    <comment_count>5</comment_count>
      <attachid>323380</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 20:49:45 -0700</bug_when>
    <thetext>Created attachment 323380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359033</commentid>
    <comment_count>6</comment_count>
      <attachid>323381</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 20:56:54 -0700</bug_when>
    <thetext>Created attachment 323381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359034</commentid>
    <comment_count>7</comment_count>
      <attachid>323382</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 21:00:07 -0700</bug_when>
    <thetext>Created attachment 323382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359035</commentid>
    <comment_count>8</comment_count>
      <attachid>323383</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 21:08:40 -0700</bug_when>
    <thetext>Created attachment 323383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359047</commentid>
    <comment_count>9</comment_count>
      <attachid>323383</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-10 22:23:09 -0700</bug_when>
    <thetext>Comment on attachment 323383
Patch

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

r=me

&gt; Source/WebCore/Modules/geolocation/Coordinates.h:48
&gt; +    double latitude() const { return m_position.latitude; }
&gt; +    double longitude() const { return m_position.longitude; }

We should probably assert that these values aren&apos;t NaN/-1.

&gt; Source/WebCore/Modules/geolocation/GeolocationPosition.h:56
&gt; +    double latitude { -1 };

it&apos;s worth mentioning that these values are mandatory and cannot be omitted.
We should also add asserts where it&apos;s used to make sure we never see -1.
Also, we should probably use NaN instead of -1 per IRC discussion
since latitude &amp; longitude can take a negative value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359051</commentid>
    <comment_count>10</comment_count>
      <attachid>323388</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-10 22:39:14 -0700</bug_when>
    <thetext>Created attachment 323388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359188</commentid>
    <comment_count>11</comment_count>
      <attachid>323418</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-11 08:44:00 -0700</bug_when>
    <thetext>Created attachment 323418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359189</commentid>
    <comment_count>12</comment_count>
      <attachid>323419</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-11 08:47:42 -0700</bug_when>
    <thetext>Created attachment 323419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359219</commentid>
    <comment_count>13</comment_count>
      <attachid>323422</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-11 09:37:10 -0700</bug_when>
    <thetext>Created attachment 323422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359239</commentid>
    <comment_count>14</comment_count>
      <attachid>323422</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-11 10:42:04 -0700</bug_when>
    <thetext>Comment on attachment 323422
Patch

Clearing flags on attachment: 323422

Committed r223192: &lt;https://trac.webkit.org/changeset/223192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359240</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-11 10:42:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359241</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-11 10:43:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/34936394&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323374</attachid>
            <date>2017-10-10 20:08:43 -0700</date>
            <delta_ts>2017-10-10 20:18:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010200842.patch</filename>
            <type>text/plain</type>
            <size>64555</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uMGI1YTFmYTVjNjY5NzhiMDY3NWIxN2U1YzEwNDBk
NDMzYzJlOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlOgorICAgICAgICAtIFVzZSBzdGQ6Om9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBzZXBhcmF0ZSBib29sZWFuIG1lbWJlcnMKKyAgICAgICAgLSBNYWtlIEdl
b2xvY2F0aW9uUG9zaXRpb24gYSBzaW1wbGUgc3RydWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB2aWEg
SVBDCisgICAgICAgIC0gUmVwbGFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHdpdGgg
R2VvbG9jYXRpb25Qb3NpdGlvbgorICAgICAgICAtIE1vdmUgbG9naWMgdG8gY29uc3RydWN0IGEg
R2VvbG9jYXRpb25Qb3NpdGlvbiBmcm9tIGEgQ0xMb2NhdGlvbiBvbiBpT1MKKyAgICAgICAgICBp
biBvbmUgcGxhY2UgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OkNvb3JkaW5hdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmxhdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVzOjpsb25naXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVhZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246
Okdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xs
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oOgorCisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmVhbGx5IGZpeCB0aGUgYnVpbGQgd2l0aCBjZXJ0YWluIFNE
S3MuCiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIyMjMxNTQsIHdoaWNoIGZpeGVkIHRoZSB3cm9u
ZyBsYW1iZGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMjY2ZGZjYmI3ZjIwYjU5OWNjZjRmZGI4MGI2MDEwZTJl
YTIwYTguLjU5M2Y0MGVhNmQ2NjM2ZjBiYjBkNTk4YTEwYzBlY2IxMjYwMmQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp0aW1lc3Rh
bXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpsYXRp
dHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Omxv
bmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlv
blByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEzMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTkyMDllOTNiOTEwYjJiOTZm
NTllLi4zZDJhOWRiZjJjMGViMDkzZGQ2N2NmMGEzZTUzMmQ1MDk1YWZiN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBNaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2VuZExvY2F0aW9uOl0pOgorICAgICAgICAq
IE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bX1dlYkNvcmVM
b2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpdKToKKwogMjAxNy0x
MC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDA1YjRiY2Y5ZDdiNWRhMGFmOTBiODMyZmNiMjMzMGM3NTdmMS4uZmZjZTFh
NjkzZmY0NjYyM2VjNjAyZmMyNDJlY2I3N2Y5OTkyZjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBpbml0V2l0aFRpbWVzdGFtcDpsYXRpdHVkZTpsb25naXR1ZGU6YWNj
dXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmg6CisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggODQyODg1YWZhNzZmMjYxZGU3YTQ5NGQ0
NzQwZGY4ZGYxMDIxMTRlZi4uNWUxMGY0YWEwZDBkZTA2ZTRiYWYwMGQwNDMwODY1ZWUwZjUyY2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEw
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRX
aXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwgY29uc3Qp
OgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpjb29raWVzRW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nv
b3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRp
bmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcu
LjlhYzcyNmU5MWIxNTcwNGEzNGYyNGMwYzAyN2JkMjUzYzhhMDgzMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwz
MiArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorQ29vcmRpbmF0ZXM6OkNvb3JkaW5hdGVz
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKKyAgICA6IG1fcG9zaXRpb24oV1RGTW92
ZShwb3NpdGlvbikpCiB7Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9hbHRpdHVkZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG1faGVhZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpzcGVlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vQ29vcmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVh
MDYzODMyLi4yNzYzNzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5h
dGVzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91Ymxl
IGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENvb3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGUsIGFsdGl0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVk
ZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVk
KSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3Np
dGlvbiYmIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZXMoV1RGTW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0
ZXM+IGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0
ZXM6OmNyZWF0ZShtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUs
IG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1f
YWx0aXR1ZGVBY2N1cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblBy
b3ZpZGVTcGVlZCwgbV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRl
KCBHZW9sb2NhdGlvblBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxv
bmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZUFjY3VyYWN5KCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBj
b25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24uYWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29y
ZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkK
LSAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNj
dXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpCi0gICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChz
cGVlZCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5KQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAg
ZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBt
X2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAg
ICAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9v
bCBtX2NhblByb3ZpZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFi
Y2U0YzAwNWFjMWQ2MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAz
ZWY3OTA0NTdlZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdl
b2xvY2F0CiBzdGF0aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtd
ID0gIkdlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwog
c3RhdGljIGNvbnN0IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNz
YWdlW10gPSAiT3JpZ2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRp
b24gc2VydmljZSI7CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0
aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Q
cm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlv
bi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBv
c2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRl
SGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVk
KCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0
aW9uLT50aW1lc3RhbXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBH
ZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52
YWx1ZSgpKSksIHRpbWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3Jl
YXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMs
NyBAQCBHZW9wb3NpdGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRl
R2VvcG9zaXRpb24oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5
MzkwOGMzYWYwLi5mNzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRp
b247CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdl
YktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAg
ICAvLyBpcyBwdWJsaXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRj
ZDA1NDY5N2Q3ZGIxYWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4
Yzk2YTY5NzBjMzE2YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTks
NyArOTksNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9y
OwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9y
T2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRF
cnJvcihlcnJvcik7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG9jYXRpb25Db250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQ
b3NpdGlvbi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAg
IGlmIChtX2xhc3RQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5i
NjVkNjBkNTQxZWM1Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2Vv
bG9jYXRpb24mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAg
IEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2
ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdo
IGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNj
OWVkZTJhOGE2NzBkMzA1NzdiMWRiMDM1ZGJjZDYuLjVjMzU2MGUzNGRjZjJjZDliZmQ0NGZmNzRm
MTE2Y2NkNGMyNDk1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4MSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JK
Q19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9z
aXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0
aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFj
eShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJv
dmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVl
ZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91Ymxl
IGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25n
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgLTEgfTsKIAotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQWx0
aXR1ZGU7IH0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVIZWFkaW5nOyB9Ci0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVTcGVlZDsgfQor
ICAgIGRvdWJsZSBsYXRpdHVkZSB7IC0xIH07CisgICAgZG91YmxlIGxvbmdpdHVkZSB7IC0xIH07
CisgICAgZG91YmxlIGFjY3VyYWN5IHsgLTEgfTsKIAotcHJpdmF0ZToKLSAgICBHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgICAgICA6IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
LSAgICAgICAgLCBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQotICAgICAgICAsIG1fYWx0
aXR1ZGUoMCkKLSAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAgICAgLCBtX2hl
YWRpbmcoMCkKLSAgICAgICAgLCBtX3NwZWVkKDApCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0
aXR1ZGUoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeShmYWxz
ZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
UHJvdmlkZVNwZWVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZDsKIAotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5n
LCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi0gICAg
ICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJh
Y3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKLSAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKLSAgICAgICAgLCBtX3NwZWVkKHNwZWVkKQotICAgICAgICAsIG1fY2FuUHJvdmlk
ZUFsdGl0dWRlKHByb3ZpZGVzQWx0aXR1ZGUpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeShwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgICwgbV9jYW5Qcm92
aWRlSGVhZGluZyhwcm92aWRlc0hlYWRpbmcpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
cHJvdmlkZXNTcGVlZCkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdlb2xvY2F0aW9uUG9zaXRpb24mKTsKK307
CiAKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBHZW9sb2NhdGlvblBvc2l0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHRpbWVzdGFtcDsKKyAgICBlbmNvZGVyIDw8IGxhdGl0dWRlOworICAg
IGVuY29kZXIgPDwgbG9uZ2l0dWRlOworICAgIGVuY29kZXIgPDwgYWNjdXJhY3k7CisgICAgZW5j
b2RlciA8PCBhbHRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFsdGl0dWRlQWNjdXJhY3k7CisgICAg
ZW5jb2RlciA8PCBoZWFkaW5nOworICAgIGVuY29kZXIgPDwgc3BlZWQ7Cit9CiAKLSAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKLSAgICBkb3VibGUgbV9sb25naXR1ZGU7Ci0gICAgZG91YmxlIG1fYWNj
dXJhY3k7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGU7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBkb3VibGUgbV9oZWFkaW5nOwotICAgIGRvdWJsZSBtX3NwZWVkOwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24udGltZXN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubGF0aXR1ZGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5sb25naXR1ZGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5hY2N1cmFjeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvc2l0aW9uLmFsdGl0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmhlYWRpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5zcGVl
ZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1
ZGU7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OwotICAgIGJvb2wgbV9j
YW5Qcm92aWRlSGVhZGluZzsKLSAgICBib29sIG1fY2FuUHJvdmlkZVNwZWVkOwotfTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhhODQzNDJiMjQ3NDYyMTE3
YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAu
dGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0
ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVk
ZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBp
ZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUg
PSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjAp
CisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJz
ZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBlZDI2MmFjZDlkYS4uZDM3
NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU1MCw2ICszNTUw
LDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzYw
OUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAv
KiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Mzc5NjRDRjFG
OERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjcz
MDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBM
b2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4
NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtMTE4NzMs
NiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQgLyogRXJyb3JDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2
NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2
ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQx
RUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEw
IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdyb3VwIjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3NDZBRjExMTRGNERERTYw
MDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3
QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0RERFNjAwM0U3QTcwIC8q
IENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcgQEAKIAkJCQlDRDRCRTUy
QTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYyNTJFMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEyMjU4MWFhZjIxZTU3MDMy
ZGIyY2JiZGRiMjc0ZS4uOTY5YzgwNmZlNzU4OGE4Zjk3MWQ2NTZlZjhmOWVkMGEwODcwZTg2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcApAQCAtMTU2LDkgKzE1Niw5IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDM4CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRp
b24qIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24o
KQogewotICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0
UG9zaXRpb247CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNv
bnRyb2xsZXIoKQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
Ojpjb250cm9sbGVyVGltZXJGaXJlZCgpCiAKICAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkp
IHsKICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsKLSAgICAgICAgbV9jb250cm9sbGVyLT5w
b3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkpOworICAgICAgICBtX2NvbnRyb2xs
ZXItPnBvc2l0aW9uQ2hhbmdlZCgqbV9sYXN0UG9zaXRpb24pOwogICAgIH0gZWxzZSBpZiAobV9o
YXNFcnJvcikgewogICAgICAgICBhdXRvIGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJy
b3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9y
TWVzc2FnZSk7CiAgICAgICAgIG1fY29udHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlv
RXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggODVmYzAzODA2MTRmNGNkYzMyNGJhZjVmYTFhNjUy
NTE5NGEzNjYwYi4uZTY1YTBlNDhlOWMzMDI2ZDQ3Njc3MTdjMjJkMjIwZTZhMjU1YjNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0VXBkYXRpbmco
KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwotICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlz
c2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIApAQCAtNzYsNyArNzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xlYXJFcnJvcigpOwogCiAgICAgR2VvbG9jYXRpb25Db250cm9s
bGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2Fn
ZTsKICAgICBUaW1lciBtX2NvbnRyb2xsZXJUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggYmJmOWZhNTRjYTNjODM2M2RkZTU1
MGIzOGNiMTdmZjg4YWZhOWRmMy4uM2YxNTU4Yjc1MmJlZjhjOTJiNDE2OTZmZDQ2YTBjMDgxYjVi
YmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAKQEAgLTMwLDM0ICszMCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1w
LCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9v
bCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcs
IGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLXsKLSAg
ICBtX2RhdGEudGltZXN0YW1wID0gdGltZXN0YW1wOwotICAgIG1fZGF0YS5sYXRpdHVkZSA9IGxh
dGl0dWRlOwotICAgIG1fZGF0YS5sb25naXR1ZGUgPSBsb25naXR1ZGU7Ci0gICAgbV9kYXRhLmFj
Y3VyYWN5ID0gYWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZSA9IHByb3Zp
ZGVzQWx0aXR1ZGU7Ci0gICAgbV9kYXRhLmFsdGl0dWRlID0gYWx0aXR1ZGU7Ci0gICAgbV9kYXRh
LmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5Owot
ICAgIG1fZGF0YS5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2Rh
dGEuY2FuUHJvdmlkZUhlYWRpbmcgPSBwcm92aWRlc0hlYWRpbmc7Ci0gICAgbV9kYXRhLmhlYWRp
bmcgPSBoZWFkaW5nOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQgPSBwcm92aWRlc1NwZWVk
OwotICAgIG1fZGF0YS5zcGVlZCA9IHNwZWVkOwotfQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKK1Jl
ZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUo
R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCiB7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9u
UG9zaXRpb24pKSk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBJUEM6OlNpbXBsZUFyZ3Vt
ZW50Q29kZXI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YT46OmVuY29kZShlbmNvZGVyLCAq
dGhpcyk7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YSYgZGF0YSkKK1dlYkdlb2xvY2F0aW9uUG9zaXRpb246
On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKLSAgICByZXR1cm4gSVBDOjpTaW1wbGVBcmd1
bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+OjpkZWNvZGUoZGVjb2Rlciwg
ZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDFkZDc5ODliY2MwM2Q0MDAwMGRjZDlj
YzI2OTRjYmFiY2ZmZTQ2MDEuLjQxOGFjMzYzMTQ3ZTQ0MDllNDJkZmZjMWFkODFiMTRiMWM1Mjhl
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgs
NTYgKzM5LDI4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbj4gewogcHVibGljOgotICAgIHN0cnVjdCBEYXRhIHsKLSAgICAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlY29k
ZShJUEM6OkRlY29kZXImLCBEYXRhJik7Ci0KLSAgICAgICAgZG91YmxlIHRpbWVzdGFtcDsKLSAg
ICAgICAgZG91YmxlIGxhdGl0dWRlOwotICAgICAgICBkb3VibGUgbG9uZ2l0dWRlOwotICAgICAg
ICBkb3VibGUgYWNjdXJhY3k7Ci0KLSAgICAgICAgZG91YmxlIGFsdGl0dWRlOwotICAgICAgICBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgZG91YmxlIGhlYWRpbmc7Ci0gICAgICAg
IGRvdWJsZSBzcGVlZDsKLQotICAgICAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZTsKLSAgICAg
ICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgYm9vbCBjYW5Qcm92
aWRlSGVhZGluZzsKLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlU3BlZWQ7Ci0gICAgfTsKLQotICAg
IHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3Rh
bXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0
dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGlu
ZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbih0
aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRl
LCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBw
cm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7Ci0gICAgfQor
ICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24mJik7CiAKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvblBvc2l0
aW9uKCk7CiAKLSAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnRp
bWVzdGFtcDsgfQotICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5s
YXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
bG9uZ2l0dWRlOyB9Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmFjY3VyYWN5OyB9CisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fY29y
ZVBvc2l0aW9uLnRpbWVzdGFtcDsgfQorICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxvbmdpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1
cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFjY3VyYWN5OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRp
b24uYWx0aXR1ZGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3k7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBv
c2l0aW9uLmhlYWRpbmc7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5zcGVlZDsgfQogCi0gICAgYm9vbCBjYW5Qcm92aWRl
QWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY2FuUHJvdmlkZUFsdGl0dWRlOyB9Ci0g
ICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0dWRlOyB9Ci0K
LSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeTsgfQotCi0gICAg
Ym9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRl
SGVhZGluZzsgfQotICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhl
YWRpbmc7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNhblByb3ZpZGVTcGVlZDsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5zcGVlZDsgfQotCi0gICAgY29uc3QgRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mIGNvcmVQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uOyB9CiAKIHByaXZhdGU6Ci0g
ICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0
dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3Vi
bGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5n
LCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCk7CisgICAgZXhwbGljaXQgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYgZ2VvbG9jYXRp
b25Qb3NpdGlvbikKKyAgICAgICAgOiBtX2NvcmVQb3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9u
UG9zaXRpb24pKQorICAgIHsKKyAgICB9CiAKLSAgICBEYXRhIG1fZGF0YTsKKyAgICBXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uIG1fY29yZVBvc2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dl
b2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tH
ZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCA1N2ZiZGNmZDNlZTZlOTk5ZDJkNWQzYjFkMDM1
OTUyMjBhZmRjNGVkLi4zMjQxZDcyN2QzYzU3MTYyOTU2M2IxYTE5N2JiOTI1MzdjZGYyYTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9z
aXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDE2IEBAIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJl
ZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxh
CiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVf
Yihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9v
bCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRv
dWJsZSBzcGVlZCkKIHsKLSAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3Zp
ZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRl
QWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQp
OworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0
YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGlmIChwcm92aWRlc0Fs
dGl0dWRlKQorICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKKyAgICBp
ZiAocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQorICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1
ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgaWYgKHByb3ZpZGVzSGVhZGluZykK
KyAgICAgICAgY29yZVBvc2l0aW9uLmhlYWRpbmcgPSBoZWFkaW5nOworICAgIGlmIChwcm92aWRl
c1NwZWVkKQorICAgICAgICBjb3JlUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKworICAgIGF1dG8g
cG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9z
aXRpb24pKTsKICAgICByZXR1cm4gdG9BUEkoJnBvc2l0aW9uLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Q
b3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tCmluZGV4IDhlZWZiZWNjNzRjY2NiMTc0MDlhY2ZhMTcyOGM5YmI5MzA5
MjZiZmEuLjZmODE5ZGYxNDc1NzZlZmU1OTViODk3YzBkYjJkZGMzMzQ3ZjE4ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tCkBAIC0zOSwyOSArMzksNyBAQCArIChpbnN0YW5jZXR5cGUpcG9zaXRp
b25XaXRoTG9jYXRpb246KENMTG9jYXRpb24gKilsb2NhdGlvbgogICAgIGlmICghbG9jYXRpb24p
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZSA9IHRy
dWU7Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHRydWU7Ci0gICAgZG91
YmxlIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIGlmIChhbHRpdHVkZUFjY3Vy
YWN5IDwgMC4wKSB7Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNlOwotICAgICAg
ICBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wg
Y2FuUHJvdmlkZVNwZWVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc3BlZWQgPSBsb2NhdGlvbi5zcGVl
ZDsKLSAgICBpZiAoc3BlZWQgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVTcGVlZCA9IGZhbHNl
OwotCi0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZyA9IHRydWU7Ci0gICAgZG91YmxlIGhlYWRp
bmcgPSBsb2NhdGlvbi5jb3Vyc2U7Ci0gICAgaWYgKGhlYWRpbmcgPCAwLjApCi0gICAgICAgIGNh
blByb3ZpZGVIZWFkaW5nID0gZmFsc2U7Ci0KLSAgICBDTExvY2F0aW9uQ29vcmRpbmF0ZTJEIGNv
b3JkaW5hdGUgPSBsb2NhdGlvbi5jb29yZGluYXRlOwotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBs
b2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwOwotCi0gICAgcmV0dXJuIFt3
cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGNvb3JkaW5h
dGUubGF0aXR1ZGUsIGNvb3JkaW5hdGUubG9uZ2l0dWRlLCBsb2NhdGlvbi5ob3Jpem9udGFsQWNj
dXJhY3ksIGNhblByb3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFj
Y3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVhZGluZywgY2Fu
UHJvdmlkZVNwZWVkLCBzcGVlZCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IFt3cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uIHsgbG9jYXRpb24gfSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAppbmRleCBkYjc3ZjM4
OTBjNTVkMzY2MTg2MjZhM2ViY2U1ZGFlOTZlYzRlMGUyLi43YjAzNWY4ZmZjNWZhZDUyOWEzOTQz
NGMwZWIwZWI0OWJhZDc2ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcApAQCAtODEs
NyArODEsMTAgQEAgdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wVXBkYXRpbmco
KQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdl
ZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSkKIHsK
LSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSwgdHJ1ZSwgYWx0aXR1ZGUsIHRydWUsIGFsdGl0dWRlQWNjdXJhY3ksIGZhbHNlLCAwLCBm
YWxzZSwgMCk7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0
YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGNvcmVQb3NpdGlvbi5h
bHRpdHVkZSA9IGFsdGl0dWRlOworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VycmFjeSA9
IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBv
c2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0
aW9uKSk7CiAgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRp
b24ocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggODdiMjk2ODZiYmU1NmZm
ZTM0ZWU3MzQ5YzFmOGE5MGJmNjhhMjAxOS4uNTJiMDExZjVkYmFjNmNkNmI3MDczYjgyMDU0NmZi
NjI2ZTIxYTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQ
SUdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05MCw3ICs5MSw3IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24tPmRhdGEoKSkp
OworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi0+Y29yZVBvc2l0aW9u
KCkpKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCmluZGV4IGMzN2IzMzE0MTNmYjNlMmFmMzZhYzIwMDZjMWUzOTI4NTRmNzQ3YWEuLjg5
MmRlZTEzZTE2OTNiNjhjN2MzMTU2YjMyNGQyNmVmODE4NTE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpA
QCAtNzQsMTEgKzc0LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+LCBVSVdpbmRvdyop
OwogfTsKIAotc3RhdGljIGlubGluZSBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4ga2l0KFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQotewotICAgIHJldHVybiBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUocG9zaXRpb24tPnRpbWVzdGFtcCgpLCBwb3NpdGlv
bi0+bGF0aXR1ZGUoKSwgcG9zaXRpb24tPmxvbmdpdHVkZSgpLCBwb3NpdGlvbi0+YWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGUoKSwg
cG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5hbHRpdHVk
ZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBwb3NpdGlvbi0+aGVh
ZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9uLT5zcGVlZCgpKTsK
LX0KLQogc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gb3JpZ2luOwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBmcmFtZTsKQEAgLTMw
NCwxMCArMjk5LDEwIEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAg
ICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwogfQogCi0tICh2
b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiAqKWNvcmVQ
b3NpdGlvbgorLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24mJiljb3JlUG9zaXRpb24KIHsKICAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBhdXRv
IHBvc2l0aW9uID0ga2l0KGNvcmVQb3NpdGlvbik7CisgICAgYXV0byBwb3NpdGlvbiA9IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwogICAgIFtf
bGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBwZXIocG9zaXRpb24uZ2V0KCkpXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCBkMzZlNjhkNWE4NjU1MjY4MmYxNjMyNjk1
ZTFjYjk2MjU4M2Q3NzQ0Li45NTY3NTE4MGM0M2EwYzE2NGViMmE1MDRiY2YwMTAzMmNmODc3NWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtOTEsMTkgKzkxLDE3IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBh
Z2UmIHBhZ2UsIGJvb2wgZW5hCiAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6RGF0YSYgZGF0YSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uJiBwb3NpdGlvbikK
IHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+IHBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGRhdGEudGltZXN0YW1w
LCBkYXRhLmxhdGl0dWRlLCBkYXRhLmxvbmdpdHVkZSwgZGF0YS5hY2N1cmFjeSwgZGF0YS5jYW5Q
cm92aWRlQWx0aXR1ZGUsIGRhdGEuYWx0aXR1ZGUsIGRhdGEuY2FuUHJvdmlkZUFsdGl0dWRlQWNj
dXJhY3ksIGRhdGEuYWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5jYW5Qcm92aWRlSGVhZGluZywgZGF0
YS5oZWFkaW5nLCBkYXRhLmNhblByb3ZpZGVTcGVlZCwgZGF0YS5zcGVlZCk7Ci0KICAgICBWZWN0
b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdlQ29weTsKICAgICBjb3B5VG9WZWN0b3IobV9wYWdl
U2V0LCB3ZWJQYWdlQ29weSk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogd2ViUGFnZUNvcHkpIHsK
ICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlv
bi5nZXQoKSk7CisgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+
Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKICNlbmRp
ZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRl
eCBkMWYzY2I3MzYwMDMxY2RlOWQyNGZiYzQ1ZjI5ZjUwY2M3OTA2ZTZiLi40ZjQ0N2FmMGEzNzQ2
NTQzOGY1ZjI5YjE3OGYwN2I2NjIzNzczZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBA
IC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdlb2xvY2F0aW9u
OworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02Miw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcGFnZVNldC5pc0VtcHR5KCk7IH0KICAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuaXNFbXB0eSgpOyB9
CiAKLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OkRhdGEmKTsKKyAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24mKTsKICAgICB2b2lkIGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9p
ZCByZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgppbmRleCAyNzE1NGY1YTM2ZWUzMDMyMWJhNWUxZDllMjcyZTg0MGNhYzc3MWU5Li45
N2RhMjg1NmJkMjlhNmUwNWNmNzcwZjVjYzI5ZTc3NjliNmQ0Mjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyIHsKLSAgICBEaWRDaGFu
Z2VQb3NpdGlvbihXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGEgcG9zaXRpb24p
OworICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gcG9z
aXRpb24pOwogICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3Nh
Z2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCAzYmM4ZGZjYjE0MDZiNzllODc2MDRmNTA5MzUz
NjhhNTk0MmQ0N2NlLi44OTEzMTNjZTlmYWE3NjNjNTE1NjljY2U5ZmNiOTg1YTRiNDMyODQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTY0LDEwICs2NCwxMCBAQCB2b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVk
KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyPigpLT5zZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKG1fcGFnZSwgZW5hYmxlZCk7
CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9z
aXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlv
bkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAxOTc3NzExMTNhNjlkNTQ3YjYz
OTE0YjMwMzczMjkyZjQ3MWNhZjAyLi5jZmU4ZDQyNDg1OWQ4ZjExNzBmYTg5ZTc2OTQwNjBiNzgy
MGQzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRp
b24mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2Mv
V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgKaW5kZXggODA5
NWQ1M2M3ODJiNDE5MTZiNTNlMGY4ZDZiMTMyMWZkZDMwYWIwNS4uMDQ5MGZjZmIxZGIwNGJmNmIw
MjRlOGU0MDk2NzU3MGY3YzVhYzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIC0gKHZvaWQp
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZDsKIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRGVuaWVkOwogCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiopcG9zaXRpb247CistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKXBvc2l0aW9uOwogLSAodm9pZCllcnJvck9jY3Vy
cmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZTsKIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbjsK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQppbmRleCBhZWQ5NTYyMWM3
ODUxZDM1NzE0MjBjMGM2MjUxN2ZhYjI1MDUzNjA2Li5kOWYwMzNhN2Q3MjBhMTRlMTEzMjE2NzIw
ZjZmMGI2Mzg0ZWExMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCkBA
IC0xNjUsMjkgKzE2NSw3IEBAIC0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIgZGlkQ2hhbmdlQXV0aG9yaXphdGlvblN0YXR1CiAKIC0gKHZvaWQpc2Vu
ZExvY2F0aW9uOihDTExvY2F0aW9uICopbmV3TG9jYXRpb24KIHsKLSAgICAvLyBOb3JtYWxpemUu
Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlk
ZUFsdGl0dWRlQWNjdXJhY3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IG5ld0xvY2F0
aW9uLmFsdGl0dWRlOwotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbmV3TG9jYXRpb24u
dmVydGljYWxBY2N1cmFjeTsKLSAgICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAg
ICAgICBjYW5Qcm92aWRlQWx0aXR1ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0
dWRlQWNjdXJhY3kgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9
IHRydWU7Ci0gICAgZG91YmxlIHNwZWVkID0gbmV3TG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNw
ZWVkIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wg
Y2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVlOwotICAgIGRvdWJsZSBoZWFkaW5nID0gbmV3TG9jYXRp
b24uY291cnNlOwotICAgIGlmIChoZWFkaW5nIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVh
ZGluZyA9IGZhbHNlOwotCi0gICAgZG91YmxlIHRpbWVzdGFtcCA9IFtuZXdMb2NhdGlvbi50aW1l
c3RhbXAgdGltZUludGVydmFsU2luY2UxOTcwXTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3Np
dGlvbj4gZ2VvbG9jYXRpb25Qb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0
aW1lc3RhbXAsIG5ld0xvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUsIG5ld0xvY2F0aW9uLmNv
b3JkaW5hdGUubG9uZ2l0dWRlLCBuZXdMb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3ksIGNhblBy
b3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBhbHRp
dHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVhZGluZywgY2FuUHJvdmlkZVNwZWVk
LCBzcGVlZCk7Ci0gICAgW19wb3NpdGlvbkxpc3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDpnZW9sb2Nh
dGlvblBvc2l0aW9uLmdldCgpXTsKKyAgICBbX3Bvc2l0aW9uTGlzdGVuZXIgcG9zaXRpb25DaGFu
Z2VkOkdlb2xvY2F0aW9uUG9zaXRpb24geyBuZXdMb2NhdGlvbiB9XTsKIH0KIAogLSAodm9pZCls
b2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2Nh
dGlvbnM6KE5TQXJyYXkgKilsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCAwZDUzYWYw
Mzg1YmM0MTgzYWY4Njg2YjZjMzc0M2RiNWZjNWMxNDhhLi4xZDI4MGMxYWNkNTkxZTdjMWFlYzY4
OWFiN2EyMzQ0NjgzYWJiNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9N
aXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00NCw3ICs0NCw3IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIChJbnRlcm5hbCkKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVm
UHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CistIChp
ZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAogLy8gQ29yZUxvY2F0aW9uIHJ1bnMgaW4gdGhl
IG1haW4gdGhyZWFkLiBXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIGxpdmVzIG9uIHRoZSBXZWJU
aHJlYWQuCkBAIC0zNjEsOSArMzYxLDkgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWQKICAgICB9KTsKIH0KIAotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24qKXBvc2l0aW9uCistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDoo
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKXBvc2l0aW9uCiB7Ci0gICAgUmV0YWluUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYlBvc2l0aW9uID0gYWRvcHROUyhbW1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjpwb3NpdGlv
bl0pOworICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3ZWJQb3NpdGlvbiA9
IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0
aW9uUG9zaXRpb246V1RGTW92ZShwb3NpdGlvbildKTsKICAgICBXZWJUaHJlYWRSdW4oXnsKICAg
ICAgICAgW19wcm92aWRlciBwb3NpdGlvbkNoYW5nZWQ6d2ViUG9zaXRpb24uZ2V0KCldOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzM2MDI0OTEwZWMxNTE4ODJiNjRh
ODZiOTg5MDUzMGNlOTI3ZWZjOC4uMjBjNDM0MzEwNzg3YWJhZGIwMjI2MDM5NWI3OTIwODc2Mzc4
YjQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZSB7IH0KICNl
bmRpZgogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
PiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
V2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5tbQppbmRleCAwY2IyYmU5OTFlMTc0ODk5MTI0OWVkZDFiYzlmZWVmNTVh
YmYzYTgwLi4yZWYzZGI2MjM5YzE5NDQ1YTA3NTA4MTUzMGU4M2JjYTQwMjcxYmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9u
KiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7
CiAgICAgcmV0dXJuIGNvcmUoW1ttX3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIGxhc3RQ
b3NpdGlvbl0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCmluZGV4IDQ1NmQ0YmE4YmRmMGU3MTY0NDkw
NzUzMjFmOWVkZDRmMDg0NWRmYTAuLjM3NDU5YzZiODU4NDdjNjEzNWFhODYxYjUxNGExMGQ2NGE4
NmExYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KQEAgLTI2LDI0ICsyNiwyNCBAQAogI2ltcG9ydCAi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KLQogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZh
Y2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIDogTlNPYmplY3QKIHsKIEBwdWJsaWMK
LSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gX3Bvc2l0aW9uOworICAgIEdlb2xvY2F0
aW9uUG9zaXRpb24gX3Bvc2l0aW9uOwogfQogCi0tIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlv
blBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0
aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbAogCi0tIChpZClpbml0V2l0aENv
cmVHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbgorLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlv
bjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCiB7CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC01Niw5ICs1NiwxMSBAQCBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAKLUdlb2xvY2F0
aW9uUG9zaXRpb24qIGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pCitzdGQ6
Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biAqcG9zaXRpb24pCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uID8gcG9zaXRpb24tPl9pbnRlcm5h
bC0+X3Bvc2l0aW9uLmdldCgpIDogMDsKKyAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBwb3NpdGlvbi0+X2ludGVybmFsLT5fcG9zaXRp
b247CiB9CiAKIC0gKGlkKWluaXRXaXRoVGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIGxhdGl0
dWRlOihkb3VibGUpbGF0aXR1ZGUgbG9uZ2l0dWRlOihkb3VibGUpbG9uZ2l0dWRlIGFjY3VyYWN5
Oihkb3VibGUpYWNjdXJhY3kKQEAgLTY2LDExICs2OCwxMSBAQCAtIChpZClpbml0V2l0aFRpbWVz
dGFtcDooZG91YmxlKXRpbWVzdGFtcCBsYXRpdHVkZTooZG91YmxlKWxhdGl0dWRlIGxvbmdpdHVk
ZTooZAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIF9pbnRlcm5hbCA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVy
bmFsIGFsbG9jXSBpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOkdlb2xvY2F0aW9uUG9z
aXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KV07
CisgICAgX2ludGVybmFsID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgYWxsb2Nd
IGluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246R2VvbG9jYXRpb25Qb3NpdGlvbiB7IHRp
bWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfV07CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xv
Y2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24KKy0gKGlkKWluaXRXaXRo
R2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaAppbmRleCBmNTRlNjZiODFlMTk5YjQ0NDA5NTgw
NmQwNGIxMTAzZjI2ZGE1MDkyLi4yNmMzMmIxMjZkZjI0MzI1ZmRjZTk5YjdiODZhOGM3NTk4MmNk
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKQEAgLTI0LDEwICsyNCwxMSBA
QAogICovCiAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIH0KIAotV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogY29yZShXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uICopOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAppbmRleCBiYTI4NmM4ZDk3NTk3Mjg4ZGI4ZWQxODViMjA4ZmE5Nzgz
MDBkMTBlLi5iYTNmMzQxZWQxZWQ3MWZlOWE1MGYzZmE0NWFmNDU5MWYzOTQzNzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02NCwxNCArNjQsMTQgQEAgdm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKICAgICBwcm92aWRlci0+dW5yZWdpc3Rlcldl
YlZpZXcobV93ZWJWaWV3LmdldCgpKTsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2Vv
bG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9u
UG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIENP
TVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRCht
X3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIENPTVB0cjxJV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbj4gcG9zaXRpb247CiAgICAgaWYgKEZBSUxFRChwcm92aWRlci0+bGFzdFBv
c2l0aW9uKCZwb3NpdGlvbikpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gY29yZShwb3NpdGlvbi5nZXQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDdiMWJmNDg3YWFjNzAzMzRlMzUxNWQ3MzQxZTI2NjBh
MTdkZTAxNmIuLmY2MmY1YzBkZTEzYWY4MzNlNmNiODY3ZjczMmVmNTU5NWZiOTg2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdGFydFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KLSAgICBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIGZp
bmFsOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9j
YXRpb24mKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNGQ2MzE4NTYxMTA0NWQwM2Y2M2M3NjA4OTU0Yzk5
NTZjNjNmYTVmZS4uMGQ2Yjc4NGUwNzUwMzEwOGMwMzg2NzA1OGUxNmIzOTVjYmY4ZmVkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKQEAgLTgxLDE4ICs4MSwxOCBAQCBVTE9ORyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpSZWxl
YXNlKCkKIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjppbml0V2l0aFRpbWVzdGFt
cChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSkKIHsKLSAgICBtX3Bvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOworICAgIG1f
cG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uIHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9u
Z2l0dWRlLCBhY2N1cmFjeSB9OwogICAgIHJldHVybiBTX09LOwogfQogCi1HZW9sb2NhdGlvblBv
c2l0aW9uKiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3N0ZDo6b3B0
aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiog
cG9zaXRpb24pCiB7CiAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbj4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbihRdWVyeSwgcG9zaXRpb24pOwogICAgIGlmICgh
d2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbi0+aW1w
bCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oCmluZGV4IDc5OGFiODA4N2Q5YzdlZjBmOGNkMTFhZjYzODhhZjM5OGVmODkyYzcuLjZm
MWZjMWRjYjM3MGIyNjJkNzQxZjdjOWVkMzAzM2ZmYjljOWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTQ4LDEzICs0OCwx
MyBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVz
dGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kp
OwogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogaW1wbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24uZ2V0KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24+JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiBw
cml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24+IG1fcG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bvc2l0aW9uOwogfTsKIAotV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiogY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOworc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKElXZWJHZW9sb2NhdGlv
blBvc2l0aW9uKik7CiAKICNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uX2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNWFkYmVjNTMz
ZmU5MjMzMjEzMWZkZjA5MGUzMjY2NjczYmFlODQ3Li5iODM2MWNlMjczMjg5NTZhNjcyYzU5Yjdl
ZmIxNGZhNTZlZTdjMTk0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKwogMjAxNy0xMC0xMCAgSm9hbm1hcmllIERpZ2dzICA8amRp
Z2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFtBVEtdIEFSSUEgZm9ybSByb2xlIHNob3Vs
ZCBiZSBtYXBwZWQgdG8gQVRLX1JPTEVfTEFORE1BUks7IG5vdCBBVEtfUk9MRV9GT1JNCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGE2MTEwZDkxNjYxY2I1
ZTZiZThjNDRhYTczN2Q1NzI4ZTA3Y2NhNWIuLjYzM2U0Nzc4MTlmNmJjNjYzMmVlOTZlNDcxMTZj
ZTk5YjhjM2UwMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiAoSW50ZXJuYWwpCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRp
b246KFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiBUZXN0
UnVubmVyOjp+VGVzdFJ1bm5lcigpCkBAIC00NDksOCArNDQ5LDE2IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBkCiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgogICAgICAgICBwb3Np
dGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6
Y3VycmVudFRpbWUoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3Vy
YWN5OmFjY3VyYWN5XTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uID0gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRU
aW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBh
bHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92
aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKLSAgICAgICAgcG9z
aXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRp
b25Qb3NpdGlvbjooV1RGTW92ZShjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKKyAgICAgICAg
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBnZW9sb2NhdGlvblBvc2l0aW9uIHsgY3VycmVu
dFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKKyAgICAgICAgaWYgKHBy
b3ZpZGVzQWx0aXR1ZGUpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRl
ID0gYWx0aXR1ZGU7CisgICAgICAgIGlmIChwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCisgICAg
ICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFj
Y3VyYWN5OworICAgICAgICBpZiAocHJvdmlkZXNIZWFkaW5nKQorICAgICAgICAgICAgZ2VvbG9j
YXRpb25Qb3NpdGlvbi5oZWFkaW5nID0gaGVhZGluZzsKKyAgICAgICAgaWYgKHByb3ZpZGVzU3Bl
ZWQpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLnNwZWVkID0gc3BlZWQ7CisgICAg
ICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdl
b2xvY2F0aW9uUG9zaXRpb246KFdURk1vdmUoZ2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKICAgICB9
CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0
aW9uXTsKICAgICBbcG9zaXRpb24gcmVsZWFzZV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323376</attachid>
            <date>2017-10-10 20:18:47 -0700</date>
            <delta_ts>2017-10-10 20:32:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010201846.patch</filename>
            <type>text/plain</type>
            <size>64954</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uMGI1YTFmYTVjNjY5NzhiMDY3NWIxN2U1YzEwNDBk
NDMzYzJlOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlOgorICAgICAgICAtIFVzZSBzdGQ6Om9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBzZXBhcmF0ZSBib29sZWFuIG1lbWJlcnMKKyAgICAgICAgLSBNYWtlIEdl
b2xvY2F0aW9uUG9zaXRpb24gYSBzaW1wbGUgc3RydWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB2aWEg
SVBDCisgICAgICAgIC0gUmVwbGFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHdpdGgg
R2VvbG9jYXRpb25Qb3NpdGlvbgorICAgICAgICAtIE1vdmUgbG9naWMgdG8gY29uc3RydWN0IGEg
R2VvbG9jYXRpb25Qb3NpdGlvbiBmcm9tIGEgQ0xMb2NhdGlvbiBvbiBpT1MKKyAgICAgICAgICBp
biBvbmUgcGxhY2UgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OkNvb3JkaW5hdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmxhdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVzOjpsb25naXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVhZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246
Okdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xs
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oOgorCisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmVhbGx5IGZpeCB0aGUgYnVpbGQgd2l0aCBjZXJ0YWluIFNE
S3MuCiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIyMjMxNTQsIHdoaWNoIGZpeGVkIHRoZSB3cm9u
ZyBsYW1iZGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMjY2ZGZjYmI3ZjIwYjU5OWNjZjRmZGI4MGI2MDEwZTJl
YTIwYTguLjU5M2Y0MGVhNmQ2NjM2ZjBiYjBkNTk4YTEwYzBlY2IxMjYwMmQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp0aW1lc3Rh
bXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpsYXRp
dHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Omxv
bmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlv
blByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEzMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTkyMDllOTNiOTEwYjJiOTZm
NTllLi4zZDJhOWRiZjJjMGViMDkzZGQ2N2NmMGEzZTUzMmQ1MDk1YWZiN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBNaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2VuZExvY2F0aW9uOl0pOgorICAgICAgICAq
IE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bX1dlYkNvcmVM
b2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpdKToKKwogMjAxNy0x
MC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDA1YjRiY2Y5ZDdiNWRhMGFmOTBiODMyZmNiMjMzMGM3NTdmMS4uZmZjZTFh
NjkzZmY0NjYyM2VjNjAyZmMyNDJlY2I3N2Y5OTkyZjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBpbml0V2l0aFRpbWVzdGFtcDpsYXRpdHVkZTpsb25naXR1ZGU6YWNj
dXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmg6CisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggODQyODg1YWZhNzZmMjYxZGU3YTQ5NGQ0
NzQwZGY4ZGYxMDIxMTRlZi4uNWUxMGY0YWEwZDBkZTA2ZTRiYWYwMGQwNDMwODY1ZWUwZjUyY2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEw
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRX
aXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwgY29uc3Qp
OgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpjb29raWVzRW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nv
b3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRp
bmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcu
LjlhYzcyNmU5MWIxNTcwNGEzNGYyNGMwYzAyN2JkMjUzYzhhMDgzMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwz
MiArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorQ29vcmRpbmF0ZXM6OkNvb3JkaW5hdGVz
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKKyAgICA6IG1fcG9zaXRpb24oV1RGTW92
ZShwb3NpdGlvbikpCiB7Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9hbHRpdHVkZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG1faGVhZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpzcGVlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vQ29vcmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVh
MDYzODMyLi4yNzYzNzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5h
dGVzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91Ymxl
IGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENvb3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGUsIGFsdGl0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVk
ZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVk
KSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3Np
dGlvbiYmIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZXMoV1RGTW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0
ZXM+IGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0
ZXM6OmNyZWF0ZShtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUs
IG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1f
YWx0aXR1ZGVBY2N1cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblBy
b3ZpZGVTcGVlZCwgbV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRl
KCBHZW9sb2NhdGlvblBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxv
bmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZUFjY3VyYWN5KCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBj
b25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24uYWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29y
ZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkK
LSAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNj
dXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpCi0gICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChz
cGVlZCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5KQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAg
ZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBt
X2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAg
ICAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9v
bCBtX2NhblByb3ZpZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFi
Y2U0YzAwNWFjMWQ2MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAz
ZWY3OTA0NTdlZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdl
b2xvY2F0CiBzdGF0aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtd
ID0gIkdlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwog
c3RhdGljIGNvbnN0IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNz
YWdlW10gPSAiT3JpZ2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRp
b24gc2VydmljZSI7CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0
aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Q
cm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlv
bi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBv
c2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRl
SGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVk
KCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0
aW9uLT50aW1lc3RhbXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBH
ZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52
YWx1ZSgpKSksIHRpbWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3Jl
YXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMs
NyBAQCBHZW9wb3NpdGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRl
R2VvcG9zaXRpb24oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5
MzkwOGMzYWYwLi5mNzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRp
b247CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdl
YktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAg
ICAvLyBpcyBwdWJsaXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRj
ZDA1NDY5N2Q3ZGIxYWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4
Yzk2YTY5NzBjMzE2YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTks
NyArOTksNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9y
OwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9y
T2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRF
cnJvcihlcnJvcik7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG9jYXRpb25Db250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQ
b3NpdGlvbi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAg
IGlmIChtX2xhc3RQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5i
NjVkNjBkNTQxZWM1Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2Vv
bG9jYXRpb24mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAg
IEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2
ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdo
IGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNj
OWVkZTJhOGE2NzBkMzA1NzdiMWRiMDM1ZGJjZDYuLjVjMzU2MGUzNGRjZjJjZDliZmQ0NGZmNzRm
MTE2Y2NkNGMyNDk1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4MSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JK
Q19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9z
aXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0
aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFj
eShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJv
dmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVl
ZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91Ymxl
IGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25n
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgLTEgfTsKIAotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQWx0
aXR1ZGU7IH0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVIZWFkaW5nOyB9Ci0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVTcGVlZDsgfQor
ICAgIGRvdWJsZSBsYXRpdHVkZSB7IC0xIH07CisgICAgZG91YmxlIGxvbmdpdHVkZSB7IC0xIH07
CisgICAgZG91YmxlIGFjY3VyYWN5IHsgLTEgfTsKIAotcHJpdmF0ZToKLSAgICBHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgICAgICA6IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
LSAgICAgICAgLCBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQotICAgICAgICAsIG1fYWx0
aXR1ZGUoMCkKLSAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAgICAgLCBtX2hl
YWRpbmcoMCkKLSAgICAgICAgLCBtX3NwZWVkKDApCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0
aXR1ZGUoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeShmYWxz
ZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
UHJvdmlkZVNwZWVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZDsKIAotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5n
LCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi0gICAg
ICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJh
Y3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKLSAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKLSAgICAgICAgLCBtX3NwZWVkKHNwZWVkKQotICAgICAgICAsIG1fY2FuUHJvdmlk
ZUFsdGl0dWRlKHByb3ZpZGVzQWx0aXR1ZGUpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeShwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgICwgbV9jYW5Qcm92
aWRlSGVhZGluZyhwcm92aWRlc0hlYWRpbmcpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
cHJvdmlkZXNTcGVlZCkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdlb2xvY2F0aW9uUG9zaXRpb24mKTsKK307
CiAKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBHZW9sb2NhdGlvblBvc2l0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHRpbWVzdGFtcDsKKyAgICBlbmNvZGVyIDw8IGxhdGl0dWRlOworICAg
IGVuY29kZXIgPDwgbG9uZ2l0dWRlOworICAgIGVuY29kZXIgPDwgYWNjdXJhY3k7CisgICAgZW5j
b2RlciA8PCBhbHRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFsdGl0dWRlQWNjdXJhY3k7CisgICAg
ZW5jb2RlciA8PCBoZWFkaW5nOworICAgIGVuY29kZXIgPDwgc3BlZWQ7Cit9CiAKLSAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKLSAgICBkb3VibGUgbV9sb25naXR1ZGU7Ci0gICAgZG91YmxlIG1fYWNj
dXJhY3k7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGU7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBkb3VibGUgbV9oZWFkaW5nOwotICAgIGRvdWJsZSBtX3NwZWVkOwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24udGltZXN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubGF0aXR1ZGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5sb25naXR1ZGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5hY2N1cmFjeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvc2l0aW9uLmFsdGl0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmhlYWRpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5zcGVl
ZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1
ZGU7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OwotICAgIGJvb2wgbV9j
YW5Qcm92aWRlSGVhZGluZzsKLSAgICBib29sIG1fY2FuUHJvdmlkZVNwZWVkOwotfTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhhODQzNDJiMjQ3NDYyMTE3
YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAu
dGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0
ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVk
ZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBp
ZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUg
PSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjAp
CisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJz
ZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBlZDI2MmFjZDlkYS4uZDM3
NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU1MCw2ICszNTUw
LDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzYw
OUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAv
KiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Mzc5NjRDRjFG
OERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjcz
MDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBM
b2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4
NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtMTE4NzMs
NiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQgLyogRXJyb3JDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2
NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2
ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQx
RUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEw
IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdyb3VwIjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3NDZBRjExMTRGNERERTYw
MDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3
QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0RERFNjAwM0U3QTcwIC8q
IENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcgQEAKIAkJCQlDRDRCRTUy
QTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYyNTJFMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEyMjU4MWFhZjIxZTU3MDMy
ZGIyY2JiZGRiMjc0ZS4uOTY5YzgwNmZlNzU4OGE4Zjk3MWQ2NTZlZjhmOWVkMGEwODcwZTg2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcApAQCAtMTU2LDkgKzE1Niw5IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDM4CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRp
b24qIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24o
KQogewotICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0
UG9zaXRpb247CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNv
bnRyb2xsZXIoKQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
Ojpjb250cm9sbGVyVGltZXJGaXJlZCgpCiAKICAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkp
IHsKICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsKLSAgICAgICAgbV9jb250cm9sbGVyLT5w
b3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkpOworICAgICAgICBtX2NvbnRyb2xs
ZXItPnBvc2l0aW9uQ2hhbmdlZCgqbV9sYXN0UG9zaXRpb24pOwogICAgIH0gZWxzZSBpZiAobV9o
YXNFcnJvcikgewogICAgICAgICBhdXRvIGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJy
b3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9y
TWVzc2FnZSk7CiAgICAgICAgIG1fY29udHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlv
RXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggODVmYzAzODA2MTRmNGNkYzMyNGJhZjVmYTFhNjUy
NTE5NGEzNjYwYi4uYTU1NDE0MGVjOTgxMDY2ZDBjYjY0ZWFjYzRlODI0ZTI3OTIwYzYyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCkBAIC0zMiw2ICszMiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC00MCw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjsKLWNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAKIC8vIEZJ
WE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hvdWxkIGJlIG1vdmVkIHRv
IFdlYktpdC4KIC8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlvbiBj
bGllbnQuCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0VXBkYXRpbmco
KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwotICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlz
c2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIApAQCAtNzYsNyArNzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xlYXJFcnJvcigpOwogCiAgICAgR2VvbG9jYXRpb25Db250cm9s
bGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2Fn
ZTsKICAgICBUaW1lciBtX2NvbnRyb2xsZXJUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggYmJmOWZhNTRjYTNjODM2M2RkZTU1
MGIzOGNiMTdmZjg4YWZhOWRmMy4uM2YxNTU4Yjc1MmJlZjhjOTJiNDE2OTZmZDQ2YTBjMDgxYjVi
YmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAKQEAgLTMwLDM0ICszMCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1w
LCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9v
bCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcs
IGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLXsKLSAg
ICBtX2RhdGEudGltZXN0YW1wID0gdGltZXN0YW1wOwotICAgIG1fZGF0YS5sYXRpdHVkZSA9IGxh
dGl0dWRlOwotICAgIG1fZGF0YS5sb25naXR1ZGUgPSBsb25naXR1ZGU7Ci0gICAgbV9kYXRhLmFj
Y3VyYWN5ID0gYWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZSA9IHByb3Zp
ZGVzQWx0aXR1ZGU7Ci0gICAgbV9kYXRhLmFsdGl0dWRlID0gYWx0aXR1ZGU7Ci0gICAgbV9kYXRh
LmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5Owot
ICAgIG1fZGF0YS5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2Rh
dGEuY2FuUHJvdmlkZUhlYWRpbmcgPSBwcm92aWRlc0hlYWRpbmc7Ci0gICAgbV9kYXRhLmhlYWRp
bmcgPSBoZWFkaW5nOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQgPSBwcm92aWRlc1NwZWVk
OwotICAgIG1fZGF0YS5zcGVlZCA9IHNwZWVkOwotfQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKK1Jl
ZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUo
R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCiB7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9u
UG9zaXRpb24pKSk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBJUEM6OlNpbXBsZUFyZ3Vt
ZW50Q29kZXI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YT46OmVuY29kZShlbmNvZGVyLCAq
dGhpcyk7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YSYgZGF0YSkKK1dlYkdlb2xvY2F0aW9uUG9zaXRpb246
On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKLSAgICByZXR1cm4gSVBDOjpTaW1wbGVBcmd1
bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+OjpkZWNvZGUoZGVjb2Rlciwg
ZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDFkZDc5ODliY2MwM2Q0MDAwMGRjZDlj
YzI2OTRjYmFiY2ZmZTQ2MDEuLjQxOGFjMzYzMTQ3ZTQ0MDllNDJkZmZjMWFkODFiMTRiMWM1Mjhl
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgs
NTYgKzM5LDI4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbj4gewogcHVibGljOgotICAgIHN0cnVjdCBEYXRhIHsKLSAgICAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlY29k
ZShJUEM6OkRlY29kZXImLCBEYXRhJik7Ci0KLSAgICAgICAgZG91YmxlIHRpbWVzdGFtcDsKLSAg
ICAgICAgZG91YmxlIGxhdGl0dWRlOwotICAgICAgICBkb3VibGUgbG9uZ2l0dWRlOwotICAgICAg
ICBkb3VibGUgYWNjdXJhY3k7Ci0KLSAgICAgICAgZG91YmxlIGFsdGl0dWRlOwotICAgICAgICBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgZG91YmxlIGhlYWRpbmc7Ci0gICAgICAg
IGRvdWJsZSBzcGVlZDsKLQotICAgICAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZTsKLSAgICAg
ICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgYm9vbCBjYW5Qcm92
aWRlSGVhZGluZzsKLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlU3BlZWQ7Ci0gICAgfTsKLQotICAg
IHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3Rh
bXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0
dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGlu
ZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbih0
aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRl
LCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBw
cm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7Ci0gICAgfQor
ICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24mJik7CiAKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvblBvc2l0
aW9uKCk7CiAKLSAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnRp
bWVzdGFtcDsgfQotICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5s
YXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
bG9uZ2l0dWRlOyB9Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmFjY3VyYWN5OyB9CisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fY29y
ZVBvc2l0aW9uLnRpbWVzdGFtcDsgfQorICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxvbmdpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1
cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFjY3VyYWN5OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRp
b24uYWx0aXR1ZGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3k7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBv
c2l0aW9uLmhlYWRpbmc7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5zcGVlZDsgfQogCi0gICAgYm9vbCBjYW5Qcm92aWRl
QWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY2FuUHJvdmlkZUFsdGl0dWRlOyB9Ci0g
ICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0dWRlOyB9Ci0K
LSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeTsgfQotCi0gICAg
Ym9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRl
SGVhZGluZzsgfQotICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhl
YWRpbmc7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNhblByb3ZpZGVTcGVlZDsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5zcGVlZDsgfQotCi0gICAgY29uc3QgRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mIGNvcmVQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uOyB9CiAKIHByaXZhdGU6Ci0g
ICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0
dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3Vi
bGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5n
LCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCk7CisgICAgZXhwbGljaXQgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYgZ2VvbG9jYXRp
b25Qb3NpdGlvbikKKyAgICAgICAgOiBtX2NvcmVQb3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9u
UG9zaXRpb24pKQorICAgIHsKKyAgICB9CiAKLSAgICBEYXRhIG1fZGF0YTsKKyAgICBXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uIG1fY29yZVBvc2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dl
b2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tH
ZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCA1N2ZiZGNmZDNlZTZlOTk5ZDJkNWQzYjFkMDM1
OTUyMjBhZmRjNGVkLi4zMjQxZDcyN2QzYzU3MTYyOTU2M2IxYTE5N2JiOTI1MzdjZGYyYTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9z
aXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDE2IEBAIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJl
ZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxh
CiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVf
Yihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9v
bCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRv
dWJsZSBzcGVlZCkKIHsKLSAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3Zp
ZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRl
QWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQp
OworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0
YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGlmIChwcm92aWRlc0Fs
dGl0dWRlKQorICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKKyAgICBp
ZiAocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQorICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1
ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgaWYgKHByb3ZpZGVzSGVhZGluZykK
KyAgICAgICAgY29yZVBvc2l0aW9uLmhlYWRpbmcgPSBoZWFkaW5nOworICAgIGlmIChwcm92aWRl
c1NwZWVkKQorICAgICAgICBjb3JlUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKworICAgIGF1dG8g
cG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9z
aXRpb24pKTsKICAgICByZXR1cm4gdG9BUEkoJnBvc2l0aW9uLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Q
b3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tCmluZGV4IDhlZWZiZWNjNzRjY2NiMTc0MDlhY2ZhMTcyOGM5YmI5MzA5
MjZiZmEuLjZmODE5ZGYxNDc1NzZlZmU1OTViODk3YzBkYjJkZGMzMzQ3ZjE4ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tCkBAIC0zOSwyOSArMzksNyBAQCArIChpbnN0YW5jZXR5cGUpcG9zaXRp
b25XaXRoTG9jYXRpb246KENMTG9jYXRpb24gKilsb2NhdGlvbgogICAgIGlmICghbG9jYXRpb24p
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZSA9IHRy
dWU7Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHRydWU7Ci0gICAgZG91
YmxlIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIGlmIChhbHRpdHVkZUFjY3Vy
YWN5IDwgMC4wKSB7Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNlOwotICAgICAg
ICBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wg
Y2FuUHJvdmlkZVNwZWVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc3BlZWQgPSBsb2NhdGlvbi5zcGVl
ZDsKLSAgICBpZiAoc3BlZWQgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVTcGVlZCA9IGZhbHNl
OwotCi0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZyA9IHRydWU7Ci0gICAgZG91YmxlIGhlYWRp
bmcgPSBsb2NhdGlvbi5jb3Vyc2U7Ci0gICAgaWYgKGhlYWRpbmcgPCAwLjApCi0gICAgICAgIGNh
blByb3ZpZGVIZWFkaW5nID0gZmFsc2U7Ci0KLSAgICBDTExvY2F0aW9uQ29vcmRpbmF0ZTJEIGNv
b3JkaW5hdGUgPSBsb2NhdGlvbi5jb29yZGluYXRlOwotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBs
b2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwOwotCi0gICAgcmV0dXJuIFt3
cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGNvb3JkaW5h
dGUubGF0aXR1ZGUsIGNvb3JkaW5hdGUubG9uZ2l0dWRlLCBsb2NhdGlvbi5ob3Jpem9udGFsQWNj
dXJhY3ksIGNhblByb3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFj
Y3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVhZGluZywgY2Fu
UHJvdmlkZVNwZWVkLCBzcGVlZCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IFt3cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uIHsgbG9jYXRpb24gfSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAppbmRleCBkYjc3ZjM4
OTBjNTVkMzY2MTg2MjZhM2ViY2U1ZGFlOTZlYzRlMGUyLi43YjAzNWY4ZmZjNWZhZDUyOWEzOTQz
NGMwZWIwZWI0OWJhZDc2ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcApAQCAtODEs
NyArODEsMTAgQEAgdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wVXBkYXRpbmco
KQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdl
ZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSkKIHsK
LSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSwgdHJ1ZSwgYWx0aXR1ZGUsIHRydWUsIGFsdGl0dWRlQWNjdXJhY3ksIGZhbHNlLCAwLCBm
YWxzZSwgMCk7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0
YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGNvcmVQb3NpdGlvbi5h
bHRpdHVkZSA9IGFsdGl0dWRlOworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VycmFjeSA9
IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBv
c2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0
aW9uKSk7CiAgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRp
b24ocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggODdiMjk2ODZiYmU1NmZm
ZTM0ZWU3MzQ5YzFmOGE5MGJmNjhhMjAxOS4uNTJiMDExZjVkYmFjNmNkNmI3MDczYjgyMDU0NmZi
NjI2ZTIxYTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQ
SUdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05MCw3ICs5MSw3IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24tPmRhdGEoKSkp
OworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi0+Y29yZVBvc2l0aW9u
KCkpKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCmluZGV4IGMzN2IzMzE0MTNmYjNlMmFmMzZhYzIwMDZjMWUzOTI4NTRmNzQ3YWEuLjg5
MmRlZTEzZTE2OTNiNjhjN2MzMTU2YjMyNGQyNmVmODE4NTE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpA
QCAtNzQsMTEgKzc0LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+LCBVSVdpbmRvdyop
OwogfTsKIAotc3RhdGljIGlubGluZSBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4ga2l0KFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQotewotICAgIHJldHVybiBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUocG9zaXRpb24tPnRpbWVzdGFtcCgpLCBwb3NpdGlv
bi0+bGF0aXR1ZGUoKSwgcG9zaXRpb24tPmxvbmdpdHVkZSgpLCBwb3NpdGlvbi0+YWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGUoKSwg
cG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5hbHRpdHVk
ZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBwb3NpdGlvbi0+aGVh
ZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9uLT5zcGVlZCgpKTsK
LX0KLQogc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gb3JpZ2luOwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBmcmFtZTsKQEAgLTMw
NCwxMCArMjk5LDEwIEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAg
ICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwogfQogCi0tICh2
b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiAqKWNvcmVQ
b3NpdGlvbgorLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24mJiljb3JlUG9zaXRpb24KIHsKICAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBhdXRv
IHBvc2l0aW9uID0ga2l0KGNvcmVQb3NpdGlvbik7CisgICAgYXV0byBwb3NpdGlvbiA9IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwogICAgIFtf
bGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBwZXIocG9zaXRpb24uZ2V0KCkpXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCBkMzZlNjhkNWE4NjU1MjY4MmYxNjMyNjk1
ZTFjYjk2MjU4M2Q3NzQ0Li45NTY3NTE4MGM0M2EwYzE2NGViMmE1MDRiY2YwMTAzMmNmODc3NWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtOTEsMTkgKzkxLDE3IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBh
Z2UmIHBhZ2UsIGJvb2wgZW5hCiAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6RGF0YSYgZGF0YSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uJiBwb3NpdGlvbikK
IHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+IHBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGRhdGEudGltZXN0YW1w
LCBkYXRhLmxhdGl0dWRlLCBkYXRhLmxvbmdpdHVkZSwgZGF0YS5hY2N1cmFjeSwgZGF0YS5jYW5Q
cm92aWRlQWx0aXR1ZGUsIGRhdGEuYWx0aXR1ZGUsIGRhdGEuY2FuUHJvdmlkZUFsdGl0dWRlQWNj
dXJhY3ksIGRhdGEuYWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5jYW5Qcm92aWRlSGVhZGluZywgZGF0
YS5oZWFkaW5nLCBkYXRhLmNhblByb3ZpZGVTcGVlZCwgZGF0YS5zcGVlZCk7Ci0KICAgICBWZWN0
b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdlQ29weTsKICAgICBjb3B5VG9WZWN0b3IobV9wYWdl
U2V0LCB3ZWJQYWdlQ29weSk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogd2ViUGFnZUNvcHkpIHsK
ICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlv
bi5nZXQoKSk7CisgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+
Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKICNlbmRp
ZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRl
eCBkMWYzY2I3MzYwMDMxY2RlOWQyNGZiYzQ1ZjI5ZjUwY2M3OTA2ZTZiLi40ZjQ0N2FmMGEzNzQ2
NTQzOGY1ZjI5YjE3OGYwN2I2NjIzNzczZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBA
IC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdlb2xvY2F0aW9u
OworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02Miw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcGFnZVNldC5pc0VtcHR5KCk7IH0KICAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuaXNFbXB0eSgpOyB9
CiAKLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OkRhdGEmKTsKKyAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24mKTsKICAgICB2b2lkIGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9p
ZCByZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgppbmRleCAyNzE1NGY1YTM2ZWUzMDMyMWJhNWUxZDllMjcyZTg0MGNhYzc3MWU5Li45
N2RhMjg1NmJkMjlhNmUwNWNmNzcwZjVjYzI5ZTc3NjliNmQ0Mjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyIHsKLSAgICBEaWRDaGFu
Z2VQb3NpdGlvbihXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGEgcG9zaXRpb24p
OworICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gcG9z
aXRpb24pOwogICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3Nh
Z2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCAzYmM4ZGZjYjE0MDZiNzllODc2MDRmNTA5MzUz
NjhhNTk0MmQ0N2NlLi44OTEzMTNjZTlmYWE3NjNjNTE1NjljY2U5ZmNiOTg1YTRiNDMyODQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTY0LDEwICs2NCwxMCBAQCB2b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVk
KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyPigpLT5zZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKG1fcGFnZSwgZW5hYmxlZCk7
CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9z
aXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlv
bkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAxOTc3NzExMTNhNjlkNTQ3YjYz
OTE0YjMwMzczMjkyZjQ3MWNhZjAyLi5jZmU4ZDQyNDg1OWQ4ZjExNzBmYTg5ZTc2OTQwNjBiNzgy
MGQzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRp
b24mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2Mv
V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgKaW5kZXggODA5
NWQ1M2M3ODJiNDE5MTZiNTNlMGY4ZDZiMTMyMWZkZDMwYWIwNS4uMDQ5MGZjZmIxZGIwNGJmNmIw
MjRlOGU0MDk2NzU3MGY3YzVhYzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIC0gKHZvaWQp
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZDsKIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRGVuaWVkOwogCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiopcG9zaXRpb247CistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKXBvc2l0aW9uOwogLSAodm9pZCllcnJvck9jY3Vy
cmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZTsKIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbjsK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQppbmRleCBhZWQ5NTYyMWM3
ODUxZDM1NzE0MjBjMGM2MjUxN2ZhYjI1MDUzNjA2Li5kOWYwMzNhN2Q3MjBhMTRlMTEzMjE2NzIw
ZjZmMGI2Mzg0ZWExMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCkBA
IC0xNjUsMjkgKzE2NSw3IEBAIC0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIgZGlkQ2hhbmdlQXV0aG9yaXphdGlvblN0YXR1CiAKIC0gKHZvaWQpc2Vu
ZExvY2F0aW9uOihDTExvY2F0aW9uICopbmV3TG9jYXRpb24KIHsKLSAgICAvLyBOb3JtYWxpemUu
Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlk
ZUFsdGl0dWRlQWNjdXJhY3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IG5ld0xvY2F0
aW9uLmFsdGl0dWRlOwotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbmV3TG9jYXRpb24u
dmVydGljYWxBY2N1cmFjeTsKLSAgICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAg
ICAgICBjYW5Qcm92aWRlQWx0aXR1ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0
dWRlQWNjdXJhY3kgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9
IHRydWU7Ci0gICAgZG91YmxlIHNwZWVkID0gbmV3TG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNw
ZWVkIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wg
Y2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVlOwotICAgIGRvdWJsZSBoZWFkaW5nID0gbmV3TG9jYXRp
b24uY291cnNlOwotICAgIGlmIChoZWFkaW5nIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVh
ZGluZyA9IGZhbHNlOwotCi0gICAgZG91YmxlIHRpbWVzdGFtcCA9IFtuZXdMb2NhdGlvbi50aW1l
c3RhbXAgdGltZUludGVydmFsU2luY2UxOTcwXTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3Np
dGlvbj4gZ2VvbG9jYXRpb25Qb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0
aW1lc3RhbXAsIG5ld0xvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUsIG5ld0xvY2F0aW9uLmNv
b3JkaW5hdGUubG9uZ2l0dWRlLCBuZXdMb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3ksIGNhblBy
b3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBhbHRp
dHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVhZGluZywgY2FuUHJvdmlkZVNwZWVk
LCBzcGVlZCk7Ci0gICAgW19wb3NpdGlvbkxpc3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDpnZW9sb2Nh
dGlvblBvc2l0aW9uLmdldCgpXTsKKyAgICBbX3Bvc2l0aW9uTGlzdGVuZXIgcG9zaXRpb25DaGFu
Z2VkOkdlb2xvY2F0aW9uUG9zaXRpb24geyBuZXdMb2NhdGlvbiB9XTsKIH0KIAogLSAodm9pZCls
b2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2Nh
dGlvbnM6KE5TQXJyYXkgKilsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCAwZDUzYWYw
Mzg1YmM0MTgzYWY4Njg2YjZjMzc0M2RiNWZjNWMxNDhhLi4xZDI4MGMxYWNkNTkxZTdjMWFlYzY4
OWFiN2EyMzQ0NjgzYWJiNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9N
aXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00NCw3ICs0NCw3IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIChJbnRlcm5hbCkKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVm
UHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CistIChp
ZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAogLy8gQ29yZUxvY2F0aW9uIHJ1bnMgaW4gdGhl
IG1haW4gdGhyZWFkLiBXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIGxpdmVzIG9uIHRoZSBXZWJU
aHJlYWQuCkBAIC0zNjEsOSArMzYxLDkgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWQKICAgICB9KTsKIH0KIAotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24qKXBvc2l0aW9uCistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDoo
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKXBvc2l0aW9uCiB7Ci0gICAgUmV0YWluUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYlBvc2l0aW9uID0gYWRvcHROUyhbW1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjpwb3NpdGlv
bl0pOworICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3ZWJQb3NpdGlvbiA9
IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0
aW9uUG9zaXRpb246V1RGTW92ZShwb3NpdGlvbildKTsKICAgICBXZWJUaHJlYWRSdW4oXnsKICAg
ICAgICAgW19wcm92aWRlciBwb3NpdGlvbkNoYW5nZWQ6d2ViUG9zaXRpb24uZ2V0KCldOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzM2MDI0OTEwZWMxNTE4ODJiNjRh
ODZiOTg5MDUzMGNlOTI3ZWZjOC4uMjBjNDM0MzEwNzg3YWJhZGIwMjI2MDM5NWI3OTIwODc2Mzc4
YjQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZSB7IH0KICNl
bmRpZgogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
PiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
V2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5tbQppbmRleCAwY2IyYmU5OTFlMTc0ODk5MTI0OWVkZDFiYzlmZWVmNTVh
YmYzYTgwLi4yZWYzZGI2MjM5YzE5NDQ1YTA3NTA4MTUzMGU4M2JjYTQwMjcxYmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9u
KiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7
CiAgICAgcmV0dXJuIGNvcmUoW1ttX3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIGxhc3RQ
b3NpdGlvbl0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCmluZGV4IDQ1NmQ0YmE4YmRmMGU3MTY0NDkw
NzUzMjFmOWVkZDRmMDg0NWRmYTAuLjM3NDU5YzZiODU4NDdjNjEzNWFhODYxYjUxNGExMGQ2NGE4
NmExYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KQEAgLTI2LDI0ICsyNiwyNCBAQAogI2ltcG9ydCAi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KLQogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZh
Y2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIDogTlNPYmplY3QKIHsKIEBwdWJsaWMK
LSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gX3Bvc2l0aW9uOworICAgIEdlb2xvY2F0
aW9uUG9zaXRpb24gX3Bvc2l0aW9uOwogfQogCi0tIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlv
blBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0
aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbAogCi0tIChpZClpbml0V2l0aENv
cmVHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbgorLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlv
bjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCiB7CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC01Niw5ICs1NiwxMSBAQCBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAKLUdlb2xvY2F0
aW9uUG9zaXRpb24qIGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pCitzdGQ6
Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biAqcG9zaXRpb24pCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uID8gcG9zaXRpb24tPl9pbnRlcm5h
bC0+X3Bvc2l0aW9uLmdldCgpIDogMDsKKyAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBwb3NpdGlvbi0+X2ludGVybmFsLT5fcG9zaXRp
b247CiB9CiAKIC0gKGlkKWluaXRXaXRoVGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIGxhdGl0
dWRlOihkb3VibGUpbGF0aXR1ZGUgbG9uZ2l0dWRlOihkb3VibGUpbG9uZ2l0dWRlIGFjY3VyYWN5
Oihkb3VibGUpYWNjdXJhY3kKQEAgLTY2LDExICs2OCwxMSBAQCAtIChpZClpbml0V2l0aFRpbWVz
dGFtcDooZG91YmxlKXRpbWVzdGFtcCBsYXRpdHVkZTooZG91YmxlKWxhdGl0dWRlIGxvbmdpdHVk
ZTooZAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIF9pbnRlcm5hbCA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVy
bmFsIGFsbG9jXSBpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOkdlb2xvY2F0aW9uUG9z
aXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KV07
CisgICAgX2ludGVybmFsID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgYWxsb2Nd
IGluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246R2VvbG9jYXRpb25Qb3NpdGlvbiB7IHRp
bWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfV07CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xv
Y2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24KKy0gKGlkKWluaXRXaXRo
R2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaAppbmRleCBmNTRlNjZiODFlMTk5YjQ0NDA5NTgw
NmQwNGIxMTAzZjI2ZGE1MDkyLi4yNmMzMmIxMjZkZjI0MzI1ZmRjZTk5YjdiODZhOGM3NTk4MmNk
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKQEAgLTI0LDEwICsyNCwxMSBA
QAogICovCiAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIH0KIAotV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogY29yZShXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uICopOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAppbmRleCBiYTI4NmM4ZDk3NTk3Mjg4ZGI4ZWQxODViMjA4ZmE5Nzgz
MDBkMTBlLi5iYTNmMzQxZWQxZWQ3MWZlOWE1MGYzZmE0NWFmNDU5MWYzOTQzNzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02NCwxNCArNjQsMTQgQEAgdm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKICAgICBwcm92aWRlci0+dW5yZWdpc3Rlcldl
YlZpZXcobV93ZWJWaWV3LmdldCgpKTsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2Vv
bG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9u
UG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIENP
TVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRCht
X3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIENPTVB0cjxJV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbj4gcG9zaXRpb247CiAgICAgaWYgKEZBSUxFRChwcm92aWRlci0+bGFzdFBv
c2l0aW9uKCZwb3NpdGlvbikpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gY29yZShwb3NpdGlvbi5nZXQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDdiMWJmNDg3YWFjNzAzMzRlMzUxNWQ3MzQxZTI2NjBh
MTdkZTAxNmIuLmY2MmY1YzBkZTEzYWY4MzNlNmNiODY3ZjczMmVmNTU5NWZiOTg2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdGFydFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KLSAgICBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIGZp
bmFsOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9j
YXRpb24mKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNGQ2MzE4NTYxMTA0NWQwM2Y2M2M3NjA4OTU0Yzk5
NTZjNjNmYTVmZS4uMGQ2Yjc4NGUwNzUwMzEwOGMwMzg2NzA1OGUxNmIzOTVjYmY4ZmVkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKQEAgLTgxLDE4ICs4MSwxOCBAQCBVTE9ORyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpSZWxl
YXNlKCkKIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjppbml0V2l0aFRpbWVzdGFt
cChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSkKIHsKLSAgICBtX3Bvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOworICAgIG1f
cG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uIHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9u
Z2l0dWRlLCBhY2N1cmFjeSB9OwogICAgIHJldHVybiBTX09LOwogfQogCi1HZW9sb2NhdGlvblBv
c2l0aW9uKiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3N0ZDo6b3B0
aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiog
cG9zaXRpb24pCiB7CiAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbj4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbihRdWVyeSwgcG9zaXRpb24pOwogICAgIGlmICgh
d2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbi0+aW1w
bCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oCmluZGV4IDc5OGFiODA4N2Q5YzdlZjBmOGNkMTFhZjYzODhhZjM5OGVmODkyYzcuLjZm
MWZjMWRjYjM3MGIyNjJkNzQxZjdjOWVkMzAzM2ZmYjljOWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTQ4LDEzICs0OCwx
MyBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVz
dGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kp
OwogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogaW1wbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24uZ2V0KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24+JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiBw
cml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24+IG1fcG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bvc2l0aW9uOwogfTsKIAotV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiogY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOworc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKElXZWJHZW9sb2NhdGlv
blBvc2l0aW9uKik7CiAKICNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uX2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNWFkYmVjNTMz
ZmU5MjMzMjEzMWZkZjA5MGUzMjY2NjczYmFlODQ3Li5iODM2MWNlMjczMjg5NTZhNjcyYzU5Yjdl
ZmIxNGZhNTZlZTdjMTk0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKwogMjAxNy0xMC0xMCAgSm9hbm1hcmllIERpZ2dzICA8amRp
Z2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFtBVEtdIEFSSUEgZm9ybSByb2xlIHNob3Vs
ZCBiZSBtYXBwZWQgdG8gQVRLX1JPTEVfTEFORE1BUks7IG5vdCBBVEtfUk9MRV9GT1JNCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGE2MTEwZDkxNjYxY2I1
ZTZiZThjNDRhYTczN2Q1NzI4ZTA3Y2NhNWIuLjYzM2U0Nzc4MTlmNmJjNjYzMmVlOTZlNDcxMTZj
ZTk5YjhjM2UwMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiAoSW50ZXJuYWwpCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRp
b246KFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiBUZXN0
UnVubmVyOjp+VGVzdFJ1bm5lcigpCkBAIC00NDksOCArNDQ5LDE2IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBkCiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgogICAgICAgICBwb3Np
dGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6
Y3VycmVudFRpbWUoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3Vy
YWN5OmFjY3VyYWN5XTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uID0gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRU
aW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBh
bHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92
aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKLSAgICAgICAgcG9z
aXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRp
b25Qb3NpdGlvbjooV1RGTW92ZShjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKKyAgICAgICAg
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBnZW9sb2NhdGlvblBvc2l0aW9uIHsgY3VycmVu
dFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKKyAgICAgICAgaWYgKHBy
b3ZpZGVzQWx0aXR1ZGUpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRl
ID0gYWx0aXR1ZGU7CisgICAgICAgIGlmIChwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCisgICAg
ICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFj
Y3VyYWN5OworICAgICAgICBpZiAocHJvdmlkZXNIZWFkaW5nKQorICAgICAgICAgICAgZ2VvbG9j
YXRpb25Qb3NpdGlvbi5oZWFkaW5nID0gaGVhZGluZzsKKyAgICAgICAgaWYgKHByb3ZpZGVzU3Bl
ZWQpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLnNwZWVkID0gc3BlZWQ7CisgICAg
ICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdl
b2xvY2F0aW9uUG9zaXRpb246KFdURk1vdmUoZ2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKICAgICB9
CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0
aW9uXTsKICAgICBbcG9zaXRpb24gcmVsZWFzZV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323378</attachid>
            <date>2017-10-10 20:32:44 -0700</date>
            <delta_ts>2017-10-10 20:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010203243.patch</filename>
            <type>text/plain</type>
            <size>65011</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uMGI1YTFmYTVjNjY5NzhiMDY3NWIxN2U1YzEwNDBk
NDMzYzJlOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlOgorICAgICAgICAtIFVzZSBzdGQ6Om9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBzZXBhcmF0ZSBib29sZWFuIG1lbWJlcnMKKyAgICAgICAgLSBNYWtlIEdl
b2xvY2F0aW9uUG9zaXRpb24gYSBzaW1wbGUgc3RydWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB2aWEg
SVBDCisgICAgICAgIC0gUmVwbGFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHdpdGgg
R2VvbG9jYXRpb25Qb3NpdGlvbgorICAgICAgICAtIE1vdmUgbG9naWMgdG8gY29uc3RydWN0IGEg
R2VvbG9jYXRpb25Qb3NpdGlvbiBmcm9tIGEgQ0xMb2NhdGlvbiBvbiBpT1MKKyAgICAgICAgICBp
biBvbmUgcGxhY2UgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OkNvb3JkaW5hdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmxhdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVzOjpsb25naXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVhZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246
Okdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xs
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oOgorCisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmVhbGx5IGZpeCB0aGUgYnVpbGQgd2l0aCBjZXJ0YWluIFNE
S3MuCiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIyMjMxNTQsIHdoaWNoIGZpeGVkIHRoZSB3cm9u
ZyBsYW1iZGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMjY2ZGZjYmI3ZjIwYjU5OWNjZjRmZGI4MGI2MDEwZTJl
YTIwYTguLjU5M2Y0MGVhNmQ2NjM2ZjBiYjBkNTk4YTEwYzBlY2IxMjYwMmQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp0aW1lc3Rh
bXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpsYXRp
dHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Omxv
bmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlv
blByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEzMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTkyMDllOTNiOTEwYjJiOTZm
NTllLi4zZDJhOWRiZjJjMGViMDkzZGQ2N2NmMGEzZTUzMmQ1MDk1YWZiN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBNaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2VuZExvY2F0aW9uOl0pOgorICAgICAgICAq
IE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bX1dlYkNvcmVM
b2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpdKToKKwogMjAxNy0x
MC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDA1YjRiY2Y5ZDdiNWRhMGFmOTBiODMyZmNiMjMzMGM3NTdmMS4uZmZjZTFh
NjkzZmY0NjYyM2VjNjAyZmMyNDJlY2I3N2Y5OTkyZjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBpbml0V2l0aFRpbWVzdGFtcDpsYXRpdHVkZTpsb25naXR1ZGU6YWNj
dXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmg6CisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggODQyODg1YWZhNzZmMjYxZGU3YTQ5NGQ0
NzQwZGY4ZGYxMDIxMTRlZi4uNWUxMGY0YWEwZDBkZTA2ZTRiYWYwMGQwNDMwODY1ZWUwZjUyY2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEw
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRX
aXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwgY29uc3Qp
OgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpjb29raWVzRW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nv
b3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRp
bmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcu
LjlhYzcyNmU5MWIxNTcwNGEzNGYyNGMwYzAyN2JkMjUzYzhhMDgzMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwz
MiArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorQ29vcmRpbmF0ZXM6OkNvb3JkaW5hdGVz
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKKyAgICA6IG1fcG9zaXRpb24oV1RGTW92
ZShwb3NpdGlvbikpCiB7Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9hbHRpdHVkZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG1faGVhZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpzcGVlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vQ29vcmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVh
MDYzODMyLi4yNzYzNzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5h
dGVzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91Ymxl
IGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENvb3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGUsIGFsdGl0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVk
ZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVk
KSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3Np
dGlvbiYmIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZXMoV1RGTW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0
ZXM+IGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0
ZXM6OmNyZWF0ZShtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUs
IG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1f
YWx0aXR1ZGVBY2N1cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblBy
b3ZpZGVTcGVlZCwgbV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRl
KCBHZW9sb2NhdGlvblBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxv
bmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZUFjY3VyYWN5KCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBj
b25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24uYWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29y
ZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkK
LSAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNj
dXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpCi0gICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChz
cGVlZCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5KQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAg
ZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBt
X2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAg
ICAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9v
bCBtX2NhblByb3ZpZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFi
Y2U0YzAwNWFjMWQ2MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAz
ZWY3OTA0NTdlZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdl
b2xvY2F0CiBzdGF0aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtd
ID0gIkdlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwog
c3RhdGljIGNvbnN0IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNz
YWdlW10gPSAiT3JpZ2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRp
b24gc2VydmljZSI7CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0
aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Q
cm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlv
bi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBv
c2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRl
SGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVk
KCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0
aW9uLT50aW1lc3RhbXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBH
ZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52
YWx1ZSgpKSksIHRpbWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3Jl
YXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMs
NyBAQCBHZW9wb3NpdGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRl
R2VvcG9zaXRpb24oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5
MzkwOGMzYWYwLi5mNzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRp
b247CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdl
YktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAg
ICAvLyBpcyBwdWJsaXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRj
ZDA1NDY5N2Q3ZGIxYWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4
Yzk2YTY5NzBjMzE2YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTks
NyArOTksNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9y
OwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9y
T2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRF
cnJvcihlcnJvcik7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG9jYXRpb25Db250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQ
b3NpdGlvbi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAg
IGlmIChtX2xhc3RQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5i
NjVkNjBkNTQxZWM1Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2Vv
bG9jYXRpb24mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAg
IEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2
ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdo
IGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNj
OWVkZTJhOGE2NzBkMzA1NzdiMWRiMDM1ZGJjZDYuLjVjMzU2MGUzNGRjZjJjZDliZmQ0NGZmNzRm
MTE2Y2NkNGMyNDk1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4MSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JK
Q19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9z
aXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0
aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFj
eShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJv
dmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVl
ZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91Ymxl
IGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25n
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgLTEgfTsKIAotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQWx0
aXR1ZGU7IH0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVIZWFkaW5nOyB9Ci0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVTcGVlZDsgfQor
ICAgIGRvdWJsZSBsYXRpdHVkZSB7IC0xIH07CisgICAgZG91YmxlIGxvbmdpdHVkZSB7IC0xIH07
CisgICAgZG91YmxlIGFjY3VyYWN5IHsgLTEgfTsKIAotcHJpdmF0ZToKLSAgICBHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgICAgICA6IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
LSAgICAgICAgLCBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQotICAgICAgICAsIG1fYWx0
aXR1ZGUoMCkKLSAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAgICAgLCBtX2hl
YWRpbmcoMCkKLSAgICAgICAgLCBtX3NwZWVkKDApCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0
aXR1ZGUoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeShmYWxz
ZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
UHJvdmlkZVNwZWVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZDsKIAotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5n
LCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi0gICAg
ICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJh
Y3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKLSAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKLSAgICAgICAgLCBtX3NwZWVkKHNwZWVkKQotICAgICAgICAsIG1fY2FuUHJvdmlk
ZUFsdGl0dWRlKHByb3ZpZGVzQWx0aXR1ZGUpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeShwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgICwgbV9jYW5Qcm92
aWRlSGVhZGluZyhwcm92aWRlc0hlYWRpbmcpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
cHJvdmlkZXNTcGVlZCkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdlb2xvY2F0aW9uUG9zaXRpb24mKTsKK307
CiAKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBHZW9sb2NhdGlvblBvc2l0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHRpbWVzdGFtcDsKKyAgICBlbmNvZGVyIDw8IGxhdGl0dWRlOworICAg
IGVuY29kZXIgPDwgbG9uZ2l0dWRlOworICAgIGVuY29kZXIgPDwgYWNjdXJhY3k7CisgICAgZW5j
b2RlciA8PCBhbHRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFsdGl0dWRlQWNjdXJhY3k7CisgICAg
ZW5jb2RlciA8PCBoZWFkaW5nOworICAgIGVuY29kZXIgPDwgc3BlZWQ7Cit9CiAKLSAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKLSAgICBkb3VibGUgbV9sb25naXR1ZGU7Ci0gICAgZG91YmxlIG1fYWNj
dXJhY3k7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGU7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBkb3VibGUgbV9oZWFkaW5nOwotICAgIGRvdWJsZSBtX3NwZWVkOwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24udGltZXN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubGF0aXR1ZGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5sb25naXR1ZGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5hY2N1cmFjeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvc2l0aW9uLmFsdGl0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmhlYWRpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5zcGVl
ZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1
ZGU7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OwotICAgIGJvb2wgbV9j
YW5Qcm92aWRlSGVhZGluZzsKLSAgICBib29sIG1fY2FuUHJvdmlkZVNwZWVkOwotfTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhhODQzNDJiMjQ3NDYyMTE3
YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAu
dGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0
ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVk
ZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBp
ZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUg
PSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjAp
CisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJz
ZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBlZDI2MmFjZDlkYS4uZDM3
NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU1MCw2ICszNTUw
LDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzYw
OUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAv
KiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Mzc5NjRDRjFG
OERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjcz
MDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBM
b2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4
NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtMTE4NzMs
NiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQgLyogRXJyb3JDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2
NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2
ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQx
RUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEw
IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdyb3VwIjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3NDZBRjExMTRGNERERTYw
MDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3
QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0RERFNjAwM0U3QTcwIC8q
IENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcgQEAKIAkJCQlDRDRCRTUy
QTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYyNTJFMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEyMjU4MWFhZjIxZTU3MDMy
ZGIyY2JiZGRiMjc0ZS4uZWNjMGExOGI3ZTc2NTJlMWUyMTAzNmJhYmU1Y2RkZTAzNzk0YmYwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcApAQCAtMTU2LDkgKzE1Niw5IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDM4CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRp
b24qIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24o
KQogewotICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0
UG9zaXRpb247CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNv
bnRyb2xsZXIoKQpAQCAtMTcyLDkgKzE3Miw5IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
Ojpjb250cm9sbGVyVGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAK
LSAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkpIHsKKyAgICBpZiAobV9sYXN0UG9zaXRpb24p
IHsKICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsKLSAgICAgICAgbV9jb250cm9sbGVyLT5w
b3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkpOworICAgICAgICBtX2NvbnRyb2xs
ZXItPnBvc2l0aW9uQ2hhbmdlZCgqbV9sYXN0UG9zaXRpb24pOwogICAgIH0gZWxzZSBpZiAobV9o
YXNFcnJvcikgewogICAgICAgICBhdXRvIGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJy
b3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9y
TWVzc2FnZSk7CiAgICAgICAgIG1fY29udHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlv
RXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggODVmYzAzODA2MTRmNGNkYzMyNGJhZjVmYTFhNjUy
NTE5NGEzNjYwYi4uYTU1NDE0MGVjOTgxMDY2ZDBjYjY0ZWFjYzRlODI0ZTI3OTIwYzYyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCkBAIC0zMiw2ICszMiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC00MCw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjsKLWNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAKIC8vIEZJ
WE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hvdWxkIGJlIG1vdmVkIHRv
IFdlYktpdC4KIC8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlvbiBj
bGllbnQuCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0VXBkYXRpbmco
KSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwotICAgIEdlb2xvY2F0aW9uUG9z
aXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlz
c2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIApAQCAtNzYsNyArNzYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xlYXJFcnJvcigpOwogCiAgICAgR2VvbG9jYXRpb25Db250cm9s
bGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2Fn
ZTsKICAgICBUaW1lciBtX2NvbnRyb2xsZXJUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggYmJmOWZhNTRjYTNjODM2M2RkZTU1
MGIzOGNiMTdmZjg4YWZhOWRmMy4uM2YxNTU4Yjc1MmJlZjhjOTJiNDE2OTZmZDQ2YTBjMDgxYjVi
YmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAKQEAgLTMwLDM0ICszMCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1w
LCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9v
bCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcs
IGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLXsKLSAg
ICBtX2RhdGEudGltZXN0YW1wID0gdGltZXN0YW1wOwotICAgIG1fZGF0YS5sYXRpdHVkZSA9IGxh
dGl0dWRlOwotICAgIG1fZGF0YS5sb25naXR1ZGUgPSBsb25naXR1ZGU7Ci0gICAgbV9kYXRhLmFj
Y3VyYWN5ID0gYWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZSA9IHByb3Zp
ZGVzQWx0aXR1ZGU7Ci0gICAgbV9kYXRhLmFsdGl0dWRlID0gYWx0aXR1ZGU7Ci0gICAgbV9kYXRh
LmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5Owot
ICAgIG1fZGF0YS5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2Rh
dGEuY2FuUHJvdmlkZUhlYWRpbmcgPSBwcm92aWRlc0hlYWRpbmc7Ci0gICAgbV9kYXRhLmhlYWRp
bmcgPSBoZWFkaW5nOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQgPSBwcm92aWRlc1NwZWVk
OwotICAgIG1fZGF0YS5zcGVlZCA9IHNwZWVkOwotfQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKK1Jl
ZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUo
R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCiB7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9u
UG9zaXRpb24pKSk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBJUEM6OlNpbXBsZUFyZ3Vt
ZW50Q29kZXI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YT46OmVuY29kZShlbmNvZGVyLCAq
dGhpcyk7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YSYgZGF0YSkKK1dlYkdlb2xvY2F0aW9uUG9zaXRpb246
On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKLSAgICByZXR1cm4gSVBDOjpTaW1wbGVBcmd1
bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+OjpkZWNvZGUoZGVjb2Rlciwg
ZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDFkZDc5ODliY2MwM2Q0MDAwMGRjZDlj
YzI2OTRjYmFiY2ZmZTQ2MDEuLjQxOGFjMzYzMTQ3ZTQ0MDllNDJkZmZjMWFkODFiMTRiMWM1Mjhl
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgs
NTYgKzM5LDI4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbj4gewogcHVibGljOgotICAgIHN0cnVjdCBEYXRhIHsKLSAgICAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlY29k
ZShJUEM6OkRlY29kZXImLCBEYXRhJik7Ci0KLSAgICAgICAgZG91YmxlIHRpbWVzdGFtcDsKLSAg
ICAgICAgZG91YmxlIGxhdGl0dWRlOwotICAgICAgICBkb3VibGUgbG9uZ2l0dWRlOwotICAgICAg
ICBkb3VibGUgYWNjdXJhY3k7Ci0KLSAgICAgICAgZG91YmxlIGFsdGl0dWRlOwotICAgICAgICBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgZG91YmxlIGhlYWRpbmc7Ci0gICAgICAg
IGRvdWJsZSBzcGVlZDsKLQotICAgICAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZTsKLSAgICAg
ICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgYm9vbCBjYW5Qcm92
aWRlSGVhZGluZzsKLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlU3BlZWQ7Ci0gICAgfTsKLQotICAg
IHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3Rh
bXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0
dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGlu
ZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbih0
aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRl
LCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBw
cm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7Ci0gICAgfQor
ICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24mJik7CiAKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvblBvc2l0
aW9uKCk7CiAKLSAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnRp
bWVzdGFtcDsgfQotICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5s
YXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
bG9uZ2l0dWRlOyB9Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmFjY3VyYWN5OyB9CisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fY29y
ZVBvc2l0aW9uLnRpbWVzdGFtcDsgfQorICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxvbmdpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1
cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFjY3VyYWN5OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRp
b24uYWx0aXR1ZGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3k7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBv
c2l0aW9uLmhlYWRpbmc7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5zcGVlZDsgfQogCi0gICAgYm9vbCBjYW5Qcm92aWRl
QWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY2FuUHJvdmlkZUFsdGl0dWRlOyB9Ci0g
ICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0dWRlOyB9Ci0K
LSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeTsgfQotCi0gICAg
Ym9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRl
SGVhZGluZzsgfQotICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhl
YWRpbmc7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmNhblByb3ZpZGVTcGVlZDsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5zcGVlZDsgfQotCi0gICAgY29uc3QgRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mIGNvcmVQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uOyB9CiAKIHByaXZhdGU6Ci0g
ICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0
dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3Vi
bGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5n
LCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCk7CisgICAgZXhwbGljaXQgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYgZ2VvbG9jYXRp
b25Qb3NpdGlvbikKKyAgICAgICAgOiBtX2NvcmVQb3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9u
UG9zaXRpb24pKQorICAgIHsKKyAgICB9CiAKLSAgICBEYXRhIG1fZGF0YTsKKyAgICBXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uIG1fY29yZVBvc2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dl
b2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tH
ZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCA1N2ZiZGNmZDNlZTZlOTk5ZDJkNWQzYjFkMDM1
OTUyMjBhZmRjNGVkLi4zMjQxZDcyN2QzYzU3MTYyOTU2M2IxYTE5N2JiOTI1MzdjZGYyYTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9z
aXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDE2IEBAIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJl
ZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxh
CiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVf
Yihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9v
bCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRv
dWJsZSBzcGVlZCkKIHsKLSAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3Zp
ZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRl
QWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQp
OworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0
YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGlmIChwcm92aWRlc0Fs
dGl0dWRlKQorICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKKyAgICBp
ZiAocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQorICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1
ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgaWYgKHByb3ZpZGVzSGVhZGluZykK
KyAgICAgICAgY29yZVBvc2l0aW9uLmhlYWRpbmcgPSBoZWFkaW5nOworICAgIGlmIChwcm92aWRl
c1NwZWVkKQorICAgICAgICBjb3JlUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKworICAgIGF1dG8g
cG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9z
aXRpb24pKTsKICAgICByZXR1cm4gdG9BUEkoJnBvc2l0aW9uLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Q
b3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tCmluZGV4IDhlZWZiZWNjNzRjY2NiMTc0MDlhY2ZhMTcyOGM5YmI5MzA5
MjZiZmEuLjZmODE5ZGYxNDc1NzZlZmU1OTViODk3YzBkYjJkZGMzMzQ3ZjE4ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tCkBAIC0zOSwyOSArMzksNyBAQCArIChpbnN0YW5jZXR5cGUpcG9zaXRp
b25XaXRoTG9jYXRpb246KENMTG9jYXRpb24gKilsb2NhdGlvbgogICAgIGlmICghbG9jYXRpb24p
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZSA9IHRy
dWU7Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHRydWU7Ci0gICAgZG91
YmxlIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIGlmIChhbHRpdHVkZUFjY3Vy
YWN5IDwgMC4wKSB7Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNlOwotICAgICAg
ICBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wg
Y2FuUHJvdmlkZVNwZWVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc3BlZWQgPSBsb2NhdGlvbi5zcGVl
ZDsKLSAgICBpZiAoc3BlZWQgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVTcGVlZCA9IGZhbHNl
OwotCi0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZyA9IHRydWU7Ci0gICAgZG91YmxlIGhlYWRp
bmcgPSBsb2NhdGlvbi5jb3Vyc2U7Ci0gICAgaWYgKGhlYWRpbmcgPCAwLjApCi0gICAgICAgIGNh
blByb3ZpZGVIZWFkaW5nID0gZmFsc2U7Ci0KLSAgICBDTExvY2F0aW9uQ29vcmRpbmF0ZTJEIGNv
b3JkaW5hdGUgPSBsb2NhdGlvbi5jb29yZGluYXRlOwotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBs
b2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwOwotCi0gICAgcmV0dXJuIFt3
cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGNvb3JkaW5h
dGUubGF0aXR1ZGUsIGNvb3JkaW5hdGUubG9uZ2l0dWRlLCBsb2NhdGlvbi5ob3Jpem9udGFsQWNj
dXJhY3ksIGNhblByb3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFj
Y3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVhZGluZywgY2Fu
UHJvdmlkZVNwZWVkLCBzcGVlZCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IFt3cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uIHsgbG9jYXRpb24gfSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAppbmRleCBkYjc3ZjM4
OTBjNTVkMzY2MTg2MjZhM2ViY2U1ZGFlOTZlYzRlMGUyLi43YjAzNWY4ZmZjNWZhZDUyOWEzOTQz
NGMwZWIwZWI0OWJhZDc2ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcApAQCAtODEs
NyArODEsMTAgQEAgdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9wVXBkYXRpbmco
KQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdl
ZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSkKIHsK
LSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSwgdHJ1ZSwgYWx0aXR1ZGUsIHRydWUsIGFsdGl0dWRlQWNjdXJhY3ksIGZhbHNlLCAwLCBm
YWxzZSwgMCk7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0
YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGNvcmVQb3NpdGlvbi5h
bHRpdHVkZSA9IGFsdGl0dWRlOworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VycmFjeSA9
IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBv
c2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0
aW9uKSk7CiAgICAgbV9nZW9sb2NhdGlvbk1hbmFnZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRp
b24ocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggODdiMjk2ODZiYmU1NmZm
ZTM0ZWU3MzQ5YzFmOGE5MGJmNjhhMjAxOS4uNTJiMDExZjVkYmFjNmNkNmI3MDczYjgyMDU0NmZi
NjI2ZTIxYTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQ
SUdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05MCw3ICs5MSw3IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24tPmRhdGEoKSkp
OworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi0+Y29yZVBvc2l0aW9u
KCkpKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRG
YWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCmluZGV4IGMzN2IzMzE0MTNmYjNlMmFmMzZhYzIwMDZjMWUzOTI4NTRmNzQ3YWEuLjg5
MmRlZTEzZTE2OTNiNjhjN2MzMTU2YjMyNGQyNmVmODE4NTE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpA
QCAtNzQsMTEgKzc0LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+LCBVSVdpbmRvdyop
OwogfTsKIAotc3RhdGljIGlubGluZSBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4ga2l0KFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQotewotICAgIHJldHVybiBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUocG9zaXRpb24tPnRpbWVzdGFtcCgpLCBwb3NpdGlv
bi0+bGF0aXR1ZGUoKSwgcG9zaXRpb24tPmxvbmdpdHVkZSgpLCBwb3NpdGlvbi0+YWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGUoKSwg
cG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5hbHRpdHVk
ZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBwb3NpdGlvbi0+aGVh
ZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9uLT5zcGVlZCgpKTsK
LX0KLQogc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gb3JpZ2luOwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBmcmFtZTsKQEAgLTMw
NCwxMCArMjk5LDEwIEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAg
ICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWRdOwogfQogCi0tICh2
b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiAqKWNvcmVQ
b3NpdGlvbgorLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24mJiljb3JlUG9zaXRpb24KIHsKICAgICBBU1NFUlQoX2xpc3RlbmVyKTsKLSAgICBhdXRv
IHBvc2l0aW9uID0ga2l0KGNvcmVQb3NpdGlvbik7CisgICAgYXV0byBwb3NpdGlvbiA9IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwogICAgIFtf
bGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBwZXIocG9zaXRpb24uZ2V0KCkpXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCBkMzZlNjhkNWE4NjU1MjY4MmYxNjMyNjk1
ZTFjYjk2MjU4M2Q3NzQ0Li45NTY3NTE4MGM0M2EwYzE2NGViMmE1MDRiY2YwMTAzMmNmODc3NWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtOTEsMTkgKzkxLDE3IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBh
Z2UmIHBhZ2UsIGJvb2wgZW5hCiAgICAgICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNob3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12
b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6RGF0YSYgZGF0YSkKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
OjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBHZW9sb2NhdGlvblBvc2l0aW9uJiBwb3NpdGlvbikK
IHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+IHBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGRhdGEudGltZXN0YW1w
LCBkYXRhLmxhdGl0dWRlLCBkYXRhLmxvbmdpdHVkZSwgZGF0YS5hY2N1cmFjeSwgZGF0YS5jYW5Q
cm92aWRlQWx0aXR1ZGUsIGRhdGEuYWx0aXR1ZGUsIGRhdGEuY2FuUHJvdmlkZUFsdGl0dWRlQWNj
dXJhY3ksIGRhdGEuYWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5jYW5Qcm92aWRlSGVhZGluZywgZGF0
YS5oZWFkaW5nLCBkYXRhLmNhblByb3ZpZGVTcGVlZCwgZGF0YS5zcGVlZCk7Ci0KICAgICBWZWN0
b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdlQ29weTsKICAgICBjb3B5VG9WZWN0b3IobV9wYWdl
U2V0LCB3ZWJQYWdlQ29weSk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogd2ViUGFnZUNvcHkpIHsK
ICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCi0gICAgICAgICAgICBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlv
bi5nZXQoKSk7CisgICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+
Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKICNlbmRp
ZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRl
eCBkMWYzY2I3MzYwMDMxY2RlOWQyNGZiYzQ1ZjI5ZjUwY2M3OTA2ZTZiLi40ZjQ0N2FmMGEzNzQ2
NTQzOGY1ZjI5YjE3OGYwN2I2NjIzNzczZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBA
IC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdlb2xvY2F0aW9u
OworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02Miw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1VwZGF0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcGFnZVNldC5pc0VtcHR5KCk7IH0KICAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hBY2N1cmFjeVBhZ2VTZXQuaXNFbXB0eSgpOyB9
CiAKLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OkRhdGEmKTsKKyAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24mKTsKICAgICB2b2lkIGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9p
ZCByZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgppbmRleCAyNzE1NGY1YTM2ZWUzMDMyMWJhNWUxZDllMjcyZTg0MGNhYzc3MWU5Li45
N2RhMjg1NmJkMjlhNmUwNWNmNzcwZjVjYzI5ZTc3NjliNmQ0Mjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyIHsKLSAgICBEaWRDaGFu
Z2VQb3NpdGlvbihXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGEgcG9zaXRpb24p
OworICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gcG9z
aXRpb24pOwogICAgIERpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3Nh
Z2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCAzYmM4ZGZjYjE0MDZiNzllODc2MDRmNTA5MzUz
NjhhNTk0MmQ0N2NlLi44OTEzMTNjZTlmYWE3NjNjNTE1NjljY2U5ZmNiOTg1YTRiNDMyODQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTY0LDEwICs2NCwxMCBAQCB2b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVk
KQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyPigpLT5zZXRFbmFibGVIaWdoQWNjdXJhY3lGb3JQYWdlKG1fcGFnZSwgZW5hYmxlZCk7
CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9z
aXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlv
bkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMu
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAxOTc3NzExMTNhNjlkNTQ3YjYz
OTE0YjMwMzczMjkyZjQ3MWNhZjAyLi5jZmU4ZDQyNDg1OWQ4ZjExNzBmYTg5ZTc2OTQwNjBiNzgy
MGQzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRp
b24mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2Mv
V2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgKaW5kZXggODA5
NWQ1M2M3ODJiNDE5MTZiNTNlMGY4ZDZiMTMyMWZkZDMwYWIwNS4uMDQ5MGZjZmIxZGIwNGJmNmIw
MjRlOGU0MDk2NzU3MGY3YzVhYzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIC0gKHZvaWQp
Z2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZDsKIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRo
b3JpemF0aW9uRGVuaWVkOwogCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiopcG9zaXRpb247CistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKXBvc2l0aW9uOwogLSAodm9pZCllcnJvck9jY3Vy
cmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZTsKIC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbjsK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQppbmRleCBhZWQ5NTYyMWM3
ODUxZDM1NzE0MjBjMGM2MjUxN2ZhYjI1MDUzNjA2Li5kOWYwMzNhN2Q3MjBhMTRlMTEzMjE2NzIw
ZjZmMGI2Mzg0ZWExMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCkBA
IC0xNjUsMjkgKzE2NSw3IEBAIC0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFu
YWdlciAqKW1hbmFnZXIgZGlkQ2hhbmdlQXV0aG9yaXphdGlvblN0YXR1CiAKIC0gKHZvaWQpc2Vu
ZExvY2F0aW9uOihDTExvY2F0aW9uICopbmV3TG9jYXRpb24KIHsKLSAgICAvLyBOb3JtYWxpemUu
Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlk
ZUFsdGl0dWRlQWNjdXJhY3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IG5ld0xvY2F0
aW9uLmFsdGl0dWRlOwotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbmV3TG9jYXRpb24u
dmVydGljYWxBY2N1cmFjeTsKLSAgICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAg
ICAgICBjYW5Qcm92aWRlQWx0aXR1ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0
dWRlQWNjdXJhY3kgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9
IHRydWU7Ci0gICAgZG91YmxlIHNwZWVkID0gbmV3TG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNw
ZWVkIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wg
Y2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVlOwotICAgIGRvdWJsZSBoZWFkaW5nID0gbmV3TG9jYXRp
b24uY291cnNlOwotICAgIGlmIChoZWFkaW5nIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVh
ZGluZyA9IGZhbHNlOwotCi0gICAgZG91YmxlIHRpbWVzdGFtcCA9IFtuZXdMb2NhdGlvbi50aW1l
c3RhbXAgdGltZUludGVydmFsU2luY2UxOTcwXTsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3Np
dGlvbj4gZ2VvbG9jYXRpb25Qb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0
aW1lc3RhbXAsIG5ld0xvY2F0aW9uLmNvb3JkaW5hdGUubGF0aXR1ZGUsIG5ld0xvY2F0aW9uLmNv
b3JkaW5hdGUubG9uZ2l0dWRlLCBuZXdMb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3ksIGNhblBy
b3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBhbHRp
dHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVhZGluZywgY2FuUHJvdmlkZVNwZWVk
LCBzcGVlZCk7Ci0gICAgW19wb3NpdGlvbkxpc3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDpnZW9sb2Nh
dGlvblBvc2l0aW9uLmdldCgpXTsKKyAgICBbX3Bvc2l0aW9uTGlzdGVuZXIgcG9zaXRpb25DaGFu
Z2VkOkdlb2xvY2F0aW9uUG9zaXRpb24geyBuZXdMb2NhdGlvbiB9XTsKIH0KIAogLSAodm9pZCls
b2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2Nh
dGlvbnM6KE5TQXJyYXkgKilsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCAwZDUzYWYw
Mzg1YmM0MTgzYWY4Njg2YjZjMzc0M2RiNWZjNWMxNDhhLi4xZDI4MGMxYWNkNTkxZTdjMWFlYzY4
OWFiN2EyMzQ0NjgzYWJiNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9N
aXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC00NCw3ICs0NCw3IEBA
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIChJbnRlcm5hbCkKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVm
UHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CistIChp
ZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAogLy8gQ29yZUxvY2F0aW9uIHJ1bnMgaW4gdGhl
IG1haW4gdGhyZWFkLiBXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TIGxpdmVzIG9uIHRoZSBXZWJU
aHJlYWQuCkBAIC0zNjEsOSArMzYxLDkgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRp
b25EZW5pZWQKICAgICB9KTsKIH0KIAotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24qKXBvc2l0aW9uCistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDoo
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKXBvc2l0aW9uCiB7Ci0gICAgUmV0YWluUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYlBvc2l0aW9uID0gYWRvcHROUyhbW1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjpwb3NpdGlv
bl0pOworICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3ZWJQb3NpdGlvbiA9
IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0
aW9uUG9zaXRpb246V1RGTW92ZShwb3NpdGlvbildKTsKICAgICBXZWJUaHJlYWRSdW4oXnsKICAg
ICAgICAgW19wcm92aWRlciBwb3NpdGlvbkNoYW5nZWQ6d2ViUG9zaXRpb24uZ2V0KCldOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzM2MDI0OTEwZWMxNTE4ODJiNjRh
ODZiOTg5MDUzMGNlOTI3ZWZjOC4uMjBjNDM0MzEwNzg3YWJhZGIwMjI2MDM5NWI3OTIwODc2Mzc4
YjQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZSB7IH0KICNl
bmRpZgogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
PiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24o
V2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5tbQppbmRleCAwY2IyYmU5OTFlMTc0ODk5MTI0OWVkZDFiYzlmZWVmNTVh
YmYzYTgwLi4yZWYzZGI2MjM5YzE5NDQ1YTA3NTA4MTUzMGU4M2JjYTQwMjcxYmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9u
KiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7
CiAgICAgcmV0dXJuIGNvcmUoW1ttX3dlYlZpZXcgX2dlb2xvY2F0aW9uUHJvdmlkZXJdIGxhc3RQ
b3NpdGlvbl0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCmluZGV4IDQ1NmQ0YmE4YmRmMGU3MTY0NDkw
NzUzMjFmOWVkZDRmMDg0NWRmYTAuLjM3NDU5YzZiODU4NDdjNjEzNWFhODYxYjUxNGExMGQ2NGE4
NmExYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KQEAgLTI2LDI0ICsyNiwyNCBAQAogI2ltcG9ydCAi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KLQogI2ltcG9ydCA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZh
Y2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIDogTlNPYmplY3QKIHsKIEBwdWJsaWMK
LSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gX3Bvc2l0aW9uOworICAgIEdlb2xvY2F0
aW9uUG9zaXRpb24gX3Bvc2l0aW9uOwogfQogCi0tIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlv
blBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0
aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbAogCi0tIChpZClpbml0V2l0aENv
cmVHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbgorLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlv
bjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCiB7CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCkBAIC01Niw5ICs1NiwxMSBAQCBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAKLUdlb2xvY2F0
aW9uUG9zaXRpb24qIGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pCitzdGQ6
Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biAqcG9zaXRpb24pCiB7Ci0gICAgcmV0dXJuIHBvc2l0aW9uID8gcG9zaXRpb24tPl9pbnRlcm5h
bC0+X3Bvc2l0aW9uLmdldCgpIDogMDsKKyAgICBpZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBwb3NpdGlvbi0+X2ludGVybmFsLT5fcG9zaXRp
b247CiB9CiAKIC0gKGlkKWluaXRXaXRoVGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIGxhdGl0
dWRlOihkb3VibGUpbGF0aXR1ZGUgbG9uZ2l0dWRlOihkb3VibGUpbG9uZ2l0dWRlIGFjY3VyYWN5
Oihkb3VibGUpYWNjdXJhY3kKQEAgLTY2LDExICs2OCwxMSBAQCAtIChpZClpbml0V2l0aFRpbWVz
dGFtcDooZG91YmxlKXRpbWVzdGFtcCBsYXRpdHVkZTooZG91YmxlKWxhdGl0dWRlIGxvbmdpdHVk
ZTooZAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIF9pbnRlcm5hbCA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVy
bmFsIGFsbG9jXSBpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOkdlb2xvY2F0aW9uUG9z
aXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KV07
CisgICAgX2ludGVybmFsID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgYWxsb2Nd
IGluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246R2VvbG9jYXRpb25Qb3NpdGlvbiB7IHRp
bWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfV07CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xv
Y2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24KKy0gKGlkKWluaXRXaXRo
R2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaAppbmRleCBmNTRlNjZiODFlMTk5YjQ0NDA5NTgw
NmQwNGIxMTAzZjI2ZGE1MDkyLi4yNmMzMmIxMjZkZjI0MzI1ZmRjZTk5YjdiODZhOGM3NTk4MmNk
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKQEAgLTI0LDEwICsyNCwxMSBA
QAogICovCiAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIH0KIAotV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogY29yZShXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uICopOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAppbmRleCBiYTI4NmM4ZDk3NTk3Mjg4ZGI4ZWQxODViMjA4ZmE5Nzgz
MDBkMTBlLi5iYTNmMzQxZWQxZWQ3MWZlOWE1MGYzZmE0NWFmNDU5MWYzOTQzNzVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02NCwxNCArNjQsMTQgQEAgdm9pZCBXZWJHZW9s
b2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkKICAgICBwcm92aWRlci0+dW5yZWdpc3Rlcldl
YlZpZXcobV93ZWJWaWV3LmdldCgpKTsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2Vv
bG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9u
UG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIENP
TVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRCht
X3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIENPTVB0cjxJV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbj4gcG9zaXRpb247CiAgICAgaWYgKEZBSUxFRChwcm92aWRlci0+bGFzdFBv
c2l0aW9uKCZwb3NpdGlvbikpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gY29yZShwb3NpdGlvbi5nZXQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDdiMWJmNDg3YWFjNzAzMzRlMzUxNWQ3MzQxZTI2NjBh
MTdkZTAxNmIuLmY2MmY1YzBkZTEzYWY4MzNlNmNiODY3ZjczMmVmNTU5NWZiOTg2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdGFydFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBmaW5hbCB7IH0KLSAgICBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIGZp
bmFsOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9j
YXRpb24mKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNGQ2MzE4NTYxMTA0NWQwM2Y2M2M3NjA4OTU0Yzk5
NTZjNjNmYTVmZS4uMGQ2Yjc4NGUwNzUwMzEwOGMwMzg2NzA1OGUxNmIzOTVjYmY4ZmVkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKQEAgLTgxLDE4ICs4MSwxOCBAQCBVTE9ORyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpSZWxl
YXNlKCkKIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjppbml0V2l0aFRpbWVzdGFt
cChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSkKIHsKLSAgICBtX3Bvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOworICAgIG1f
cG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uIHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9u
Z2l0dWRlLCBhY2N1cmFjeSB9OwogICAgIHJldHVybiBTX09LOwogfQogCi1HZW9sb2NhdGlvblBv
c2l0aW9uKiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3N0ZDo6b3B0
aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiog
cG9zaXRpb24pCiB7CiAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbj4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbihRdWVyeSwgcG9zaXRpb24pOwogICAgIGlmICgh
d2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbi0+aW1w
bCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oCmluZGV4IDc5OGFiODA4N2Q5YzdlZjBmOGNkMTFhZjYzODhhZjM5OGVmODkyYzcuLjZm
MWZjMWRjYjM3MGIyNjJkNzQxZjdjOWVkMzAzM2ZmYjljOWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTQ4LDEzICs0OCwx
MyBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5pdFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVz
dGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kp
OwogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogaW1wbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb24uZ2V0KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24+JiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiBw
cml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24+IG1fcG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bvc2l0aW9uOwogfTsKIAotV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiogY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOworc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKElXZWJHZW9sb2NhdGlv
blBvc2l0aW9uKik7CiAKICNlbmRpZiAvLyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uX2gKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNWFkYmVjNTMz
ZmU5MjMzMjEzMWZkZjA5MGUzMjY2NjczYmFlODQ3Li5iODM2MWNlMjczMjg5NTZhNjcyYzU5Yjdl
ZmIxNGZhNTZlZTdjMTk0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKwogMjAxNy0xMC0xMCAgSm9hbm1hcmllIERpZ2dzICA8amRp
Z2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFtBVEtdIEFSSUEgZm9ybSByb2xlIHNob3Vs
ZCBiZSBtYXBwZWQgdG8gQVRLX1JPTEVfTEFORE1BUks7IG5vdCBBVEtfUk9MRV9GT1JNCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGE2MTEwZDkxNjYxY2I1
ZTZiZThjNDRhYTczN2Q1NzI4ZTA3Y2NhNWIuLjYzM2U0Nzc4MTlmNmJjNjYzMmVlOTZlNDcxMTZj
ZTk5YjhjM2UwMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiAoSW50ZXJuYWwpCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRp
b246KFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiBUZXN0
UnVubmVyOjp+VGVzdFJ1bm5lcigpCkBAIC00NDksOCArNDQ5LDE2IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9u
Z2l0dWRlLCBkCiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgogICAgICAgICBwb3Np
dGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6
Y3VycmVudFRpbWUoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3Vy
YWN5OmFjY3VyYWN5XTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uID0gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRU
aW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBh
bHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92
aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKLSAgICAgICAgcG9z
aXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRp
b25Qb3NpdGlvbjooV1RGTW92ZShjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKKyAgICAgICAg
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBnZW9sb2NhdGlvblBvc2l0aW9uIHsgY3VycmVu
dFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKKyAgICAgICAgaWYgKHBy
b3ZpZGVzQWx0aXR1ZGUpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRl
ID0gYWx0aXR1ZGU7CisgICAgICAgIGlmIChwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCisgICAg
ICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFj
Y3VyYWN5OworICAgICAgICBpZiAocHJvdmlkZXNIZWFkaW5nKQorICAgICAgICAgICAgZ2VvbG9j
YXRpb25Qb3NpdGlvbi5oZWFkaW5nID0gaGVhZGluZzsKKyAgICAgICAgaWYgKHByb3ZpZGVzU3Bl
ZWQpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLnNwZWVkID0gc3BlZWQ7CisgICAg
ICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdl
b2xvY2F0aW9uUG9zaXRpb246KFdURk1vdmUoZ2VvbG9jYXRpb25Qb3NpdGlvbikpXTsKICAgICB9
CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0
aW9uXTsKICAgICBbcG9zaXRpb24gcmVsZWFzZV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323380</attachid>
            <date>2017-10-10 20:49:45 -0700</date>
            <delta_ts>2017-10-10 20:56:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010204945.patch</filename>
            <type>text/plain</type>
            <size>65978</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uMGI1YTFmYTVjNjY5NzhiMDY3NWIxN2U1YzEwNDBk
NDMzYzJlOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlOgorICAgICAgICAtIFVzZSBzdGQ6Om9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBzZXBhcmF0ZSBib29sZWFuIG1lbWJlcnMKKyAgICAgICAgLSBNYWtlIEdl
b2xvY2F0aW9uUG9zaXRpb24gYSBzaW1wbGUgc3RydWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB2aWEg
SVBDCisgICAgICAgIC0gUmVwbGFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHdpdGgg
R2VvbG9jYXRpb25Qb3NpdGlvbgorICAgICAgICAtIE1vdmUgbG9naWMgdG8gY29uc3RydWN0IGEg
R2VvbG9jYXRpb25Qb3NpdGlvbiBmcm9tIGEgQ0xMb2NhdGlvbiBvbiBpT1MKKyAgICAgICAgICBp
biBvbmUgcGxhY2UgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OkNvb3JkaW5hdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmxhdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVzOjpsb25naXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVhZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246
Okdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xs
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oOgorCisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmVhbGx5IGZpeCB0aGUgYnVpbGQgd2l0aCBjZXJ0YWluIFNE
S3MuCiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIyMjMxNTQsIHdoaWNoIGZpeGVkIHRoZSB3cm9u
ZyBsYW1iZGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMjY2ZGZjYmI3ZjIwYjU5OWNjZjRmZGI4MGI2MDEwZTJl
YTIwYTguLjU5M2Y0MGVhNmQ2NjM2ZjBiYjBkNTk4YTEwYzBlY2IxMjYwMmQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp0aW1lc3Rh
bXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpsYXRp
dHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Omxv
bmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlv
blByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEzMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTkyMDllOTNiOTEwYjJiOTZm
NTllLi4zZDJhOWRiZjJjMGViMDkzZGQ2N2NmMGEzZTUzMmQ1MDk1YWZiN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBNaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2VuZExvY2F0aW9uOl0pOgorICAgICAgICAq
IE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bX1dlYkNvcmVM
b2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpdKToKKwogMjAxNy0x
MC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDA1YjRiY2Y5ZDdiNWRhMGFmOTBiODMyZmNiMjMzMGM3NTdmMS4uZmZjZTFh
NjkzZmY0NjYyM2VjNjAyZmMyNDJlY2I3N2Y5OTkyZjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBpbml0V2l0aFRpbWVzdGFtcDpsYXRpdHVkZTpsb25naXR1ZGU6YWNj
dXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmg6CisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggODQyODg1YWZhNzZmMjYxZGU3YTQ5NGQ0
NzQwZGY4ZGYxMDIxMTRlZi4uNWUxMGY0YWEwZDBkZTA2ZTRiYWYwMGQwNDMwODY1ZWUwZjUyY2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEw
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRX
aXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwgY29uc3Qp
OgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpjb29raWVzRW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nv
b3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRp
bmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcu
LjlhYzcyNmU5MWIxNTcwNGEzNGYyNGMwYzAyN2JkMjUzYzhhMDgzMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwz
MiArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorQ29vcmRpbmF0ZXM6OkNvb3JkaW5hdGVz
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKKyAgICA6IG1fcG9zaXRpb24oV1RGTW92
ZShwb3NpdGlvbikpCiB7Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9hbHRpdHVkZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG1faGVhZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpzcGVlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vQ29vcmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVh
MDYzODMyLi4yNzYzNzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5h
dGVzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91Ymxl
IGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENvb3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGUsIGFsdGl0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVk
ZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVk
KSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3Np
dGlvbiYmIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZXMoV1RGTW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0
ZXM+IGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0
ZXM6OmNyZWF0ZShtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUs
IG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1f
YWx0aXR1ZGVBY2N1cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblBy
b3ZpZGVTcGVlZCwgbV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRl
KCBHZW9sb2NhdGlvblBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxv
bmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZUFjY3VyYWN5KCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBj
b25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24uYWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29y
ZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkK
LSAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNj
dXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpCi0gICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChz
cGVlZCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5KQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAg
ZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBt
X2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAg
ICAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9v
bCBtX2NhblByb3ZpZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFi
Y2U0YzAwNWFjMWQ2MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAz
ZWY3OTA0NTdlZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdl
b2xvY2F0CiBzdGF0aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtd
ID0gIkdlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwog
c3RhdGljIGNvbnN0IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNz
YWdlW10gPSAiT3JpZ2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRp
b24gc2VydmljZSI7CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0
aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Q
cm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlv
bi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBv
c2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRl
SGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVk
KCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0
aW9uLT50aW1lc3RhbXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBH
ZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52
YWx1ZSgpKSksIHRpbWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3Jl
YXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMs
NyBAQCBHZW9wb3NpdGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRl
R2VvcG9zaXRpb24oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5
MzkwOGMzYWYwLi5mNzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRp
b247CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdl
YktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAg
ICAvLyBpcyBwdWJsaXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRj
ZDA1NDY5N2Q3ZGIxYWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4
Yzk2YTY5NzBjMzE2YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTks
NyArOTksNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9y
OwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9y
T2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRF
cnJvcihlcnJvcik7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG9jYXRpb25Db250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQ
b3NpdGlvbi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAg
IGlmIChtX2xhc3RQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5i
NjVkNjBkNTQxZWM1Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2Vv
bG9jYXRpb24mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAg
IEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2
ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdo
IGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNj
OWVkZTJhOGE2NzBkMzA1NzdiMWRiMDM1ZGJjZDYuLjVjMzU2MGUzNGRjZjJjZDliZmQ0NGZmNzRm
MTE2Y2NkNGMyNDk1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4MSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JK
Q19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9z
aXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0
aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFj
eShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJv
dmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVl
ZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91Ymxl
IGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25n
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgLTEgfTsKIAotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQWx0
aXR1ZGU7IH0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVIZWFkaW5nOyB9Ci0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVTcGVlZDsgfQor
ICAgIGRvdWJsZSBsYXRpdHVkZSB7IC0xIH07CisgICAgZG91YmxlIGxvbmdpdHVkZSB7IC0xIH07
CisgICAgZG91YmxlIGFjY3VyYWN5IHsgLTEgfTsKIAotcHJpdmF0ZToKLSAgICBHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgICAgICA6IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
LSAgICAgICAgLCBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQotICAgICAgICAsIG1fYWx0
aXR1ZGUoMCkKLSAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAgICAgLCBtX2hl
YWRpbmcoMCkKLSAgICAgICAgLCBtX3NwZWVkKDApCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0
aXR1ZGUoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeShmYWxz
ZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
UHJvdmlkZVNwZWVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZDsKIAotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5n
LCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi0gICAg
ICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJh
Y3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKLSAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKLSAgICAgICAgLCBtX3NwZWVkKHNwZWVkKQotICAgICAgICAsIG1fY2FuUHJvdmlk
ZUFsdGl0dWRlKHByb3ZpZGVzQWx0aXR1ZGUpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeShwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgICwgbV9jYW5Qcm92
aWRlSGVhZGluZyhwcm92aWRlc0hlYWRpbmcpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
cHJvdmlkZXNTcGVlZCkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdlb2xvY2F0aW9uUG9zaXRpb24mKTsKK307
CiAKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBHZW9sb2NhdGlvblBvc2l0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHRpbWVzdGFtcDsKKyAgICBlbmNvZGVyIDw8IGxhdGl0dWRlOworICAg
IGVuY29kZXIgPDwgbG9uZ2l0dWRlOworICAgIGVuY29kZXIgPDwgYWNjdXJhY3k7CisgICAgZW5j
b2RlciA8PCBhbHRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFsdGl0dWRlQWNjdXJhY3k7CisgICAg
ZW5jb2RlciA8PCBoZWFkaW5nOworICAgIGVuY29kZXIgPDwgc3BlZWQ7Cit9CiAKLSAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKLSAgICBkb3VibGUgbV9sb25naXR1ZGU7Ci0gICAgZG91YmxlIG1fYWNj
dXJhY3k7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGU7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBkb3VibGUgbV9oZWFkaW5nOwotICAgIGRvdWJsZSBtX3NwZWVkOwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24udGltZXN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubGF0aXR1ZGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5sb25naXR1ZGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5hY2N1cmFjeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvc2l0aW9uLmFsdGl0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmhlYWRpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5zcGVl
ZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1
ZGU7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OwotICAgIGJvb2wgbV9j
YW5Qcm92aWRlSGVhZGluZzsKLSAgICBib29sIG1fY2FuUHJvdmlkZVNwZWVkOwotfTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhhODQzNDJiMjQ3NDYyMTE3
YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAu
dGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0
ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVk
ZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBp
ZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUg
PSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjAp
CisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJz
ZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBlZDI2MmFjZDlkYS4uZDM3
NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU1MCw2ICszNTUw
LDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzYw
OUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAv
KiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Mzc5NjRDRjFG
OERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjcz
MDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBM
b2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4
NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtMTE4NzMs
NiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQgLyogRXJyb3JDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2
NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2
ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQx
RUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEw
IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdyb3VwIjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3NDZBRjExMTRGNERERTYw
MDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3
QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0RERFNjAwM0U3QTcwIC8q
IENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcgQEAKIAkJCQlDRDRCRTUy
QTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYyNTJFMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEyMjU4MWFhZjIxZTU3MDMy
ZGIyY2JiZGRiMjc0ZS4uNDhlYzNlNWJhMGUyYTc3YWI4MmI3NjVlNDliYjBiNDhiNmMxODFhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAg
bV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnNldFBvc2l0aW9uKFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9uKQor
dm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRp
b24mJiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24p
OwogICAgIGNsZWFyRXJyb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2EKIHsKICAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IGVy
cm9yTWVzc2FnZTsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IG51bGxwdHI7CisgICAgbV9sYXN0UG9z
aXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAK
QEAgLTE1Niw5ICsxNTYsOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wpCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTQzOAogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9sb2NhdGlv
bkNsaWVudE1vY2s6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9z
aXRpb24+IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKIHsKLSAgICByZXR1
cm4gbV9sYXN0UG9zaXRpb24uZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uOwogfQog
CiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNVcGRhdGVDb250cm9sbGVyKCkKQEAg
LTE3Miw5ICsxNzIsOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRp
bWVyRmlyZWQoKQogewogICAgIEFTU0VSVChtX2NvbnRyb2xsZXIpOwogCi0gICAgaWYgKG1fbGFz
dFBvc2l0aW9uLmdldCgpKSB7CisgICAgaWYgKG1fbGFzdFBvc2l0aW9uKSB7CiAgICAgICAgIEFT
U0VSVCghbV9oYXNFcnJvcik7Ci0gICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2Vk
KG1fbGFzdFBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNo
YW5nZWQoKm1fbGFzdFBvc2l0aW9uKTsKICAgICB9IGVsc2UgaWYgKG1faGFzRXJyb3IpIHsKICAg
ICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2Vv
bG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgbV9lcnJvck1lc3NhZ2UpOwogICAg
ICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQoZ2VvbG9jYXRpb0Vycm9yLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCmluZGV4IDg1ZmMwMzgwNjE0ZjRjZGMzMjRiYWY1ZmExYTY1MjUxOTRhMzY2MGIuLmZj
MWI1MWQ3ZjcxMGZjMzg2MjFlZGNjNzZlNjA0ZmM3NmRhYTEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtMzIs
NiArMzIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5o
IgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDAs
NyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI7Ci1jbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogCiAvLyBGSVhNRTogdGhpcyBzaG91
bGQgbm90IGJlIGluIFdlYkNvcmUuIEl0IHNob3VsZCBiZSBtb3ZlZCB0byBXZWJLaXQuCiAvLyBQ
cm92aWRlcyBhIG1vY2sgb2JqZWN0IGZvciB0aGUgZ2VvbG9jYXRpb24gY2xpZW50LgpAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgc2V0Q29udHJv
bGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAgIHZvaWQgc2V0UG9zaXRpb24oUmVm
UHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpOworICAgIHZvaWQgc2V0UG9zaXRpb24oR2VvbG9j
YXRpb25Qb3NpdGlvbiYmKTsKICAgICB2b2lkIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wg
YWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9mUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNv
bnN0OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsKLSAgICBHZW9sb2NhdGlvblBvc2l0
aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0
aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Np
b25SZXF1ZXN0KEdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyRXJyb3IoKTsKIAogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxl
ciogbV9jb250cm9sbGVyOwotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQ
b3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBv
c2l0aW9uOwogICAgIGJvb2wgbV9oYXNFcnJvcjsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7
CiAgICAgVGltZXIgbV9jb250cm9sbGVyVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IGJiZjlmYTU0Y2EzYzgzNjNkZGU1NTBi
MzhjYjE3ZmY4OGFmYTlkZjMuLjNmMTU1OGI3NTJiZWY4YzkyYjQxNjk2ZmQ0NmEwYzA4MWI1YmJl
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwCkBAIC0zMCwzNCArMzAsMTUgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFtcCwg
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wg
cHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVB
Y2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBk
b3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi17Ci0gICAg
bV9kYXRhLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLSAgICBtX2RhdGEubGF0aXR1ZGUgPSBsYXRp
dHVkZTsKLSAgICBtX2RhdGEubG9uZ2l0dWRlID0gbG9uZ2l0dWRlOwotICAgIG1fZGF0YS5hY2N1
cmFjeSA9IGFjY3VyYWN5OwotICAgIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGUgPSBwcm92aWRl
c0FsdGl0dWRlOwotICAgIG1fZGF0YS5hbHRpdHVkZSA9IGFsdGl0dWRlOwotICAgIG1fZGF0YS5j
YW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeTsKLSAg
ICBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgbV9kYXRh
LmNhblByb3ZpZGVIZWFkaW5nID0gcHJvdmlkZXNIZWFkaW5nOwotICAgIG1fZGF0YS5oZWFkaW5n
ID0gaGVhZGluZzsKLSAgICBtX2RhdGEuY2FuUHJvdmlkZVNwZWVkID0gcHJvdmlkZXNTcGVlZDsK
LSAgICBtX2RhdGEuc3BlZWQgPSBzcGVlZDsKLX0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1XZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCitSZWY8
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKEdl
b2xvY2F0aW9uUG9zaXRpb24mJiBnZW9sb2NhdGlvblBvc2l0aW9uKQogeworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oV1RGTW92ZShnZW9sb2NhdGlvblBv
c2l0aW9uKSkpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgSVBDOjpTaW1wbGVBcmd1bWVu
dENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+OjplbmNvZGUoZW5jb2RlciwgKnRo
aXMpOwotfQotCi1ib29sIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIERhdGEmIGRhdGEpCitXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7Ci0gICAgcmV0dXJuIElQQzo6U2ltcGxlQXJndW1l
bnRDb2RlcjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhPjo6ZGVjb2RlKGRlY29kZXIsIGRh
dGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCAxZGQ3OTg5YmNjMDNkNDAwMDBkY2Q5Y2My
Njk0Y2JhYmNmZmU0NjAxLi40MThhYzM2MzE0N2U0NDA5ZTQyZGZmYzFhZDgxYjE0YjFjNTI4ZTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25faAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM4LDU2
ICszOSwyOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0
aW9uUG9zaXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRGF0YSB7Ci0gICAgICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
SVBDOjpEZWNvZGVyJiwgRGF0YSYpOwotCi0gICAgICAgIGRvdWJsZSB0aW1lc3RhbXA7Ci0gICAg
ICAgIGRvdWJsZSBsYXRpdHVkZTsKLSAgICAgICAgZG91YmxlIGxvbmdpdHVkZTsKLSAgICAgICAg
ZG91YmxlIGFjY3VyYWN5OwotCi0gICAgICAgIGRvdWJsZSBhbHRpdHVkZTsKLSAgICAgICAgZG91
YmxlIGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgICAgIGRvdWJsZSBoZWFkaW5nOwotICAgICAgICBk
b3VibGUgc3BlZWQ7Ci0KLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGU7Ci0gICAgICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmc7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkOwotICAgIH07Ci0KLSAgICBz
dGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1w
LCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9v
bCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcs
IGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24odGlt
ZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwg
YWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJv
dmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCkpOwotICAgIH0KKyAg
ICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGNyZWF0ZShXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uJiYpOwogCiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bigpOwogCi0gICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS50aW1l
c3RhbXA7IH0KLSAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubGF0
aXR1ZGU7IH0KLSAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmxv
bmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5h
Y2N1cmFjeTsgfQorICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQ
b3NpdGlvbi50aW1lc3RhbXA7IH0KKyAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVy
biBtX2NvcmVQb3NpdGlvbi5sYXRpdHVkZTsgfQorICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sb25naXR1ZGU7IH0KKyAgICBkb3VibGUgYWNjdXJh
Y3koKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5hY2N1cmFjeTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9u
LmFsdGl0dWRlOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5OyB9CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3Np
dGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jb3JlUG9zaXRpb24uc3BlZWQ7IH0KIAotICAgIGJvb2wgY2FuUHJvdmlkZUFs
dGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZTsgfQotICAg
IGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbHRpdHVkZTsgfQotCi0g
ICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3Vy
YWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0dWRlQWNjdXJhY3k7IH0KLQotICAgIGJv
b2wgY2FuUHJvdmlkZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY2FuUHJvdmlkZUhl
YWRpbmc7IH0KLSAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5oZWFk
aW5nOyB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5jYW5Qcm92aWRlU3BlZWQ7IH0KLSAgICBkb3VibGUgc3BlZWQoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuc3BlZWQ7IH0KLQotICAgIGNvbnN0IERhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiBjb3JlUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbjsgfQogCiBwcml2YXRlOgotICAg
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVk
ZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91Ymxl
IGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywg
Ym9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpOworICAgIGV4cGxpY2l0IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0aW9u
UG9zaXRpb24pCisgICAgICAgIDogbV9jb3JlUG9zaXRpb24oV1RGTW92ZShnZW9sb2NhdGlvblBv
c2l0aW9uKSkKKyAgICB7CisgICAgfQogCi0gICAgRGF0YSBtX2RhdGE7CisgICAgV2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbiBtX2NvcmVQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNTdmYmRjZmQzZWU2ZTk5OWQyZDVkM2IxZDAzNTk1
MjIwYWZkYzRlZC4uMzI0MWQ3MjdkM2M1NzE2Mjk1NjNiMWExOTdiYjkyNTM3Y2RmMmE2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9u
UG9zaXRpb24uY3BwCkBAIC00Myw2ICs0MywxNiBAQCBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYg
V0tHZW9sb2NhdGlvblBvc2l0aW9uQ3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYQog
CiBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9uQ3JlYXRlX2Io
ZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29s
IHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wg
cHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3Vi
bGUgc3BlZWQpCiB7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRl
c0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFj
Y3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsK
KyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiB7IHRpbWVzdGFt
cCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKKyAgICBpZiAocHJvdmlkZXNBbHRp
dHVkZSkKKyAgICAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CisgICAgaWYg
KHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRl
QWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OworICAgIGlmIChwcm92aWRlc0hlYWRpbmcpCisg
ICAgICAgIGNvcmVQb3NpdGlvbi5oZWFkaW5nID0gaGVhZGluZzsKKyAgICBpZiAocHJvdmlkZXNT
cGVlZCkKKyAgICAgICAgY29yZVBvc2l0aW9uLnNwZWVkID0gc3BlZWQ7CisKKyAgICBhdXRvIHBv
c2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0
aW9uKSk7CiAgICAgcmV0dXJuIHRvQVBJKCZwb3NpdGlvbi5sZWFrUmVmKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xvY2F0aW9uUG9z
aXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRp
b25Qb3NpdGlvbi5tbQppbmRleCA4ZWVmYmVjYzc0Y2NjYjE3NDA5YWNmYTE3MjhjOWJiOTMwOTI2
YmZhLi42ZjgxOWRmMTQ3NTc2ZWZlNTk1Yjg5N2MwZGIyZGRjMzM0N2YxOGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRp
b25Qb3NpdGlvbi5tbQpAQCAtMzksMjkgKzM5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKXBvc2l0aW9u
V2l0aExvY2F0aW9uOihDTExvY2F0aW9uICopbG9jYXRpb24KICAgICBpZiAoIWxvY2F0aW9uKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUgPSB0cnVl
OwotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kgPSB0cnVlOwotICAgIGRvdWJs
ZSBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3Vy
YWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAgICBpZiAoYWx0aXR1ZGVBY2N1cmFj
eSA8IDAuMCkgewotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1ZGUgPSBmYWxzZTsKLSAgICAgICAg
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGNh
blByb3ZpZGVTcGVlZCA9IHRydWU7Ci0gICAgZG91YmxlIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7
Ci0gICAgaWYgKHNwZWVkIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsK
LQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVlOwotICAgIGRvdWJsZSBoZWFkaW5n
ID0gbG9jYXRpb24uY291cnNlOwotICAgIGlmIChoZWFkaW5nIDwgMC4wKQotICAgICAgICBjYW5Q
cm92aWRlSGVhZGluZyA9IGZhbHNlOwotCi0gICAgQ0xMb2NhdGlvbkNvb3JkaW5hdGUyRCBjb29y
ZGluYXRlID0gbG9jYXRpb24uY29vcmRpbmF0ZTsKLSAgICBkb3VibGUgdGltZXN0YW1wID0gbG9j
YXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3MDsKLQotICAgIHJldHVybiBbd3Jh
cHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBjb29yZGluYXRl
LmxhdGl0dWRlLCBjb29yZGluYXRlLmxvbmdpdHVkZSwgbG9jYXRpb24uaG9yaXpvbnRhbEFjY3Vy
YWN5LCBjYW5Qcm92aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhlYWRpbmcsIGhlYWRpbmcsIGNhblBy
b3ZpZGVTcGVlZCwgc3BlZWQpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBb
d3JhcHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbiB7IGxvY2F0aW9uIH0pLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAt
ICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggZGI3N2YzODkw
YzU1ZDM2NjE4NjI2YTNlYmNlNWRhZTk2ZWM0ZTBlMi4uN2IwMzVmOGZmYzVmYWQ1MjlhMzk0MzRj
MGViMGViNDliYWQ3NmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTgxLDcg
KzgxLDEwIEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKCkK
IAogdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQo
aW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3kpCiB7Ci0g
ICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3ksIHRydWUsIGFsdGl0dWRlLCB0cnVlLCBhbHRpdHVkZUFjY3VyYWN5LCBmYWxzZSwgMCwgZmFs
c2UsIDApOworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uIGNvcmVQb3NpdGlvbiB7IHRpbWVzdGFt
cCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKKyAgICBjb3JlUG9zaXRpb24uYWx0
aXR1ZGUgPSBhbHRpdHVkZTsKKyAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cnJhY3kgPSBh
bHRpdHVkZUFjY3VyYWN5OworICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3Np
dGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlv
bikpOwogICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9u
KHBvc2l0aW9uLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDg3YjI5Njg2YmJlNTZmZmUz
NGVlNzM0OWMxZjhhOTBiZjY4YTIwMTkuLjUyYjAxMWY1ZGJhYzZjZDZiNzA3M2I4MjA1NDZmYjYy
NmUyMWE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElH
ZW9sb2NhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQb29sLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTAsNyArOTEsNyBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdl
b2xvY2F0aW9uUG9zaXRpbwogICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5kYXRhKCkpKTsK
KyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24tPmNvcmVQb3NpdGlvbigp
KSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFp
bFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbQppbmRleCBjMzdiMzMxNDEzZmIzZTJhZjM2YWMyMDA2YzFlMzkyODU0Zjc0N2FhLi44OTJk
ZWUxM2UxNjkzYjY4YzdjMzE1NmIzMjRkMjZlZjgxODUxNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAg
LTc0LDExICs3NCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiwgVUlXaW5kb3cqKTsK
IH07CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGtpdChXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHBvc2l0aW9uLT50aW1lc3RhbXAoKSwgcG9zaXRpb24t
PmxhdGl0dWRlKCksIHBvc2l0aW9uLT5sb25naXR1ZGUoKSwgcG9zaXRpb24tPmFjY3VyYWN5KCks
IHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIHBv
c2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGVB
Y2N1cmFjeSgpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZUhlYWRpbmcoKSwgcG9zaXRpb24tPmhlYWRp
bmcoKSwgcG9zaXRpb24tPmNhblByb3ZpZGVTcGVlZCgpLCBwb3NpdGlvbi0+c3BlZWQoKSk7Ci19
Ci0KIHN0cnVjdCBHZW9sb2NhdGlvblJlcXVlc3REYXRhIHsKICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbjsKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gZnJhbWU7CkBAIC0zMDQs
MTAgKzI5OSwxMCBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogICAg
IFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKIH0KIAotLSAodm9p
ZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gKiljb3JlUG9z
aXRpb24KKy0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uJiYpY29yZVBvc2l0aW9uCiB7CiAgICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBw
b3NpdGlvbiA9IGtpdChjb3JlUG9zaXRpb24pOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKICAgICBbX2xp
c3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDp3cmFwcGVyKHBvc2l0aW9uLmdldCgpKV07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZDM2ZTY4ZDVhODY1NTI2ODJmMTYzMjY5NWUx
Y2I5NjI1ODNkNzc0NC4uOTU2NzUxODBjNDNhMGMxNjRlYjJhNTA0YmNmMDEwMzJjZjg3NzVjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkxLDE5ICs5MSwxNyBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdl
JiBwYWdlLCBib29sIGVuYQogICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAotdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OkRhdGEmIGRhdGEpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbiYgcG9zaXRpb24pCiB7
CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9u
PiBwb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShkYXRhLnRpbWVzdGFtcCwg
ZGF0YS5sYXRpdHVkZSwgZGF0YS5sb25naXR1ZGUsIGRhdGEuYWNjdXJhY3ksIGRhdGEuY2FuUHJv
dmlkZUFsdGl0dWRlLCBkYXRhLmFsdGl0dWRlLCBkYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3Vy
YWN5LCBkYXRhLmFsdGl0dWRlQWNjdXJhY3ksIGRhdGEuY2FuUHJvdmlkZUhlYWRpbmcsIGRhdGEu
aGVhZGluZywgZGF0YS5jYW5Qcm92aWRlU3BlZWQsIGRhdGEuc3BlZWQpOwotCiAgICAgVmVjdG9y
PFJlZlB0cjxXZWJQYWdlPj4gd2ViUGFnZUNvcHk7CiAgICAgY29weVRvVmVjdG9yKG1fcGFnZVNl
dCwgd2ViUGFnZUNvcHkpOwogICAgIGZvciAoYXV0byYgcGFnZSA6IHdlYlBhZ2VDb3B5KSB7CiAg
ICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24u
Z2V0KCkpOworICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNv
cmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYg
Ly8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXgg
ZDFmM2NiNzM2MDAzMWNkZTlkMjRmYmM0NWYyOWY1MGNjNzkwNmU2Yi4uNGY0NDdhZjBhMzc0NjU0
MzhmNWYyOWIxNzhmMDdiNjYyMzc3M2U0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAt
MzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHZW9sb2NhdGlvbjsK
K2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjIsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsgcmV0
dXJuICFtX3BhZ2VTZXQuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmlzRW1wdHkoKTsgfQog
Ci0gICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpEYXRhJik7CisgICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uJik7CiAgICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQg
cmVzZXRQZXJtaXNzaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggMjcxNTRmNWEzNmVlMzAzMjFiYTVlMWQ5ZTI3MmU4NDBjYWM3NzFlOS4uOTdk
YTI4NTZiZDI5YTZlMDVjZjc3MGY1Y2MyOWU3NzY5YjZkNDI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciB7Ci0gICAgRGlkQ2hhbmdl
UG9zaXRpb24oV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHBvc2l0aW9uKTsK
KyAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIHBvc2l0
aW9uKTsKICAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihTdHJpbmcgZXJyb3JNZXNzYWdl
KTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVzZXRQZXJtaXNzaW9ucygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggM2JjOGRmY2IxNDA2Yjc5ZTg3NjA0ZjUwOTM1MzY4
YTU5NDJkNDdjZS4uODkxMzEzY2U5ZmFhNzYzYzUxNTY5Y2NlOWZjYjk4NWE0YjQzMjg0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02NCwxMCArNjQsMTAgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlcj4oKS0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShtX3BhZ2UsIGVuYWJsZWQpOwog
fQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0
aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk3NzcxMTEzYTY5ZDU0N2I2Mzkx
NGIzMDM3MzI5MmY0NzFjYWYwMi4uY2ZlOGQ0MjQ4NTlkOGYxMTcwZmE4OWU3Njk0MDYwYjc4MjBk
MzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dl
Ykdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDgwOTVk
NTNjNzgyYjQxOTE2YjUzZTBmOGQ2YjEzMjFmZGQzMGFiMDUuLjA0OTBmY2ZiMWRiMDRiZjZiMDI0
ZThlNDA5Njc1NzBmN2M1YWMxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5o
CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAtICh2b2lkKWdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQ7CiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkRlbmllZDsKIAotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24qKXBvc2l0aW9uOworLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJilwb3NpdGlvbjsKIC0gKHZvaWQpZXJyb3JPY2N1cnJl
ZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2U7CiAtICh2b2lkKXJlc2V0R2VvbG9jYXRpb247CiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KaW5kZXggYWVkOTU2MjFjNzg1
MWQzNTcxNDIwYzBjNjI1MTdmYWIyNTA1MzYwNi4uZDlmMDMzYTdkNzIwYTE0ZTExMzIxNjcyMGY2
ZjBiNjM4NGVhMTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9X
ZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQpAQCAt
MTY1LDI5ICsxNjUsNyBAQCAtICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFn
ZXIgKiltYW5hZ2VyIGRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dQogCiAtICh2b2lkKXNlbmRM
b2NhdGlvbjooQ0xMb2NhdGlvbiAqKW5ld0xvY2F0aW9uCiB7Ci0gICAgLy8gTm9ybWFsaXplLgot
ICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlID0gdHJ1ZTsKLSAgICBib29sIGNhblByb3ZpZGVB
bHRpdHVkZUFjY3VyYWN5ID0gdHJ1ZTsKLSAgICBkb3VibGUgYWx0aXR1ZGUgPSBuZXdMb2NhdGlv
bi5hbHRpdHVkZTsKLSAgICBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSA9IG5ld0xvY2F0aW9uLnZl
cnRpY2FsQWNjdXJhY3k7Ci0gICAgaWYgKGFsdGl0dWRlQWNjdXJhY3kgPCAwLjApIHsKLSAgICAg
ICAgY2FuUHJvdmlkZUFsdGl0dWRlID0gZmFsc2U7Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVk
ZUFjY3VyYWN5ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlU3BlZWQgPSB0
cnVlOwotICAgIGRvdWJsZSBzcGVlZCA9IG5ld0xvY2F0aW9uLnNwZWVkOwotICAgIGlmIChzcGVl
ZCA8IDAuMCkKLSAgICAgICAgY2FuUHJvdmlkZVNwZWVkID0gZmFsc2U7Ci0KLSAgICBib29sIGNh
blByb3ZpZGVIZWFkaW5nID0gdHJ1ZTsKLSAgICBkb3VibGUgaGVhZGluZyA9IG5ld0xvY2F0aW9u
LmNvdXJzZTsKLSAgICBpZiAoaGVhZGluZyA8IDAuMCkKLSAgICAgICAgY2FuUHJvdmlkZUhlYWRp
bmcgPSBmYWxzZTsKLQotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBbbmV3TG9jYXRpb24udGltZXN0
YW1wIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF07Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGdlb2xvY2F0aW9uUG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGlt
ZXN0YW1wLCBuZXdMb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlLCBuZXdMb2NhdGlvbi5jb29y
ZGluYXRlLmxvbmdpdHVkZSwgbmV3TG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92
aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhlYWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwg
c3BlZWQpOwotICAgIFtfcG9zaXRpb25MaXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6Z2VvbG9jYXRp
b25Qb3NpdGlvbi5nZXQoKV07CisgICAgW19wb3NpdGlvbkxpc3RlbmVyIHBvc2l0aW9uQ2hhbmdl
ZDpHZW9sb2NhdGlvblBvc2l0aW9uIHsgbmV3TG9jYXRpb24gfV07CiB9CiAKIC0gKHZvaWQpbG9j
YXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkVXBkYXRlTG9jYXRp
b25zOihOU0FycmF5ICopbG9jYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggMGQ1M2FmMDM4
NWJjNDE4M2FmODY4NmI2YzM3NDNkYjVmYzVjMTQ4YS4uMWQyODBjMWFjZDU5MWU3YzFhZWM2ODlh
YjdhMjM0NDY4M2FiYjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAtNDQsNyArNDQsNyBAQAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbiAoSW50ZXJuYWwpCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0
cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOworLSAoaWQp
aW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdl
b2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIC8vIENvcmVMb2NhdGlvbiBydW5zIGluIHRoZSBt
YWluIHRocmVhZC4gV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyBsaXZlcyBvbiB0aGUgV2ViVGhy
ZWFkLgpAQCAtMzYxLDkgKzM2MSw5IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkCiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uKilwb3NpdGlvbgorLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJilwb3NpdGlvbgogewotICAgIFJldGFpblB0cjxX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3ZWJQb3NpdGlvbiA9IGFkb3B0TlMoW1tXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246cG9zaXRpb25d
KTsKKyAgICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gd2ViUG9zaXRpb24gPSBh
ZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlv
blBvc2l0aW9uOldURk1vdmUocG9zaXRpb24pXSk7CiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAg
ICAgIFtfcHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOndlYlBvc2l0aW9uLmdldCgpXTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMzNjAyNDkxMGVjMTUxODgyYjY0YTg2
Yjk4OTA1MzBjZTkyN2VmYzguLjIwYzQzNDMxMDc4N2FiYWRiMDIyNjAzOTViNzkyMDg3NjM3OGI0
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGUgeyB9CiAjZW5k
aWYKIAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4g
bGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdl
YkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQubW0KaW5kZXggMGNiMmJlOTkxZTE3NDg5OTEyNDllZGQxYmM5ZmVlZjU1YWJm
M2E4MC4uMmVmM2RiNjIzOWMxOTQ0NWEwNzUwODE1MzBlODNiY2E0MDI3MWJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiog
V2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xv
Y2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewog
ICAgIHJldHVybiBjb3JlKFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSBsYXN0UG9z
aXRpb25dKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA0NTZkNGJhOGJkZjBlNzE2NDQ5MDc1
MzIxZjllZGQ0ZjA4NDVkZmEwLi4zNzQ1OWM2Yjg1ODQ3YzYxMzVhYTg2MWI1MTRhMTBkNjRhODZh
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCkBAIC0yNiwyNCArMjYsMjQgQEAKICNpbXBvcnQgIldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uaCIKIAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bkludGVybmFsLmgiCi0jaW1wb3J0IDx3dGYvUmVmUHRyLmg+Ci0KICNpbXBvcnQgPFdlYkNvcmUv
R2VvbG9jYXRpb25Qb3NpdGlvbi5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisjaW1wb3J0
IDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNl
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbCA6IE5TT2JqZWN0CiB7CiBAcHVibGljCi0g
ICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IF9wb3NpdGlvbjsKKyAgICBHZW9sb2NhdGlv
blBvc2l0aW9uIF9wb3NpdGlvbjsKIH0KIAotLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9z
aXRpb247CistIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2NhdGlv
blBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwKIAotLSAoaWQpaW5pdFdpdGhDb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdl
b2xvY2F0aW9uUG9zaXRpb24KKy0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgogewogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtNTYsOSArNTYsMTEgQEAgQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbgogCi1HZW9sb2NhdGlv
blBvc2l0aW9uKiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQorc3RkOjpv
cHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24g
KnBvc2l0aW9uKQogewotICAgIHJldHVybiBwb3NpdGlvbiA/IHBvc2l0aW9uLT5faW50ZXJuYWwt
Pl9wb3NpdGlvbi5nZXQoKSA6IDA7CisgICAgaWYgKCFwb3NpdGlvbikKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcG9zaXRpb24tPl9pbnRlcm5hbC0+X3Bvc2l0aW9u
OwogfQogCiAtIChpZClpbml0V2l0aFRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCBsYXRpdHVk
ZTooZG91YmxlKWxhdGl0dWRlIGxvbmdpdHVkZTooZG91YmxlKWxvbmdpdHVkZSBhY2N1cmFjeToo
ZG91YmxlKWFjY3VyYWN5CkBAIC02NiwxMSArNjgsMTEgQEAgLSAoaWQpaW5pdFdpdGhUaW1lc3Rh
bXA6KGRvdWJsZSl0aW1lc3RhbXAgbGF0aXR1ZGU6KGRvdWJsZSlsYXRpdHVkZSBsb25naXR1ZGU6
KGQKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBfaW50ZXJuYWwgPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5h
bCBhbGxvY10gaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSldOwor
ICAgIF9pbnRlcm5hbCA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGFsbG9jXSBp
bml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOkdlb2xvY2F0aW9uUG9zaXRpb24geyB0aW1l
c3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH1dOwogICAgIHJldHVybiBzZWxm
OwogfQogCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCistIChpZClpbml0V2l0aEdl
b2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKaW5kZXggZjU0ZTY2YjgxZTE5OWI0NDQwOTU4MDZk
MDRiMTEwM2YyNmRhNTA5Mi4uMjZjMzJiMTI2ZGYyNDMyNWZkY2U5OWI3Yjg2YThjNzU5ODJjZDdm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2Nh
dGlvblBvc2l0aW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCkBAIC0yNCwxMCArMjQsMTEgQEAK
ICAqLwogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW1wb3J0IDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb247CiB9CiAKLVdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGNvcmUoV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiAqKTsKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbj4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHAKaW5kZXggYmEyODZjOGQ5NzU5NzI4OGRiOGVkMTg1YjIwOGZhOTc4MzAw
ZDEwZS4uYmEzZjM0MWVkMWVkNzFmZTlhNTBmM2ZhNDVhZjQ1OTFmMzk0Mzc1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsMTQgKzY0LDE0IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCiAgICAgcHJvdmlkZXItPnVucmVnaXN0ZXJXZWJW
aWV3KG1fd2ViVmlldy5nZXQoKSk7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBv
c2l0aW9uPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICBDT01Q
dHI8SVdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93
ZWJWaWV3LT5nZW9sb2NhdGlvblByb3ZpZGVyKCZwcm92aWRlcikpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IHBvc2l0aW9uOwogICAgIGlmIChGQUlMRUQocHJvdmlkZXItPmxhc3RQb3Np
dGlvbigmcG9zaXRpb24pKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGNvcmUocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCA3YjFiZjQ4N2FhYzcwMzM0ZTM1MTVkNzM0MWUyNjYwYTE3
ZGUwMTZiLi5mNjJmNWMwZGUxM2FmODMzZTZjYjg2N2Y3MzJlZjU1OTVmYjk4NjU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c3RhcnRVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgZmluYWwgeyB9Ci0gICAgV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBsYXN0UG9zaXRpb24oKSBmaW5h
bDsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDRkNjMxODU2MTEwNDVkMDNmNjNjNzYwODk1NGM5OTU2
YzYzZmE1ZmUuLjBkNmI3ODRlMDc1MDMxMDhjMDM4NjcwNThlMTZiMzk1Y2JmOGZlZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
CkBAIC04MSwxOCArODEsMTggQEAgVUxPTkcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6UmVsZWFz
ZSgpCiAKIEhSRVNVTFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6aW5pdFdpdGhUaW1lc3RhbXAo
ZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3kpCiB7Ci0gICAgbV9wb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNy
ZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKKyAgICBtX3Bv
c2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdp
dHVkZSwgYWNjdXJhY3kgfTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotR2VvbG9jYXRpb25Qb3Np
dGlvbiogY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCitzdGQ6Om9wdGlv
bmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBv
c2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24+IHdlYkdlb2xvY2F0aW9uUG9zaXRpb24oUXVlcnksIHBvc2l0aW9uKTsKICAgICBpZiAoIXdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHdlYkdlb2xvY2F0aW9uUG9zaXRpb24tPmltcGwo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaAppbmRleCA3OThhYjgwODdkOWM3ZWYwZjhjZDExYWY2Mzg4YWYzOThlZjg5MmM3Li42ZjFm
YzFkY2IzNzBiMjYyZDc0MWY3YzllZDMwMzNmZmI5YzliNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC00OCwxMyArNDgsMTMg
QEAgcHVibGljOgogICAgIC8vIElXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoVGltZXN0YW1wKGRvdWJsZSB0aW1lc3Rh
bXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsK
IAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGltcGwoKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uLmdldCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uPiYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KIAogcHJp
dmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9wb3NpdGlvbjsKIH07CiAKLVdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24qIGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qKTsKK3N0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShJV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbiopOwogCiAjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDVhZGJlYzUzM2Zl
OTIzMzIxMzFmZGYwOTBlMzI2NjY3M2JhZTg0Ny4uYjgzNjFjZTI3MzI4OTU2YTY3MmM1OWI3ZWZi
MTRmYTU2ZWU3YzE5NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbik6CisKIDIwMTctMTAtMTAgIEpvYW5tYXJpZSBEaWdncyAgPGpkaWdn
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBbQVRLXSBBUklBIGZvcm0gcm9sZSBzaG91bGQg
YmUgbWFwcGVkIHRvIEFUS19ST0xFX0xBTkRNQVJLOyBub3QgQVRLX1JPTEVfRk9STQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBhNjExMGQ5MTY2MWNiNWU2
YmU4YzQ0YWE3MzdkNTcyOGUwN2NjYTViLi42MzNlNDc3ODE5ZjZiYzY2MzJlZTk2ZTQ3MTE2Y2U5
OWI4YzNlMDEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpA
QCAtMTI1LDcgKzEyNSw3IEBAIEBlbmQKICNlbmRpZgogCiBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24gKEludGVybmFsKQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9u
OihSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4pY29yZUdlb2xvY2F0aW9uUG9z
aXRpb247CistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAogVGVzdFJ1
bm5lcjo6flRlc3RSdW5uZXIoKQpAQCAtNDQ5LDggKzQ0OSwxNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZAogICAgICAgICAvLyBUZXN0IHRoZSBleHBvc2VkIEFQSS4KICAgICAgICAgcG9zaXRp
b24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoVGltZXN0YW1wOmN1
cnJlbnRUaW1lKCkgbGF0aXR1ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFj
eTphY2N1cmFjeV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBjb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbiA9IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShjdXJyZW50VGlt
ZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0
aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlk
ZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCk7Ci0gICAgICAgIHBvc2l0
aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9u
UG9zaXRpb246KFdURk1vdmUoY29yZUdlb2xvY2F0aW9uUG9zaXRpb24pKV07CisgICAgICAgIFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gZ2VvbG9jYXRpb25Qb3NpdGlvbiB7IGN1cnJlbnRU
aW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH07CisgICAgICAgIGlmIChwcm92
aWRlc0FsdGl0dWRlKQorICAgICAgICAgICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5hbHRpdHVkZSA9
IGFsdGl0dWRlOworICAgICAgICBpZiAocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQorICAgICAg
ICAgICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1
cmFjeTsKKyAgICAgICAgaWYgKHByb3ZpZGVzSGVhZGluZykKKyAgICAgICAgICAgIGdlb2xvY2F0
aW9uUG9zaXRpb24uaGVhZGluZyA9IGhlYWRpbmc7CisgICAgICAgIGlmIChwcm92aWRlc1NwZWVk
KQorICAgICAgICAgICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5zcGVlZCA9IHNwZWVkOworICAgICAg
ICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOihXVEZNb3ZlKGdlb2xvY2F0aW9uUG9zaXRpb24pKV07CiAgICAgfQog
ICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRQb3NpdGlvbjpwb3NpdGlv
bl07CiAgICAgW3Bvc2l0aW9uIHJlbGVhc2VdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323381</attachid>
            <date>2017-10-10 20:56:54 -0700</date>
            <delta_ts>2017-10-10 21:00:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010205653.patch</filename>
            <type>text/plain</type>
            <size>66227</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uMGI1YTFmYTVjNjY5NzhiMDY3NWIxN2U1YzEwNDBk
NDMzYzJlOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlOgorICAgICAgICAtIFVzZSBzdGQ6Om9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBzZXBhcmF0ZSBib29sZWFuIG1lbWJlcnMKKyAgICAgICAgLSBNYWtlIEdl
b2xvY2F0aW9uUG9zaXRpb24gYSBzaW1wbGUgc3RydWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB2aWEg
SVBDCisgICAgICAgIC0gUmVwbGFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHdpdGgg
R2VvbG9jYXRpb25Qb3NpdGlvbgorICAgICAgICAtIE1vdmUgbG9naWMgdG8gY29uc3RydWN0IGEg
R2VvbG9jYXRpb25Qb3NpdGlvbiBmcm9tIGEgQ0xMb2NhdGlvbiBvbiBpT1MKKyAgICAgICAgICBp
biBvbmUgcGxhY2UgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OkNvb3JkaW5hdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmxhdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVzOjpsb25naXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVhZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246
Okdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xs
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oOgorCisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmVhbGx5IGZpeCB0aGUgYnVpbGQgd2l0aCBjZXJ0YWluIFNE
S3MuCiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIyMjMxNTQsIHdoaWNoIGZpeGVkIHRoZSB3cm9u
ZyBsYW1iZGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMjY2ZGZjYmI3ZjIwYjU5OWNjZjRmZGI4MGI2MDEwZTJl
YTIwYTguLjU5M2Y0MGVhNmQ2NjM2ZjBiYjBkNTk4YTEwYzBlY2IxMjYwMmQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp0aW1lc3Rh
bXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpsYXRp
dHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Omxv
bmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlv
blByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEzMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTkyMDllOTNiOTEwYjJiOTZm
NTllLi4zZDJhOWRiZjJjMGViMDkzZGQ2N2NmMGEzZTUzMmQ1MDk1YWZiN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBNaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2VuZExvY2F0aW9uOl0pOgorICAgICAgICAq
IE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bX1dlYkNvcmVM
b2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpdKToKKwogMjAxNy0x
MC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDA1YjRiY2Y5ZDdiNWRhMGFmOTBiODMyZmNiMjMzMGM3NTdmMS4uZmZjZTFh
NjkzZmY0NjYyM2VjNjAyZmMyNDJlY2I3N2Y5OTkyZjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBpbml0V2l0aFRpbWVzdGFtcDpsYXRpdHVkZTpsb25naXR1ZGU6YWNj
dXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmg6CisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggODQyODg1YWZhNzZmMjYxZGU3YTQ5NGQ0
NzQwZGY4ZGYxMDIxMTRlZi4uNWUxMGY0YWEwZDBkZTA2ZTRiYWYwMGQwNDMwODY1ZWUwZjUyY2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEw
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRX
aXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwgY29uc3Qp
OgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpjb29raWVzRW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nv
b3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRp
bmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcu
LjlhYzcyNmU5MWIxNTcwNGEzNGYyNGMwYzAyN2JkMjUzYzhhMDgzMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwz
MiArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorQ29vcmRpbmF0ZXM6OkNvb3JkaW5hdGVz
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKKyAgICA6IG1fcG9zaXRpb24oV1RGTW92
ZShwb3NpdGlvbikpCiB7Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9hbHRpdHVkZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG1faGVhZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpzcGVlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vQ29vcmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVh
MDYzODMyLi4yNzYzNzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5h
dGVzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91Ymxl
IGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENvb3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGUsIGFsdGl0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVk
ZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVk
KSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3Np
dGlvbiYmIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZXMoV1RGTW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0
ZXM+IGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0
ZXM6OmNyZWF0ZShtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUs
IG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1f
YWx0aXR1ZGVBY2N1cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblBy
b3ZpZGVTcGVlZCwgbV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRl
KCBHZW9sb2NhdGlvblBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxv
bmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZUFjY3VyYWN5KCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBj
b25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24uYWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29y
ZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkK
LSAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNj
dXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpCi0gICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChz
cGVlZCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5KQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAg
ZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBt
X2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAg
ICAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9v
bCBtX2NhblByb3ZpZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFi
Y2U0YzAwNWFjMWQ2MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAz
ZWY3OTA0NTdlZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdl
b2xvY2F0CiBzdGF0aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtd
ID0gIkdlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwog
c3RhdGljIGNvbnN0IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNz
YWdlW10gPSAiT3JpZ2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRp
b24gc2VydmljZSI7CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0
aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Q
cm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlv
bi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBv
c2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRl
SGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVk
KCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0
aW9uLT50aW1lc3RhbXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBH
ZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52
YWx1ZSgpKSksIHRpbWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3Jl
YXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMs
NyBAQCBHZW9wb3NpdGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRl
R2VvcG9zaXRpb24oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5
MzkwOGMzYWYwLi5mNzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRp
b247CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdl
YktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAg
ICAvLyBpcyBwdWJsaXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRj
ZDA1NDY5N2Q3ZGIxYWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4
Yzk2YTY5NzBjMzE2YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTks
NyArOTksNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9y
OwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9y
T2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRF
cnJvcihlcnJvcik7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG9jYXRpb25Db250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQ
b3NpdGlvbi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAg
IGlmIChtX2xhc3RQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5i
NjVkNjBkNTQxZWM1Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2Vv
bG9jYXRpb24mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAg
IEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2
ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdo
IGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNj
OWVkZTJhOGE2NzBkMzA1NzdiMWRiMDM1ZGJjZDYuLjVjMzU2MGUzNGRjZjJjZDliZmQ0NGZmNzRm
MTE2Y2NkNGMyNDk1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4MSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JK
Q19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9z
aXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0
aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFj
eShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJv
dmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVl
ZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91Ymxl
IGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25n
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgLTEgfTsKIAotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQWx0
aXR1ZGU7IH0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVIZWFkaW5nOyB9Ci0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVTcGVlZDsgfQor
ICAgIGRvdWJsZSBsYXRpdHVkZSB7IC0xIH07CisgICAgZG91YmxlIGxvbmdpdHVkZSB7IC0xIH07
CisgICAgZG91YmxlIGFjY3VyYWN5IHsgLTEgfTsKIAotcHJpdmF0ZToKLSAgICBHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgICAgICA6IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
LSAgICAgICAgLCBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQotICAgICAgICAsIG1fYWx0
aXR1ZGUoMCkKLSAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAgICAgLCBtX2hl
YWRpbmcoMCkKLSAgICAgICAgLCBtX3NwZWVkKDApCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0
aXR1ZGUoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeShmYWxz
ZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
UHJvdmlkZVNwZWVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZDsKIAotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5n
LCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi0gICAg
ICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJh
Y3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKLSAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKLSAgICAgICAgLCBtX3NwZWVkKHNwZWVkKQotICAgICAgICAsIG1fY2FuUHJvdmlk
ZUFsdGl0dWRlKHByb3ZpZGVzQWx0aXR1ZGUpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeShwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgICwgbV9jYW5Qcm92
aWRlSGVhZGluZyhwcm92aWRlc0hlYWRpbmcpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
cHJvdmlkZXNTcGVlZCkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdlb2xvY2F0aW9uUG9zaXRpb24mKTsKK307
CiAKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBHZW9sb2NhdGlvblBvc2l0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHRpbWVzdGFtcDsKKyAgICBlbmNvZGVyIDw8IGxhdGl0dWRlOworICAg
IGVuY29kZXIgPDwgbG9uZ2l0dWRlOworICAgIGVuY29kZXIgPDwgYWNjdXJhY3k7CisgICAgZW5j
b2RlciA8PCBhbHRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFsdGl0dWRlQWNjdXJhY3k7CisgICAg
ZW5jb2RlciA8PCBoZWFkaW5nOworICAgIGVuY29kZXIgPDwgc3BlZWQ7Cit9CiAKLSAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKLSAgICBkb3VibGUgbV9sb25naXR1ZGU7Ci0gICAgZG91YmxlIG1fYWNj
dXJhY3k7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGU7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBkb3VibGUgbV9oZWFkaW5nOwotICAgIGRvdWJsZSBtX3NwZWVkOwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24udGltZXN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubGF0aXR1ZGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5sb25naXR1ZGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5hY2N1cmFjeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvc2l0aW9uLmFsdGl0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmhlYWRpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5zcGVl
ZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1
ZGU7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OwotICAgIGJvb2wgbV9j
YW5Qcm92aWRlSGVhZGluZzsKLSAgICBib29sIG1fY2FuUHJvdmlkZVNwZWVkOwotfTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhhODQzNDJiMjQ3NDYyMTE3
YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAu
dGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0
ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVk
ZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBp
ZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUg
PSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjAp
CisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJz
ZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBlZDI2MmFjZDlkYS4uZDM3
NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU1MCw2ICszNTUw
LDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzYw
OUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAv
KiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Mzc5NjRDRjFG
OERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjcz
MDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBM
b2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4
NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtMTE4NzMs
NiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQgLyogRXJyb3JDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2
NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2
ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQx
RUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEw
IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdyb3VwIjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3NDZBRjExMTRGNERERTYw
MDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3
QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0RERFNjAwM0U3QTcwIC8q
IENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcgQEAKIAkJCQlDRDRCRTUy
QTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYyNTJFMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEyMjU4MWFhZjIxZTU3MDMy
ZGIyY2JiZGRiMjc0ZS4uMThkYWZkOWU3ZmNiZDRiYjMxNWI5ZTQ3M2Q3ZTc3ZDBlZGE4ODU0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAg
bV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnNldFBvc2l0aW9uKFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9uKQor
dm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRp
b24mJiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24p
OwogICAgIGNsZWFyRXJyb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2EKIHsKICAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IGVy
cm9yTWVzc2FnZTsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IG51bGxwdHI7CisgICAgbV9sYXN0UG9z
aXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAK
QEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lv
blRpbWVyRmlyZWQoKQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQogewot
ICAgIG1fbGFzdFBvc2l0aW9uID0gbnVsbHB0cjsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IHN0ZDo6
bnVsbG9wdDsKICAgICBjbGVhckVycm9yKCk7CiAgICAgbV9wZXJtaXNzaW9uU3RhdGUgPSBQZXJt
aXNzaW9uU3RhdGVVbnNldDsKIH0KQEAgLTE1Niw5ICsxNTYsOSBAQCB2b2lkIEdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQzOAogfQogCi1HZW9sb2NhdGlv
blBvc2l0aW9uKiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9w
dGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBv
c2l0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24uZ2V0KCk7CisgICAgcmV0dXJu
IG1fbGFzdFBvc2l0aW9uOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNV
cGRhdGVDb250cm9sbGVyKCkKQEAgLTE3Miw5ICsxNzIsOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoKQogewogICAgIEFTU0VSVChtX2NvbnRyb2xs
ZXIpOwogCi0gICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgaWYgKG1fbGFzdFBv
c2l0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9oYXNFcnJvcik7Ci0gICAgICAgIG1fY29udHJv
bGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFzdFBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAgbV9j
b250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQoKm1fbGFzdFBvc2l0aW9uKTsKICAgICB9IGVsc2Ug
aWYgKG1faGFzRXJyb3IpIHsKICAgICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2Nh
dGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwg
bV9lcnJvck1lc3NhZ2UpOwogICAgICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQoZ2Vv
bG9jYXRpb0Vycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDg1ZmMwMzgwNjE0ZjRjZGMzMjRiYWY1
ZmExYTY1MjUxOTRhMzY2MGIuLmZjMWI1MWQ3ZjcxMGZjMzg2MjFlZGNjNzZlNjA0ZmM3NmRhYTEw
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaApAQCAtMzIsNiArMzIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDAsNyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwog
CiAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIGluIFdlYkNvcmUuIEl0IHNob3VsZCBiZSBt
b3ZlZCB0byBXZWJLaXQuCiAvLyBQcm92aWRlcyBhIG1vY2sgb2JqZWN0IGZvciB0aGUgZ2VvbG9j
YXRpb24gY2xpZW50LgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgp
OwogICAgIHZvaWQgc2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAg
IHZvaWQgc2V0UG9zaXRpb24oUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpOworICAgIHZv
aWQgc2V0UG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiYmKTsKICAgICB2b2lkIHNldFBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9p
ZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9mUGVuZGluZ1Bl
cm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsK
LSAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAK
QEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRXJyb3IoKTsKIAogICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0
aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwogICAgIGJvb2wgbV9oYXNFcnJvcjsKICAgICBT
dHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgVGltZXIgbV9jb250cm9sbGVyVGltZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IGJi
ZjlmYTU0Y2EzYzgzNjNkZGU1NTBiMzhjYjE3ZmY4OGFmYTlkZjMuLjNmMTU1OGI3NTJiZWY4Yzky
YjQxNjk2ZmQ0NmEwYzA4MWI1YmJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zMCwzNCArMzAsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBk
b3VibGUgc3BlZWQpCi17Ci0gICAgbV9kYXRhLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLSAgICBt
X2RhdGEubGF0aXR1ZGUgPSBsYXRpdHVkZTsKLSAgICBtX2RhdGEubG9uZ2l0dWRlID0gbG9uZ2l0
dWRlOwotICAgIG1fZGF0YS5hY2N1cmFjeSA9IGFjY3VyYWN5OwotICAgIG1fZGF0YS5jYW5Qcm92
aWRlQWx0aXR1ZGUgPSBwcm92aWRlc0FsdGl0dWRlOwotICAgIG1fZGF0YS5hbHRpdHVkZSA9IGFs
dGl0dWRlOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHByb3ZpZGVz
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVIZWFkaW5nID0gcHJvdmlkZXNIZWFkaW5n
OwotICAgIG1fZGF0YS5oZWFkaW5nID0gaGVhZGluZzsKLSAgICBtX2RhdGEuY2FuUHJvdmlkZVNw
ZWVkID0gcHJvdmlkZXNTcGVlZDsKLSAgICBtX2RhdGEuc3BlZWQgPSBzcGVlZDsKLX0KK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbigpCitSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBnZW9sb2NhdGlvblBvc2l0
aW9uKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24o
V1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OkRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0g
ICAgSVBDOjpTaW1wbGVBcmd1bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+
OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwotfQotCi1ib29sIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERhdGEmIGRhdGEpCitXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7Ci0gICAgcmV0
dXJuIElQQzo6U2ltcGxlQXJndW1lbnRDb2RlcjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRh
Pjo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCAxZGQ3
OTg5YmNjMDNkNDAwMDBkY2Q5Y2MyNjk0Y2JhYmNmZmU0NjAxLi40MThhYzM2MzE0N2U0NDA5ZTQy
ZGZmYzFhZDgxYjE0YjFjNTI4ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdlb2xvY2F0
aW9uUG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgSVBDIHsKQEAgLTM4LDU2ICszOSwyOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3Qg
RGF0YSB7Ci0gICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgRGF0YSYpOwotCi0gICAgICAgIGRv
dWJsZSB0aW1lc3RhbXA7Ci0gICAgICAgIGRvdWJsZSBsYXRpdHVkZTsKLSAgICAgICAgZG91Ymxl
IGxvbmdpdHVkZTsKLSAgICAgICAgZG91YmxlIGFjY3VyYWN5OwotCi0gICAgICAgIGRvdWJsZSBh
bHRpdHVkZTsKLSAgICAgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgICAgIGRvdWJs
ZSBoZWFkaW5nOwotICAgICAgICBkb3VibGUgc3BlZWQ7Ci0KLSAgICAgICAgYm9vbCBjYW5Qcm92
aWRlQWx0aXR1ZGU7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZVNw
ZWVkOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGNy
ZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUs
IGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwg
Ym9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQs
IGRvdWJsZSBzcGVlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFj
eSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
YWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVk
LCBzcGVlZCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+
IGNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCiAgICAgdmlydHVhbCB+
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpOwogCi0gICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS50aW1lc3RhbXA7IH0KLSAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEubGF0aXR1ZGU7IH0KLSAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmxvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5hY2N1cmFjeTsgfQorICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi50aW1lc3RhbXA7IH0KKyAgICBkb3VibGUgbGF0
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sYXRpdHVkZTsgfQorICAgIGRv
dWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sb25naXR1ZGU7
IH0KKyAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5h
Y2N1cmFjeTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5hbHRp
dHVkZUFjY3VyYWN5OyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uc3BlZWQ7IH0KIAot
ICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNhblBy
b3ZpZGVBbHRpdHVkZTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5hbHRpdHVkZTsgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAg
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0dWRl
QWNjdXJhY3k7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5oZWFkaW5nOyB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQ7IH0KLSAgICBkb3VibGUgc3Bl
ZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc3BlZWQ7IH0KLQotICAgIGNvbnN0IERhdGEmIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uJiBjb3JlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlv
bjsgfQogCiBwcml2YXRlOgotICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVz
dGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ks
IGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0
aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFk
aW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpOwor
ICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCisgICAgICAgIDogbV9jb3JlUG9zaXRpb24o
V1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkKKyAgICB7CisgICAgfQogCi0gICAgRGF0YSBt
X2RhdGE7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBtX2NvcmVQb3NpdGlvbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNTdmYmRjZmQz
ZWU2ZTk5OWQyZDVkM2IxZDAzNTk1MjIwYWZkYzRlZC4uMzI0MWQ3MjdkM2M1NzE2Mjk1NjNiMWEx
OTdiYjkyNTM3Y2RmMmE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0MywxNiBAQCBXS0dl
b2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9uQ3JlYXRlKGRvdWJsZSB0
aW1lc3RhbXAsIGRvdWJsZSBsYQogCiBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2Nh
dGlvblBvc2l0aW9uQ3JlYXRlX2IoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwg
ZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9v
bCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCiB7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1
ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHBy
b3ZpZGVzU3BlZWQsIHNwZWVkKTsKKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNv
cmVQb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsK
KyAgICBpZiAocHJvdmlkZXNBbHRpdHVkZSkKKyAgICAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRl
ID0gYWx0aXR1ZGU7CisgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAg
Y29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OworICAgIGlm
IChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgIGNvcmVQb3NpdGlvbi5oZWFkaW5nID0gaGVhZGlu
ZzsKKyAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAgICAgY29yZVBvc2l0aW9uLnNwZWVkID0g
c3BlZWQ7CisKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAgICAgcmV0dXJuIHRvQVBJKCZwb3NpdGlvbi5s
ZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA4ZWVmYmVjYzc0Y2NjYjE3
NDA5YWNmYTE3MjhjOWJiOTMwOTI2YmZhLi42ZjgxOWRmMTQ3NTc2ZWZlNTk1Yjg5N2MwZGIyZGRj
MzM0N2YxOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtMzksMjkgKzM5LDcgQEAgKyAo
aW5zdGFuY2V0eXBlKXBvc2l0aW9uV2l0aExvY2F0aW9uOihDTExvY2F0aW9uICopbG9jYXRpb24K
ICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYm9vbCBjYW5Q
cm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJh
Y3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAg
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAg
ICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1
ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kgPSBmYWxzZTsK
LSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9IHRydWU7Ci0gICAgZG91YmxlIHNw
ZWVkID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNwZWVkIDwgMC4wKQotICAgICAgICBjYW5Q
cm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVl
OwotICAgIGRvdWJsZSBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotICAgIGlmIChoZWFkaW5n
IDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVhZGluZyA9IGZhbHNlOwotCi0gICAgQ0xMb2Nh
dGlvbkNvb3JkaW5hdGUyRCBjb29yZGluYXRlID0gbG9jYXRpb24uY29vcmRpbmF0ZTsKLSAgICBk
b3VibGUgdGltZXN0YW1wID0gbG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3
MDsKLQotICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUo
dGltZXN0YW1wLCBjb29yZGluYXRlLmxhdGl0dWRlLCBjb29yZGluYXRlLmxvbmdpdHVkZSwgbG9j
YXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBj
YW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhl
YWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwgc3BlZWQpLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiB7IGxvY2F0aW9uIH0pLmxlYWtSZWYoKSkg
YXV0b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ci5jcHAKaW5kZXggZGI3N2YzODkwYzU1ZDM2NjE4NjI2YTNlYmNlNWRhZTk2ZWM0ZTBlMi4uN2Iw
MzVmOGZmYzVmYWQ1MjlhMzk0MzRjMGViMGViNDliYWQ3NmZhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlci5jcHAKQEAgLTgxLDcgKzgxLDEwIEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92
aWRlcjo6c3RvcFVwZGF0aW5nKCkKIAogdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3kpCiB7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBv
c2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1
ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHRydWUsIGFsdGl0dWRlLCB0cnVlLCBhbHRpdHVkZUFj
Y3VyYWN5LCBmYWxzZSwgMCwgZmFsc2UsIDApOworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uIGNv
cmVQb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsK
KyAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKKyAgICBjb3JlUG9zaXRpb24u
YWx0aXR1ZGVBY2N1cnJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OworICAgIFJlZlB0cjxXZWJHZW9s
b2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0
ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwogICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92
aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDg3YjI5Njg2YmJlNTZmZmUzNGVlNzM0OWMxZjhhOTBiZjY4YTIwMTkuLjUyYjAxMWY1ZGJh
YzZjZDZiNzA3M2I4MjA1NDZmYjYyNmUyMWE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJBUElHZW9sb2NhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
OTAsNyArOTEsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRp
ZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpbwogICAgIGlmICghcHJvY2Vzc1Bv
b2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9u
KHBvc2l0aW9uLT5kYXRhKCkpKTsKKyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocG9z
aXRpb24tPmNvcmVQb3NpdGlvbigpKSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMzdiMzMxNDEzZmIzZTJhZjM2YWMyMDA2
YzFlMzkyODU0Zjc0N2FhLi44OTJkZWUxM2UxNjkzYjY4YzdjMzE1NmIzMjRkMjZlZjgxODUxNGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0
aW9uUHJvdmlkZXJJT1MubW0KQEAgLTc0LDExICs3NCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGlkPFdlYkFsbG93RGVueVBvbGljeUxp
c3RlbmVyPiwgVUlXaW5kb3cqKTsKIH07CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IGtpdChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikK
LXsKLSAgICByZXR1cm4gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHBvc2l0aW9uLT50
aW1lc3RhbXAoKSwgcG9zaXRpb24tPmxhdGl0dWRlKCksIHBvc2l0aW9uLT5sb25naXR1ZGUoKSwg
cG9zaXRpb24tPmFjY3VyYWN5KCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGUoKSwgcG9z
aXRpb24tPmFsdGl0dWRlKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgp
LCBwb3NpdGlvbi0+YWx0aXR1ZGVBY2N1cmFjeSgpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZUhlYWRp
bmcoKSwgcG9zaXRpb24tPmhlYWRpbmcoKSwgcG9zaXRpb24tPmNhblByb3ZpZGVTcGVlZCgpLCBw
b3NpdGlvbi0+c3BlZWQoKSk7Ci19Ci0KIHN0cnVjdCBHZW9sb2NhdGlvblJlcXVlc3REYXRhIHsK
ICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKICAgICBSZWZQdHI8V2ViRnJhbWVQ
cm94eT4gZnJhbWU7CkBAIC0zMDQsMTAgKzI5OSwxMCBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0
aG9yaXphdGlvbkRlbmllZAogICAgIFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkXTsKIH0KIAotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb24gKiljb3JlUG9zaXRpb24KKy0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZVBvc2l0aW9uCiB7CiAgICAgQVNTRVJUKF9s
aXN0ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlvbiA9IGtpdChjb3JlUG9zaXRpb24pOworICAgIGF1
dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3Jl
UG9zaXRpb24pKTsKICAgICBbX2xpc3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDp3cmFwcGVyKHBvc2l0
aW9uLmdldCgpKV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZDM2ZTY4
ZDVhODY1NTI2ODJmMTYzMjY5NWUxY2I5NjI1ODNkNzc0NC4uOTU2NzUxODBjNDNhMGMxNjRlYjJh
NTA0YmNmMDEwMzJjZjg3NzVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkx
LDE5ICs5MSwxNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5Rm9yUGFnZShXZWJQYWdlJiBwYWdlLCBib29sIGVuYQogICAgICAgICBtX3Byb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVu
YWJsZWQpLCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBv
c2l0aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGEmIGRhdGEpCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgR2VvbG9jYXRpb25Q
b3NpdGlvbiYgcG9zaXRpb24pCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIFJlZlB0
cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNy
ZWF0ZShkYXRhLnRpbWVzdGFtcCwgZGF0YS5sYXRpdHVkZSwgZGF0YS5sb25naXR1ZGUsIGRhdGEu
YWNjdXJhY3ksIGRhdGEuY2FuUHJvdmlkZUFsdGl0dWRlLCBkYXRhLmFsdGl0dWRlLCBkYXRhLmNh
blByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBkYXRhLmFsdGl0dWRlQWNjdXJhY3ksIGRhdGEuY2Fu
UHJvdmlkZUhlYWRpbmcsIGRhdGEuaGVhZGluZywgZGF0YS5jYW5Qcm92aWRlU3BlZWQsIGRhdGEu
c3BlZWQpOwotCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlPj4gd2ViUGFnZUNvcHk7CiAgICAg
Y29weVRvVmVjdG9yKG1fcGFnZVNldCwgd2ViUGFnZUNvcHkpOwogICAgIGZvciAoYXV0byYgcGFn
ZSA6IHdlYlBhZ2VDb3B5KSB7CiAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAg
ICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3Np
dGlvbkNoYW5nZWQocG9zaXRpb24uZ2V0KCkpOworICAgICAgICAgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24p
OwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJB
TShwb3NpdGlvbik7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmgKaW5kZXggZDFmM2NiNzM2MDAzMWNkZTlkMjRmYmM0NWYyOWY1MGNjNzkw
NmU2Yi4uNGY0NDdhZjBhMzc0NjU0MzhmNWYyOWIxNzhmMDdiNjYyMzc3M2U0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIuaApAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBHZW9sb2NhdGlvbjsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNjIsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNV
cGRhdGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3BhZ2VTZXQuaXNFbXB0eSgpOyB9CiAgICAgYm9v
bCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lQ
YWdlU2V0LmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhJik7CisgICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlv
bihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJik7CiAgICAgdm9pZCBkaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMjcxNTRmNWEzNmVlMzAzMjFiYTVlMWQ5
ZTI3MmU4NDBjYWM3NzFlOS4uOTdkYTI4NTZiZDI5YTZlMDVjZjc3MGY1Y2MyOWU3NzY5YjZkNDI5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw3
ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFu
YWdlciB7Ci0gICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjpEYXRhIHBvc2l0aW9uKTsKKyAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uIHBvc2l0aW9uKTsKICAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlv
bihTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVzZXRQZXJt
aXNzaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggM2JjOGRmY2Ix
NDA2Yjc5ZTg3NjA0ZjUwOTM1MzY4YTU5NDJkNDdjZS4uODkxMzEzY2U5ZmFhNzYzYzUxNTY5Y2Nl
OWZjYjk4NWE0YjQzMjg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02
NCwxMCArNjQsMTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c2V0RW5hYmxlSGlnaEFj
Y3VyYWN5KGJvb2wgZW5hYmxlZCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVt
ZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFn
ZShtX3BhZ2UsIGVuYWJsZWQpOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3Np
dGlvbj4gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzLgotICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdl
b2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXgg
MTk3NzcxMTEzYTY5ZDU0N2I2MzkxNGIzMDM3MzI5MmY0NzFjYWYwMi4uY2ZlOGQ0MjQ4NTlkOGYx
MTcwZmE4OWU3Njk0MDYwYjc4MjBkMzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwogCi0g
ICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBsYXN0UG9z
aXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6
R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0
KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Q
cm92aWRlci5oCmluZGV4IDgwOTVkNTNjNzgyYjQxOTE2YjUzZTBmOGQ2YjEzMjFmZGQzMGFiMDUu
LjA0OTBmY2ZiMWRiMDRiZjZiMDI0ZThlNDA5Njc1NzBmN2M1YWMxMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25Qcm92aWRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb247CiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQ7CiAtICh2
b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZDsKIAotLSAodm9pZClwb3NpdGlvbkNo
YW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qKXBvc2l0aW9uOworLSAodm9pZClw
b3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJilwb3NpdGlvbjsK
IC0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2U7CiAtICh2b2lk
KXJlc2V0R2VvbG9jYXRpb247CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIu
bW0KaW5kZXggYWVkOTU2MjFjNzg1MWQzNTcxNDIwYzBjNjI1MTdmYWIyNTA1MzYwNi4uZDlmMDMz
YTdkNzIwYTE0ZTExMzIxNjcyMGY2ZjBiNjM4NGVhMTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9j
YXRpb25Qcm92aWRlci5tbQpAQCAtMTY1LDI5ICsxNjUsNyBAQCAtICh2b2lkKWxvY2F0aW9uTWFu
YWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZENoYW5nZUF1dGhvcml6YXRpb25T
dGF0dQogCiAtICh2b2lkKXNlbmRMb2NhdGlvbjooQ0xMb2NhdGlvbiAqKW5ld0xvY2F0aW9uCiB7
Ci0gICAgLy8gTm9ybWFsaXplLgotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlID0gdHJ1ZTsK
LSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gdHJ1ZTsKLSAgICBkb3VibGUg
YWx0aXR1ZGUgPSBuZXdMb2NhdGlvbi5hbHRpdHVkZTsKLSAgICBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSA9IG5ld0xvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7Ci0gICAgaWYgKGFsdGl0dWRlQWNj
dXJhY3kgPCAwLjApIHsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0dWRlID0gZmFsc2U7Ci0gICAg
ICAgIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQgPSB0cnVlOwotICAgIGRvdWJsZSBzcGVlZCA9IG5ld0xvY2F0aW9u
LnNwZWVkOwotICAgIGlmIChzcGVlZCA8IDAuMCkKLSAgICAgICAgY2FuUHJvdmlkZVNwZWVkID0g
ZmFsc2U7Ci0KLSAgICBib29sIGNhblByb3ZpZGVIZWFkaW5nID0gdHJ1ZTsKLSAgICBkb3VibGUg
aGVhZGluZyA9IG5ld0xvY2F0aW9uLmNvdXJzZTsKLSAgICBpZiAoaGVhZGluZyA8IDAuMCkKLSAg
ICAgICAgY2FuUHJvdmlkZUhlYWRpbmcgPSBmYWxzZTsKLQotICAgIGRvdWJsZSB0aW1lc3RhbXAg
PSBbbmV3TG9jYXRpb24udGltZXN0YW1wIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF07Ci0gICAgUmVm
UHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IGdlb2xvY2F0aW9uUG9zaXRpb24gPSBHZW9sb2NhdGlv
blBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBuZXdMb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0
dWRlLCBuZXdMb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSwgbmV3TG9jYXRpb24uaG9yaXpv
bnRhbEFjY3VyYWN5LCBjYW5Qcm92aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBjYW5Qcm92aWRlQWx0
aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhlYWRpbmcsIGhlYWRp
bmcsIGNhblByb3ZpZGVTcGVlZCwgc3BlZWQpOwotICAgIFtfcG9zaXRpb25MaXN0ZW5lciBwb3Np
dGlvbkNoYW5nZWQ6Z2VvbG9jYXRpb25Qb3NpdGlvbi5nZXQoKV07CisgICAgW19wb3NpdGlvbkxp
c3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDpHZW9sb2NhdGlvblBvc2l0aW9uIHsgbmV3TG9jYXRpb24g
fV07CiB9CiAKIC0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1h
bmFnZXIgZGlkVXBkYXRlTG9jYXRpb25zOihOU0FycmF5ICopbG9jYXRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJ
T1MubW0KaW5kZXggMGQ1M2FmMDM4NWJjNDE4M2FmODY4NmI2YzM3NDNkYjVmYzVjMTQ4YS4uMWQy
ODBjMWFjZDU5MWU3YzFhZWM2ODlhYjdhMjM0NDY4M2FiYjY2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5t
bQpAQCAtNDQsNyArNDQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZh
Y2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAoSW50ZXJuYWwpCi0tIChpZClpbml0V2l0aEdlb2xv
Y2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2Nh
dGlvblBvc2l0aW9uOworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2Nh
dGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIC8vIENvcmVM
b2NhdGlvbiBydW5zIGluIHRoZSBtYWluIHRocmVhZC4gV2ViR2VvbG9jYXRpb25Qcm92aWRlcklP
UyBsaXZlcyBvbiB0aGUgV2ViVGhyZWFkLgpAQCAtMzYxLDkgKzM2MSw5IEBAIC0gKHZvaWQpZ2Vv
bG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpcG9zaXRp
b25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKilwb3NpdGlvbgorLSAodm9p
ZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJilwb3NpdGlv
bgogewotICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3ZWJQb3NpdGlvbiA9
IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0
aW9uUG9zaXRpb246cG9zaXRpb25dKTsKKyAgICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbj4gd2ViUG9zaXRpb24gPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxv
Y10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOldURk1vdmUocG9zaXRpb24pXSk7CiAgICAg
V2ViVGhyZWFkUnVuKF57CiAgICAgICAgIFtfcHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOndlYlBv
c2l0aW9uLmdldCgpXTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMz
NjAyNDkxMGVjMTUxODgyYjY0YTg2Yjk4OTA1MzBjZTkyN2VmYzguLjIwYzQzNDMxMDc4N2FiYWRi
MDIyNjAzOTViNzkyMDg3NjM3OGI0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9v
bCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJy
aWRlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5kZXggMGNiMmJlOTkxZTE3NDg5
OTEyNDllZGQxYmM5ZmVlZjU1YWJmM2E4MC4uMmVmM2RiNjIzOWMxOTQ0NWEwNzUwODE1MzBlODNi
Y2E0MDI3MWJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTEzMiw3ICsxMzIs
NyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiYgZ2VvbG9jYXRpb24pCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAot
R2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigp
CitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50
OjpsYXN0UG9zaXRpb24oKQogewogICAgIHJldHVybiBjb3JlKFtbbV93ZWJWaWV3IF9nZW9sb2Nh
dGlvblByb3ZpZGVyXSBsYXN0UG9zaXRpb25dKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA0
NTZkNGJhOGJkZjBlNzE2NDQ5MDc1MzIxZjllZGQ0ZjA4NDVkZmEwLi4zNzQ1OWM2Yjg1ODQ3YzYx
MzVhYTg2MWI1MTRhMTBkNjRhODZhMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCkBAIC0yNiwyNCAr
MjYsMjQgQEAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKIAogI2ltcG9ydCAi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgiCi0jaW1wb3J0IDx3dGYvUmVmUHRyLmg+
Ci0KICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgorI2ltcG9ydCA8d3Rm
L09wdGlvbmFsLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbCA6IE5T
T2JqZWN0CiB7CiBAcHVibGljCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IF9wb3Np
dGlvbjsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIF9wb3NpdGlvbjsKIH0KIAotLSAoaWQpaW5p
dFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+
JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CistIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlv
blBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwK
IAotLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0
aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24KKy0gKGlkKWluaXRXaXRoQ29y
ZUdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRp
b25Qb3NpdGlvbgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpA
QCAtNTYsOSArNTYsMTEgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbgogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24gKnBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQogewotICAgIHJldHVybiBwb3NpdGlvbiA/
IHBvc2l0aW9uLT5faW50ZXJuYWwtPl9wb3NpdGlvbi5nZXQoKSA6IDA7CisgICAgaWYgKCFwb3Np
dGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcG9zaXRpb24t
Pl9pbnRlcm5hbC0+X3Bvc2l0aW9uOwogfQogCiAtIChpZClpbml0V2l0aFRpbWVzdGFtcDooZG91
YmxlKXRpbWVzdGFtcCBsYXRpdHVkZTooZG91YmxlKWxhdGl0dWRlIGxvbmdpdHVkZTooZG91Ymxl
KWxvbmdpdHVkZSBhY2N1cmFjeTooZG91YmxlKWFjY3VyYWN5CkBAIC02NiwxMSArNjgsMTEgQEAg
LSAoaWQpaW5pdFdpdGhUaW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgbGF0aXR1ZGU6KGRvdWJs
ZSlsYXRpdHVkZSBsb25naXR1ZGU6KGQKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfaW50ZXJuYWwgPSBbW1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb25JbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3Np
dGlvbjpHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9u
Z2l0dWRlLCBhY2N1cmFjeSldOworICAgIF9pbnRlcm5hbCA9IFtbV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsIGFsbG9jXSBpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOkdlb2xv
Y2F0aW9uUG9zaXRpb24geyB0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5
IH1dOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9z
aXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0
aW9uCistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRp
b24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKaW5kZXggZjU0
ZTY2YjgxZTE5OWI0NDQwOTU4MDZkMDRiMTEwM2YyNmRhNTA5Mi4uMjZjMzJiMTI2ZGYyNDMyNWZk
Y2U5OWI3Yjg2YThjNzU5ODJjZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5o
CkBAIC0yNCwxMCArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmgiCisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiB9CiAKLVdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb24qIGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKTsKK3N0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9u
ICopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggYmEyODZjOGQ5NzU5NzI4
OGRiOGVkMTg1YjIwOGZhOTc4MzAwZDEwZS4uYmEzZjM0MWVkMWVkNzFmZTlhNTBmM2ZhNDVhZjQ1
OTFmMzk0Mzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsMTQgKzY0
LDE0IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCiAgICAgcHJv
dmlkZXItPnVucmVnaXN0ZXJXZWJWaWV3KG1fd2ViVmlldy5nZXQoKSk7CiB9CiAKLUdlb2xvY2F0
aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQorc3RkOjpv
cHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBv
c2l0aW9uKCkKIHsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVy
OwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5nZW9sb2NhdGlvblByb3ZpZGVyKCZwcm92aWRl
cikpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBDT01QdHI8SVdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uOwogICAgIGlmIChGQUlM
RUQocHJvdmlkZXItPmxhc3RQb3NpdGlvbigmcG9zaXRpb24pKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGNvcmUocG9zaXRpb24u
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCA3YjFiZjQ4N2FhYzcw
MzM0ZTM1MTVkNzM0MWUyNjYwYTE3ZGUwMTZiLi5mNjJmNWMwZGUxM2FmODMzZTZjYjg2N2Y3MzJl
ZjU1OTVmYjk4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc3Rv
cFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkg
ZmluYWwgeyB9Ci0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9u
KCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
PiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2Vi
Q29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1
ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDRkNjMxODU2MTEw
NDVkMDNmNjNjNzYwODk1NGM5OTU2YzYzZmE1ZmUuLjBkNmI3ODRlMDc1MDMxMDhjMDM4NjcwNThl
MTZiMzk1Y2JmOGZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC04MSwxOCArODEsMTggQEAgVUxPTkcgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6UmVsZWFzZSgpCiAKIEhSRVNVTFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6aW5pdFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7Ci0gICAgbV9wb3NpdGlvbiA9IEdl
b2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUs
IGFjY3VyYWN5KTsKKyAgICBtX3Bvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbiB7IHRpbWVz
dGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiog
cG9zaXRpb24pCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoSVdlYkdl
b2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ09NUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYkdlb2xvY2F0aW9uUG9zaXRpb24oUXVlcnksIHBv
c2l0aW9uKTsKICAgICBpZiAoIXdlYkdlb2xvY2F0aW9uUG9zaXRpb24pCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24tPmltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCA3OThhYjgwODdkOWM3ZWYwZjhjZDExYWY2
Mzg4YWYzOThlZjg5MmM3Li42ZjFmYzFkY2IzNzBiMjYyZDc0MWY3YzllZDMwMzNmZmI5YzliNTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHVibGljOgogICAgIC8vIElXZWJHZW9sb2NhdGlvblBv
c2l0aW9uCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoVGlt
ZXN0YW1wKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVk
ZSwgZG91YmxlIGFjY3VyYWN5KTsKIAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24q
IGltcGwoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmdldCgpOyB9CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiYgaW1wbCgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb247IH0KIAogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9Owot
ICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bvc2l0aW9uOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9wb3NpdGlvbjsK
IH07CiAKLVdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGNvcmUoSVdlYkdlb2xvY2F0aW9u
UG9zaXRpb24qKTsKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4g
Y29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOwogCiAjZW5kaWYgLy8gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbl9oCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMDVhZGJlYzUzM2ZlOTIzMzIxMzFmZGYwOTBlMzI2NjY3M2JhZTg0Ny4uYjgzNjFj
ZTI3MzI4OTU2YTY3MmM1OWI3ZWZiMTRmYTU2ZWU3YzE5NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTEw
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdl
b2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisKIDIwMTctMTAtMTAgIEpv
YW5tYXJpZSBEaWdncyAgPGpkaWdnc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiBbQVRLXSBB
UklBIGZvcm0gcm9sZSBzaG91bGQgYmUgbWFwcGVkIHRvIEFUS19ST0xFX0xBTkRNQVJLOyBub3Qg
QVRLX1JPTEVfRk9STQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpp
bmRleCBhNjExMGQ5MTY2MWNiNWU2YmU4YzQ0YWE3MzdkNTcyOGUwN2NjYTViLi42MzNlNDc3ODE5
ZjZiYzY2MzJlZTk2ZTQ3MTE2Y2U5OWI4YzNlMDEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTI1LDcgKzEyNSw3IEBAIEBlbmQKICNlbmRpZgogCiBA
aW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKEludGVybmFsKQotLSAoaWQpaW5pdFdp
dGhHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
bj4pY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9z
aXRpb246KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3Np
dGlvbjsKIEBlbmQKIAogVGVzdFJ1bm5lcjo6flRlc3RSdW5uZXIoKQpAQCAtNDQ5LDggKzQ0OSwx
NiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBs
YXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAgICAgICAvLyBUZXN0IHRoZSBleHBvc2Vk
IEFQSS4KICAgICAgICAgcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2Nd
IGluaXRXaXRoVGltZXN0YW1wOmN1cnJlbnRUaW1lKCkgbGF0aXR1ZGU6bGF0aXR1ZGUgbG9uZ2l0
dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTphY2N1cmFjeV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
YXV0byBjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbiA9IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b246OmNyZWF0ZShjdXJyZW50VGltZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwg
cHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0
aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBz
cGVlZCk7Ci0gICAgICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9j
XSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFdURk1vdmUoY29yZUdlb2xvY2F0aW9uUG9z
aXRpb24pKV07CisgICAgICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gZ2VvbG9jYXRp
b25Qb3NpdGlvbiB7IGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5
IH07CisgICAgICAgIGlmIChwcm92aWRlc0FsdGl0dWRlKQorICAgICAgICAgICAgZ2VvbG9jYXRp
b25Qb3NpdGlvbi5hbHRpdHVkZSA9IGFsdGl0dWRlOworICAgICAgICBpZiAocHJvdmlkZXNBbHRp
dHVkZUFjY3VyYWN5KQorICAgICAgICAgICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5hbHRpdHVkZUFj
Y3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICAgICAgaWYgKHByb3ZpZGVzSGVhZGluZykK
KyAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uaGVhZGluZyA9IGhlYWRpbmc7CisgICAg
ICAgIGlmIChwcm92aWRlc1NwZWVkKQorICAgICAgICAgICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5z
cGVlZCA9IHNwZWVkOworICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihXVEZNb3ZlKGdlb2xvY2F0aW9u
UG9zaXRpb24pKV07CiAgICAgfQogICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVk
XSBzZXRQb3NpdGlvbjpwb3NpdGlvbl07CiAgICAgW3Bvc2l0aW9uIHJlbGVhc2VdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323382</attachid>
            <date>2017-10-10 21:00:07 -0700</date>
            <delta_ts>2017-10-10 21:08:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010210006.patch</filename>
            <type>text/plain</type>
            <size>66235</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uMGI1YTFmYTVjNjY5NzhiMDY3NWIxN2U1YzEwNDBk
NDMzYzJlOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlOgorICAgICAgICAtIFVzZSBzdGQ6Om9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBzZXBhcmF0ZSBib29sZWFuIG1lbWJlcnMKKyAgICAgICAgLSBNYWtlIEdl
b2xvY2F0aW9uUG9zaXRpb24gYSBzaW1wbGUgc3RydWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB2aWEg
SVBDCisgICAgICAgIC0gUmVwbGFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHdpdGgg
R2VvbG9jYXRpb25Qb3NpdGlvbgorICAgICAgICAtIE1vdmUgbG9naWMgdG8gY29uc3RydWN0IGEg
R2VvbG9jYXRpb25Qb3NpdGlvbiBmcm9tIGEgQ0xMb2NhdGlvbiBvbiBpT1MKKyAgICAgICAgICBp
biBvbmUgcGxhY2UgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OkNvb3JkaW5hdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmxhdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVzOjpsb25naXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVhZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246
Okdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xs
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oOgorCisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmVhbGx5IGZpeCB0aGUgYnVpbGQgd2l0aCBjZXJ0YWluIFNE
S3MuCiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIyMjMxNTQsIHdoaWNoIGZpeGVkIHRoZSB3cm9u
ZyBsYW1iZGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMjY2ZGZjYmI3ZjIwYjU5OWNjZjRmZGI4MGI2MDEwZTJl
YTIwYTguLjU5M2Y0MGVhNmQ2NjM2ZjBiYjBkNTk4YTEwYzBlY2IxMjYwMmQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp0aW1lc3Rh
bXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpsYXRp
dHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Omxv
bmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlv
blByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEzMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTkyMDllOTNiOTEwYjJiOTZm
NTllLi4zZDJhOWRiZjJjMGViMDkzZGQ2N2NmMGEzZTUzMmQ1MDk1YWZiN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBNaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2VuZExvY2F0aW9uOl0pOgorICAgICAgICAq
IE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bX1dlYkNvcmVM
b2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpdKToKKwogMjAxNy0x
MC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDA1YjRiY2Y5ZDdiNWRhMGFmOTBiODMyZmNiMjMzMGM3NTdmMS4uZmZjZTFh
NjkzZmY0NjYyM2VjNjAyZmMyNDJlY2I3N2Y5OTkyZjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBpbml0V2l0aFRpbWVzdGFtcDpsYXRpdHVkZTpsb25naXR1ZGU6YWNj
dXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmg6CisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggODQyODg1YWZhNzZmMjYxZGU3YTQ5NGQ0
NzQwZGY4ZGYxMDIxMTRlZi4uNWUxMGY0YWEwZDBkZTA2ZTRiYWYwMGQwNDMwODY1ZWUwZjUyY2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEw
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRX
aXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwgY29uc3Qp
OgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpjb29raWVzRW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nv
b3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRp
bmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcu
LjlhYzcyNmU5MWIxNTcwNGEzNGYyNGMwYzAyN2JkMjUzYzhhMDgzMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwz
MiArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorQ29vcmRpbmF0ZXM6OkNvb3JkaW5hdGVz
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKKyAgICA6IG1fcG9zaXRpb24oV1RGTW92
ZShwb3NpdGlvbikpCiB7Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9hbHRpdHVkZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG1faGVhZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpzcGVlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vQ29vcmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVh
MDYzODMyLi4yNzYzNzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5h
dGVzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91Ymxl
IGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENvb3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGUsIGFsdGl0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVk
ZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVk
KSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3Np
dGlvbiYmIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZXMoV1RGTW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0
ZXM+IGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0
ZXM6OmNyZWF0ZShtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUs
IG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1f
YWx0aXR1ZGVBY2N1cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblBy
b3ZpZGVTcGVlZCwgbV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRl
KCBHZW9sb2NhdGlvblBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxv
bmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZUFjY3VyYWN5KCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBj
b25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24uYWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29y
ZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkK
LSAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNj
dXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpCi0gICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChz
cGVlZCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5KQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAg
ZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBt
X2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAg
ICAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9v
bCBtX2NhblByb3ZpZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFi
Y2U0YzAwNWFjMWQ2MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAz
ZWY3OTA0NTdlZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdl
b2xvY2F0CiBzdGF0aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtd
ID0gIkdlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwog
c3RhdGljIGNvbnN0IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNz
YWdlW10gPSAiT3JpZ2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRp
b24gc2VydmljZSI7CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0
aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Q
cm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlv
bi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBv
c2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRl
SGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVk
KCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0
aW9uLT50aW1lc3RhbXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBH
ZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52
YWx1ZSgpKSksIHRpbWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3Jl
YXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMs
NyBAQCBHZW9wb3NpdGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRl
R2VvcG9zaXRpb24oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5
MzkwOGMzYWYwLi5mNzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRp
b247CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdl
YktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAg
ICAvLyBpcyBwdWJsaXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRj
ZDA1NDY5N2Q3ZGIxYWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4
Yzk2YTY5NzBjMzE2YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTks
NyArOTksNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9y
OwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9y
T2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRF
cnJvcihlcnJvcik7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG9jYXRpb25Db250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQ
b3NpdGlvbi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAg
IGlmIChtX2xhc3RQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5i
NjVkNjBkNTQxZWM1Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2Vv
bG9jYXRpb24mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAg
IEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2
ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdo
IGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNj
OWVkZTJhOGE2NzBkMzA1NzdiMWRiMDM1ZGJjZDYuLjVjMzU2MGUzNGRjZjJjZDliZmQ0NGZmNzRm
MTE2Y2NkNGMyNDk1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4MSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JK
Q19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9z
aXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0
aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFj
eShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJv
dmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVl
ZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91Ymxl
IGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25n
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgLTEgfTsKIAotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQWx0
aXR1ZGU7IH0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVIZWFkaW5nOyB9Ci0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVTcGVlZDsgfQor
ICAgIGRvdWJsZSBsYXRpdHVkZSB7IC0xIH07CisgICAgZG91YmxlIGxvbmdpdHVkZSB7IC0xIH07
CisgICAgZG91YmxlIGFjY3VyYWN5IHsgLTEgfTsKIAotcHJpdmF0ZToKLSAgICBHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgICAgICA6IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
LSAgICAgICAgLCBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQotICAgICAgICAsIG1fYWx0
aXR1ZGUoMCkKLSAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAgICAgLCBtX2hl
YWRpbmcoMCkKLSAgICAgICAgLCBtX3NwZWVkKDApCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0
aXR1ZGUoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeShmYWxz
ZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
UHJvdmlkZVNwZWVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZDsKIAotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5n
LCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi0gICAg
ICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJh
Y3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKLSAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKLSAgICAgICAgLCBtX3NwZWVkKHNwZWVkKQotICAgICAgICAsIG1fY2FuUHJvdmlk
ZUFsdGl0dWRlKHByb3ZpZGVzQWx0aXR1ZGUpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeShwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgICwgbV9jYW5Qcm92
aWRlSGVhZGluZyhwcm92aWRlc0hlYWRpbmcpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
cHJvdmlkZXNTcGVlZCkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdlb2xvY2F0aW9uUG9zaXRpb24mKTsKK307
CiAKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBHZW9sb2NhdGlvblBvc2l0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHRpbWVzdGFtcDsKKyAgICBlbmNvZGVyIDw8IGxhdGl0dWRlOworICAg
IGVuY29kZXIgPDwgbG9uZ2l0dWRlOworICAgIGVuY29kZXIgPDwgYWNjdXJhY3k7CisgICAgZW5j
b2RlciA8PCBhbHRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFsdGl0dWRlQWNjdXJhY3k7CisgICAg
ZW5jb2RlciA8PCBoZWFkaW5nOworICAgIGVuY29kZXIgPDwgc3BlZWQ7Cit9CiAKLSAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKLSAgICBkb3VibGUgbV9sb25naXR1ZGU7Ci0gICAgZG91YmxlIG1fYWNj
dXJhY3k7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGU7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBkb3VibGUgbV9oZWFkaW5nOwotICAgIGRvdWJsZSBtX3NwZWVkOwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24udGltZXN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubGF0aXR1ZGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5sb25naXR1ZGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5hY2N1cmFjeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvc2l0aW9uLmFsdGl0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmhlYWRpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5zcGVl
ZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1
ZGU7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OwotICAgIGJvb2wgbV9j
YW5Qcm92aWRlSGVhZGluZzsKLSAgICBib29sIG1fY2FuUHJvdmlkZVNwZWVkOwotfTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhhODQzNDJiMjQ3NDYyMTE3
YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAu
dGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0
ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVk
ZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBp
ZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUg
PSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjAp
CisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJz
ZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBlZDI2MmFjZDlkYS4uZDM3
NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU1MCw2ICszNTUw
LDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzYw
OUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAv
KiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Mzc5NjRDRjFG
OERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjcz
MDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBM
b2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4
NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtMTE4NzMs
NiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQgLyogRXJyb3JDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2
NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2
ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQx
RUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEw
IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdyb3VwIjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3NDZBRjExMTRGNERERTYw
MDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3
QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0RERFNjAwM0U3QTcwIC8q
IENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcgQEAKIAkJCQlDRDRCRTUy
QTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYyNTJFMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEyMjU4MWFhZjIxZTU3MDMy
ZGIyY2JiZGRiMjc0ZS4uMThkYWZkOWU3ZmNiZDRiYjMxNWI5ZTQ3M2Q3ZTc3ZDBlZGE4ODU0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAg
bV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnNldFBvc2l0aW9uKFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9uKQor
dm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRp
b24mJiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24p
OwogICAgIGNsZWFyRXJyb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2EKIHsKICAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IGVy
cm9yTWVzc2FnZTsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IG51bGxwdHI7CisgICAgbV9sYXN0UG9z
aXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAK
QEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lv
blRpbWVyRmlyZWQoKQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQogewot
ICAgIG1fbGFzdFBvc2l0aW9uID0gbnVsbHB0cjsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IHN0ZDo6
bnVsbG9wdDsKICAgICBjbGVhckVycm9yKCk7CiAgICAgbV9wZXJtaXNzaW9uU3RhdGUgPSBQZXJt
aXNzaW9uU3RhdGVVbnNldDsKIH0KQEAgLTE1Niw5ICsxNTYsOSBAQCB2b2lkIEdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQzOAogfQogCi1HZW9sb2NhdGlv
blBvc2l0aW9uKiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9w
dGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBv
c2l0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24uZ2V0KCk7CisgICAgcmV0dXJu
IG1fbGFzdFBvc2l0aW9uOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNV
cGRhdGVDb250cm9sbGVyKCkKQEAgLTE3Miw5ICsxNzIsOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoKQogewogICAgIEFTU0VSVChtX2NvbnRyb2xs
ZXIpOwogCi0gICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgaWYgKG1fbGFzdFBv
c2l0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9oYXNFcnJvcik7Ci0gICAgICAgIG1fY29udHJv
bGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFzdFBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAgbV9j
b250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQoKm1fbGFzdFBvc2l0aW9uKTsKICAgICB9IGVsc2Ug
aWYgKG1faGFzRXJyb3IpIHsKICAgICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2Nh
dGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwg
bV9lcnJvck1lc3NhZ2UpOwogICAgICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQoZ2Vv
bG9jYXRpb0Vycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDg1ZmMwMzgwNjE0ZjRjZGMzMjRiYWY1
ZmExYTY1MjUxOTRhMzY2MGIuLmZjMWI1MWQ3ZjcxMGZjMzg2MjFlZGNjNzZlNjA0ZmM3NmRhYTEw
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaApAQCAtMzIsNiArMzIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDAsNyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwog
CiAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIGluIFdlYkNvcmUuIEl0IHNob3VsZCBiZSBt
b3ZlZCB0byBXZWJLaXQuCiAvLyBQcm92aWRlcyBhIG1vY2sgb2JqZWN0IGZvciB0aGUgZ2VvbG9j
YXRpb24gY2xpZW50LgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgp
OwogICAgIHZvaWQgc2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAg
IHZvaWQgc2V0UG9zaXRpb24oUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpOworICAgIHZv
aWQgc2V0UG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiYmKTsKICAgICB2b2lkIHNldFBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9p
ZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9mUGVuZGluZ1Bl
cm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsK
LSAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAK
QEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRXJyb3IoKTsKIAogICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0
aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwogICAgIGJvb2wgbV9oYXNFcnJvcjsKICAgICBT
dHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgVGltZXIgbV9jb250cm9sbGVyVGltZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IGJi
ZjlmYTU0Y2EzYzgzNjNkZGU1NTBiMzhjYjE3ZmY4OGFmYTlkZjMuLjNmMTU1OGI3NTJiZWY4Yzky
YjQxNjk2ZmQ0NmEwYzA4MWI1YmJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zMCwzNCArMzAsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBk
b3VibGUgc3BlZWQpCi17Ci0gICAgbV9kYXRhLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLSAgICBt
X2RhdGEubGF0aXR1ZGUgPSBsYXRpdHVkZTsKLSAgICBtX2RhdGEubG9uZ2l0dWRlID0gbG9uZ2l0
dWRlOwotICAgIG1fZGF0YS5hY2N1cmFjeSA9IGFjY3VyYWN5OwotICAgIG1fZGF0YS5jYW5Qcm92
aWRlQWx0aXR1ZGUgPSBwcm92aWRlc0FsdGl0dWRlOwotICAgIG1fZGF0YS5hbHRpdHVkZSA9IGFs
dGl0dWRlOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHByb3ZpZGVz
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVIZWFkaW5nID0gcHJvdmlkZXNIZWFkaW5n
OwotICAgIG1fZGF0YS5oZWFkaW5nID0gaGVhZGluZzsKLSAgICBtX2RhdGEuY2FuUHJvdmlkZVNw
ZWVkID0gcHJvdmlkZXNTcGVlZDsKLSAgICBtX2RhdGEuc3BlZWQgPSBzcGVlZDsKLX0KK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbigpCitSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBnZW9sb2NhdGlvblBvc2l0
aW9uKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24o
V1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OkRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0g
ICAgSVBDOjpTaW1wbGVBcmd1bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+
OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwotfQotCi1ib29sIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERhdGEmIGRhdGEpCitXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7Ci0gICAgcmV0
dXJuIElQQzo6U2ltcGxlQXJndW1lbnRDb2RlcjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRh
Pjo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCAxZGQ3
OTg5YmNjMDNkNDAwMDBkY2Q5Y2MyNjk0Y2JhYmNmZmU0NjAxLi40MThhYzM2MzE0N2U0NDA5ZTQy
ZGZmYzFhZDgxYjE0YjFjNTI4ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdlb2xvY2F0
aW9uUG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgSVBDIHsKQEAgLTM4LDU2ICszOSwyOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3Qg
RGF0YSB7Ci0gICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgRGF0YSYpOwotCi0gICAgICAgIGRv
dWJsZSB0aW1lc3RhbXA7Ci0gICAgICAgIGRvdWJsZSBsYXRpdHVkZTsKLSAgICAgICAgZG91Ymxl
IGxvbmdpdHVkZTsKLSAgICAgICAgZG91YmxlIGFjY3VyYWN5OwotCi0gICAgICAgIGRvdWJsZSBh
bHRpdHVkZTsKLSAgICAgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgICAgIGRvdWJs
ZSBoZWFkaW5nOwotICAgICAgICBkb3VibGUgc3BlZWQ7Ci0KLSAgICAgICAgYm9vbCBjYW5Qcm92
aWRlQWx0aXR1ZGU7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZVNw
ZWVkOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGNy
ZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUs
IGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwg
Ym9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQs
IGRvdWJsZSBzcGVlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFj
eSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
YWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVk
LCBzcGVlZCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+
IGNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCiAgICAgdmlydHVhbCB+
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpOwogCi0gICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS50aW1lc3RhbXA7IH0KLSAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEubGF0aXR1ZGU7IH0KLSAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmxvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5hY2N1cmFjeTsgfQorICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi50aW1lc3RhbXA7IH0KKyAgICBkb3VibGUgbGF0
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sYXRpdHVkZTsgfQorICAgIGRv
dWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sb25naXR1ZGU7
IH0KKyAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5h
Y2N1cmFjeTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5hbHRp
dHVkZUFjY3VyYWN5OyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uc3BlZWQ7IH0KIAot
ICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNhblBy
b3ZpZGVBbHRpdHVkZTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5hbHRpdHVkZTsgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAg
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0dWRl
QWNjdXJhY3k7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5oZWFkaW5nOyB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQ7IH0KLSAgICBkb3VibGUgc3Bl
ZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc3BlZWQ7IH0KLQotICAgIGNvbnN0IERhdGEmIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uJiBjb3JlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlv
bjsgfQogCiBwcml2YXRlOgotICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVz
dGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ks
IGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0
aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFk
aW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpOwor
ICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCisgICAgICAgIDogbV9jb3JlUG9zaXRpb24o
V1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkKKyAgICB7CisgICAgfQogCi0gICAgRGF0YSBt
X2RhdGE7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBtX2NvcmVQb3NpdGlvbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNTdmYmRjZmQz
ZWU2ZTk5OWQyZDVkM2IxZDAzNTk1MjIwYWZkYzRlZC4uMzI0MWQ3MjdkM2M1NzE2Mjk1NjNiMWEx
OTdiYjkyNTM3Y2RmMmE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0MywxNiBAQCBXS0dl
b2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9uQ3JlYXRlKGRvdWJsZSB0
aW1lc3RhbXAsIGRvdWJsZSBsYQogCiBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2Nh
dGlvblBvc2l0aW9uQ3JlYXRlX2IoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwg
ZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9v
bCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCiB7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1
ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHBy
b3ZpZGVzU3BlZWQsIHNwZWVkKTsKKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNv
cmVQb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsK
KyAgICBpZiAocHJvdmlkZXNBbHRpdHVkZSkKKyAgICAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRl
ID0gYWx0aXR1ZGU7CisgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAg
Y29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OworICAgIGlm
IChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgIGNvcmVQb3NpdGlvbi5oZWFkaW5nID0gaGVhZGlu
ZzsKKyAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAgICAgY29yZVBvc2l0aW9uLnNwZWVkID0g
c3BlZWQ7CisKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAgICAgcmV0dXJuIHRvQVBJKCZwb3NpdGlvbi5s
ZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA4ZWVmYmVjYzc0Y2NjYjE3
NDA5YWNmYTE3MjhjOWJiOTMwOTI2YmZhLi42ZjgxOWRmMTQ3NTc2ZWZlNTk1Yjg5N2MwZGIyZGRj
MzM0N2YxOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtMzksMjkgKzM5LDcgQEAgKyAo
aW5zdGFuY2V0eXBlKXBvc2l0aW9uV2l0aExvY2F0aW9uOihDTExvY2F0aW9uICopbG9jYXRpb24K
ICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYm9vbCBjYW5Q
cm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJh
Y3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAg
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAg
ICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1
ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kgPSBmYWxzZTsK
LSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9IHRydWU7Ci0gICAgZG91YmxlIHNw
ZWVkID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNwZWVkIDwgMC4wKQotICAgICAgICBjYW5Q
cm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVl
OwotICAgIGRvdWJsZSBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotICAgIGlmIChoZWFkaW5n
IDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVhZGluZyA9IGZhbHNlOwotCi0gICAgQ0xMb2Nh
dGlvbkNvb3JkaW5hdGUyRCBjb29yZGluYXRlID0gbG9jYXRpb24uY29vcmRpbmF0ZTsKLSAgICBk
b3VibGUgdGltZXN0YW1wID0gbG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3
MDsKLQotICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUo
dGltZXN0YW1wLCBjb29yZGluYXRlLmxhdGl0dWRlLCBjb29yZGluYXRlLmxvbmdpdHVkZSwgbG9j
YXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBj
YW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhl
YWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwgc3BlZWQpLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiB7IGxvY2F0aW9uIH0pLmxlYWtSZWYoKSkg
YXV0b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ci5jcHAKaW5kZXggZGI3N2YzODkwYzU1ZDM2NjE4NjI2YTNlYmNlNWRhZTk2ZWM0ZTBlMi4uOWIy
MWNmMjhiMWRhM2M4NjRkZjVlYWU4YjllMTRmY2NmNjc5ZTE0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlci5jcHAKQEAgLTgxLDcgKzgxLDEwIEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92
aWRlcjo6c3RvcFVwZGF0aW5nKCkKIAogdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3kpCiB7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBv
c2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1
ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHRydWUsIGFsdGl0dWRlLCB0cnVlLCBhbHRpdHVkZUFj
Y3VyYWN5LCBmYWxzZSwgMCwgZmFsc2UsIDApOworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSB9OworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZSA9IGFsdGl0dWRlOworICAgIGNvcmVQ
b3NpdGlvbi5hbHRpdHVkZUFjY3VycmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgUmVmUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAgICAgbV9nZW9sb2NhdGlvbk1hbmFn
ZXItPnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAKaW5kZXggODdiMjk2ODZiYmU1NmZmZTM0ZWU3MzQ5YzFmOGE5MGJmNjhhMjAxOS4uNTJi
MDExZjVkYmFjNmNkNmI3MDczYjgyMDU0NmZiNjI2ZTIxYTRkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC05MCw3ICs5MSw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvCiAgICAgaWYgKCFw
cm9jZXNzUG9vbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdl
UG9zaXRpb24ocG9zaXRpb24tPmRhdGEoKSkpOworICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3Np
dGlvbihwb3NpdGlvbi0+Y29yZVBvc2l0aW9uKCkpKTsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IGMzN2IzMzE0MTNmYjNlMmFm
MzZhYzIwMDZjMWUzOTI4NTRmNzQ3YWEuLjg5MmRlZTEzZTE2OTNiNjhjN2MzMTU2YjMyNGQyNmVm
ODE4NTE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAtNzQsMTEgKzc0LDYgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiB2b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4o
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgaWQ8V2ViQWxsb3dEZW55
UG9saWN5TGlzdGVuZXI+LCBVSVdpbmRvdyopOwogfTsKIAotc3RhdGljIGlubGluZSBSZWY8V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbj4ga2l0KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gKnBv
c2l0aW9uKQotewotICAgIHJldHVybiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUocG9z
aXRpb24tPnRpbWVzdGFtcCgpLCBwb3NpdGlvbi0+bGF0aXR1ZGUoKSwgcG9zaXRpb24tPmxvbmdp
dHVkZSgpLCBwb3NpdGlvbi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVk
ZSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGUoKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFj
Y3VyYWN5KCksIHBvc2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5jYW5Qcm92
aWRlSGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNw
ZWVkKCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLX0KLQogc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVz
dERhdGEgewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwogICAgIFJlZlB0cjxX
ZWJGcmFtZVByb3h5PiBmcmFtZTsKQEAgLTMwNCwxMCArMjk5LDEwIEBAIC0gKHZvaWQpZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAgICAgW19saXN0ZW5lciBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25EZW5pZWRdOwogfQogCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbiAqKWNvcmVQb3NpdGlvbgorLSAodm9pZClwb3NpdGlvbkNoYW5n
ZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlUG9zaXRpb24KIHsKICAgICBB
U1NFUlQoX2xpc3RlbmVyKTsKLSAgICBhdXRvIHBvc2l0aW9uID0ga2l0KGNvcmVQb3NpdGlvbik7
CisgICAgYXV0byBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZN
b3ZlKGNvcmVQb3NpdGlvbikpOwogICAgIFtfbGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOndyYXBw
ZXIocG9zaXRpb24uZ2V0KCkpXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCBkMzZlNjhkNWE4NjU1MjY4MmYxNjMyNjk1ZTFjYjk2MjU4M2Q3NzQ0Li45NTY3NTE4MGM0M2Ew
YzE2NGViMmE1MDRiY2YwMTAzMmNmODc3NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cApAQCAtOTEsMTkgKzkxLDE3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFi
bGVIaWdoQWNjdXJhY3lGb3JQYWdlKFdlYlBhZ2UmIHBhZ2UsIGJvb2wgZW5hCiAgICAgICAgIG1f
cHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6U2V0RW5hYmxlSGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeVNo
b3VsZEJlRW5hYmxlZCksIDApOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlk
Q2hhbmdlUG9zaXRpb24oY29uc3QgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSYgZGF0YSkK
K3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBHZW9s
b2NhdGlvblBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0g
ICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3Np
dGlvbjo6Y3JlYXRlKGRhdGEudGltZXN0YW1wLCBkYXRhLmxhdGl0dWRlLCBkYXRhLmxvbmdpdHVk
ZSwgZGF0YS5hY2N1cmFjeSwgZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGUsIGRhdGEuYWx0aXR1ZGUs
IGRhdGEuY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIGRhdGEuYWx0aXR1ZGVBY2N1cmFjeSwg
ZGF0YS5jYW5Qcm92aWRlSGVhZGluZywgZGF0YS5oZWFkaW5nLCBkYXRhLmNhblByb3ZpZGVTcGVl
ZCwgZGF0YS5zcGVlZCk7Ci0KICAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdlQ29w
eTsKICAgICBjb3B5VG9WZWN0b3IobV9wYWdlU2V0LCB3ZWJQYWdlQ29weSk7CiAgICAgZm9yIChh
dXRvJiBwYWdlIDogd2ViUGFnZUNvcHkpIHsKICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkp
Ci0gICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2Uo
KSktPnBvc2l0aW9uQ2hhbmdlZChwb3NpdGlvbi5nZXQoKSk7CisgICAgICAgICAgICBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSktPnBvc2l0aW9uQ2hhbmdlZChw
b3NpdGlvbik7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7CisgICAgVU5V
U0VEX1BBUkFNKHBvc2l0aW9uKTsKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRleCBkMWYzY2I3MzYwMDMxY2RlOWQyNGZiYzQ1ZjI5
ZjUwY2M3OTA2ZTZiLi40ZjQ0N2FmMGEzNzQ2NTQzOGY1ZjI5YjE3OGYwN2I2NjIzNzczZTQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEdlb2xvY2F0aW9uOworY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Miw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1VwZGF0aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fcGFnZVNldC5pc0VtcHR5KCk7IH0K
ICAgICBib29sIGlzSGlnaEFjY3VyYWN5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2hpZ2hB
Y2N1cmFjeVBhZ2VTZXQuaXNFbXB0eSgpOyB9CiAKLSAgICB2b2lkIGRpZENoYW5nZVBvc2l0aW9u
KGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGEmKTsKKyAgICB2b2lkIGRpZENoYW5n
ZVBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mKTsKICAgICB2b2lk
IGRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCByZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCAyNzE1NGY1YTM2ZWUzMDMy
MWJhNWUxZDllMjcyZTg0MGNhYzc3MWU5Li45N2RhMjg1NmJkMjlhNmUwNWNmNzcwZjVjYzI5ZTc3
NjliNmQ0Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
QEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViR2VvbG9j
YXRpb25NYW5hZ2VyIHsKLSAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUG9zaXRpb246OkRhdGEgcG9zaXRpb24pOworICAgIERpZENoYW5nZVBvc2l0aW9uKFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gcG9zaXRpb24pOwogICAgIERpZEZhaWxUb0RldGVybWlu
ZVBvc2l0aW9uKFN0cmluZyBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBS
ZXNldFBlcm1pc3Npb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCAz
YmM4ZGZjYjE0MDZiNzllODc2MDRmNTA5MzUzNjhhNTk0MmQ0N2NlLi44OTEzMTNjZTlmYWE3NjNj
NTE1NjljY2U5ZmNiOTg1YTRiNDMyODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAKQEAgLTY0LDEwICs2NCwxMCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpzZXRFbmFi
bGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGVkKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyPigpLT5zZXRFbmFibGVIaWdoQWNjdXJh
Y3lGb3JQYWdlKG1fcGFnZSwgZW5hYmxlZCk7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1p
c3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aAppbmRleCAxOTc3NzExMTNhNjlkNTQ3YjYzOTE0YjMwMzczMjkyZjQ3MWNhZjAyLi5jZmU4ZDQy
NDg1OWQ4ZjExNzBmYTg5ZTc2OTQwNjBiNzgyMGQzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcFVwZGF0aW5n
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJp
ZGU7CiAKLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihX
ZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lv
blJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92
aWRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyLmgKaW5kZXggODA5NWQ1M2M3ODJiNDE5MTZiNTNlMGY4ZDZiMTMyMWZk
ZDMwYWIwNS4uMDQ5MGZjZmIxZGIwNGJmNmIwMjRlOGU0MDk2NzU3MGY3YzVhYzEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2Nh
dGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgR2Vv
bG9jYXRpb25Qb3NpdGlvbjsKIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRl
ZDsKIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkOwogCi0tICh2b2lkKXBv
c2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiopcG9zaXRpb247Cist
ICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKXBv
c2l0aW9uOwogLSAodm9pZCllcnJvck9jY3VycmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZTsK
IC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbjsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Q
cm92aWRlci5tbQppbmRleCBhZWQ5NTYyMWM3ODUxZDM1NzE0MjBjMGM2MjUxN2ZhYjI1MDUzNjA2
Li5kOWYwMzNhN2Q3MjBhMTRlMTEzMjE2NzIwZjZmMGI2Mzg0ZWExMzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJv
dmlkZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCkBAIC0xNjUsMjkgKzE2NSw3IEBAIC0gKHZvaWQpbG9j
YXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkQ2hhbmdlQXV0aG9y
aXphdGlvblN0YXR1CiAKIC0gKHZvaWQpc2VuZExvY2F0aW9uOihDTExvY2F0aW9uICopbmV3TG9j
YXRpb24KIHsKLSAgICAvLyBOb3JtYWxpemUuCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUg
PSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kgPSB0cnVlOwotICAg
IGRvdWJsZSBhbHRpdHVkZSA9IG5ld0xvY2F0aW9uLmFsdGl0dWRlOwotICAgIGRvdWJsZSBhbHRp
dHVkZUFjY3VyYWN5ID0gbmV3TG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAgICBpZiAoYWx0
aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1ZGUgPSBmYWxz
ZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kgPSBmYWxzZTsKLSAgICB9Ci0K
LSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9IHRydWU7Ci0gICAgZG91YmxlIHNwZWVkID0gbmV3
TG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNwZWVkIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRl
U3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVlOwotICAg
IGRvdWJsZSBoZWFkaW5nID0gbmV3TG9jYXRpb24uY291cnNlOwotICAgIGlmIChoZWFkaW5nIDwg
MC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVhZGluZyA9IGZhbHNlOwotCi0gICAgZG91YmxlIHRp
bWVzdGFtcCA9IFtuZXdMb2NhdGlvbi50aW1lc3RhbXAgdGltZUludGVydmFsU2luY2UxOTcwXTsK
LSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gZ2VvbG9jYXRpb25Qb3NpdGlvbiA9IEdl
b2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIG5ld0xvY2F0aW9uLmNvb3JkaW5h
dGUubGF0aXR1ZGUsIG5ld0xvY2F0aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlLCBuZXdMb2NhdGlv
bi5ob3Jpem9udGFsQWNjdXJhY3ksIGNhblByb3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblBy
b3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGlu
ZywgaGVhZGluZywgY2FuUHJvdmlkZVNwZWVkLCBzcGVlZCk7Ci0gICAgW19wb3NpdGlvbkxpc3Rl
bmVyIHBvc2l0aW9uQ2hhbmdlZDpnZW9sb2NhdGlvblBvc2l0aW9uLmdldCgpXTsKKyAgICBbX3Bv
c2l0aW9uTGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOkdlb2xvY2F0aW9uUG9zaXRpb24geyBuZXdM
b2NhdGlvbiB9XTsKIH0KIAogLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5h
Z2VyICopbWFuYWdlciBkaWRVcGRhdGVMb2NhdGlvbnM6KE5TQXJyYXkgKilsb2NhdGlvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Q
cm92aWRlcklPUy5tbQppbmRleCAwZDUzYWYwMzg1YmM0MTgzYWY4Njg2YjZjMzc0M2RiNWZjNWMx
NDhhLi4xZDI4MGMxYWNkNTkxZTdjMWFlYzY4OWFiN2EyMzQ0NjgzYWJiNjYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tCkBAIC00NCw3ICs0NCw3IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
QGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIChJbnRlcm5hbCkKLS0gKGlkKWluaXRX
aXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29y
ZUdlb2xvY2F0aW9uUG9zaXRpb247CistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBlbmQKIAog
Ly8gQ29yZUxvY2F0aW9uIHJ1bnMgaW4gdGhlIG1haW4gdGhyZWFkLiBXZWJHZW9sb2NhdGlvblBy
b3ZpZGVySU9TIGxpdmVzIG9uIHRoZSBXZWJUaHJlYWQuCkBAIC0zNjEsOSArMzYxLDkgQEAgLSAo
dm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQKICAgICB9KTsKIH0KIAotLSAodm9p
ZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qKXBvc2l0aW9u
CistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYm
KXBvc2l0aW9uCiB7Ci0gICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYlBv
c2l0aW9uID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRo
R2VvbG9jYXRpb25Qb3NpdGlvbjpwb3NpdGlvbl0pOworICAgIFJldGFpblB0cjxXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uPiB3ZWJQb3NpdGlvbiA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246V1RGTW92ZShwb3NpdGlvbild
KTsKICAgICBXZWJUaHJlYWRSdW4oXnsKICAgICAgICAgW19wcm92aWRlciBwb3NpdGlvbkNoYW5n
ZWQ6d2ViUG9zaXRpb24uZ2V0KCldOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
aW5kZXggMzM2MDI0OTEwZWMxNTE4ODJiNjRhODZiOTg5MDUzMGNlOTI3ZWZjOC4uMjBjNDM0MzEw
Nzg3YWJhZGIwMjI2MDM5NWI3OTIwODc2Mzc4YjQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1
cmFjeShib29sKSBvdmVycmlkZSB7IH0KICNlbmRpZgogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCAwY2IyYmU5
OTFlMTc0ODk5MTI0OWVkZDFiYzlmZWVmNTVhYmYzYTgwLi4yZWYzZGI2MjM5YzE5NDQ1YTA3NTA4
MTUzMGU4M2JjYTQwMjcxYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTMy
LDcgKzEzMiw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9u
KEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBv
c2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRp
b25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgcmV0dXJuIGNvcmUoW1ttX3dlYlZpZXcg
X2dlb2xvY2F0aW9uUHJvdmlkZXJdIGxhc3RQb3NpdGlvbl0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1t
CmluZGV4IDQ1NmQ0YmE4YmRmMGU3MTY0NDkwNzUzMjFmOWVkZDRmMDg0NWRmYTAuLjM3NDU5YzZi
ODU4NDdjNjEzNWFhODYxYjUxNGExMGQ2NGE4NmExYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KQEAg
LTI2LDI0ICsyNiwyNCBAQAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogCiAj
aW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHd0Zi9S
ZWZQdHIuaD4KLQogI2ltcG9ydCA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CisjaW1w
b3J0IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVy
bmFsIDogTlNPYmplY3QKIHsKIEBwdWJsaWMKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlv
bj4gX3Bvc2l0aW9uOworICAgIEdlb2xvY2F0aW9uUG9zaXRpb24gX3Bvc2l0aW9uOwogfQogCi0t
IChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Q
b3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25J
bnRlcm5hbAogCi0tIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8
R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgorLSAoaWQpaW5p
dFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVH
ZW9sb2NhdGlvblBvc2l0aW9uCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAo
IXNlbGYpCkBAIC01Niw5ICs1NiwxMSBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uCiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIGNvcmUoV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbiAqcG9zaXRpb24pCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pCiB7Ci0gICAgcmV0dXJuIHBv
c2l0aW9uID8gcG9zaXRpb24tPl9pbnRlcm5hbC0+X3Bvc2l0aW9uLmdldCgpIDogMDsKKyAgICBp
ZiAoIXBvc2l0aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBw
b3NpdGlvbi0+X2ludGVybmFsLT5fcG9zaXRpb247CiB9CiAKIC0gKGlkKWluaXRXaXRoVGltZXN0
YW1wOihkb3VibGUpdGltZXN0YW1wIGxhdGl0dWRlOihkb3VibGUpbGF0aXR1ZGUgbG9uZ2l0dWRl
Oihkb3VibGUpbG9uZ2l0dWRlIGFjY3VyYWN5Oihkb3VibGUpYWNjdXJhY3kKQEAgLTY2LDExICs2
OCwxMSBAQCAtIChpZClpbml0V2l0aFRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCBsYXRpdHVk
ZTooZG91YmxlKWxhdGl0dWRlIGxvbmdpdHVkZTooZAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIF9pbnRlcm5hbCA9IFtb
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGFsbG9jXSBpbml0V2l0aENvcmVHZW9sb2Nh
dGlvblBvc2l0aW9uOkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0
dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KV07CisgICAgX2ludGVybmFsID0gW1tXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRp
b246R2VvbG9jYXRpb25Qb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwg
YWNjdXJhY3kgfV07CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKGlkKWluaXRXaXRoR2VvbG9j
YXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0
aW9uUG9zaXRpb24KKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRp
b25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCiB7CiAgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKICAgICBpZiAoIXNlbGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaApp
bmRleCBmNTRlNjZiODFlMTk5YjQ0NDA5NTgwNmQwNGIxMTAzZjI2ZGE1MDkyLi4yNmMzMmIxMjZk
ZjI0MzI1ZmRjZTk5YjdiODZhOGM3NTk4MmNkN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbklu
dGVybmFsLmgKQEAgLTI0LDEwICsyNCwxMSBAQAogICovCiAKICNpbXBvcnQgIldlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIH0KIAotV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiogY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopOworc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24gKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCBiYTI4NmM4
ZDk3NTk3Mjg4ZGI4ZWQxODViMjA4ZmE5NzgzMDBkMTBlLi5iYTNmMzQxZWQxZWQ3MWZlOWE1MGYz
ZmE0NWFmNDU5MWYzOTQzNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02
NCwxNCArNjQsMTQgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c3RvcFVwZGF0aW5nKCkK
ICAgICBwcm92aWRlci0+dW5yZWdpc3RlcldlYlZpZXcobV93ZWJWaWV3LmdldCgpKTsKIH0KIAot
R2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigp
CitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50
OjpsYXN0UG9zaXRpb24oKQogewogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4g
cHJvdmlkZXI7CiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIo
JnByb3ZpZGVyKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb247CiAgICAg
aWYgKEZBSUxFRChwcm92aWRlci0+bGFzdFBvc2l0aW9uKCZwb3NpdGlvbikpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gY29yZShw
b3NpdGlvbi5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDdiMWJm
NDg3YWFjNzAzMzRlMzUxNWQ3MzQxZTI2NjBhMTdkZTAxNmIuLmY2MmY1YzBkZTEzYWY4MzNlNmNi
ODY3ZjczMmVmNTU5NWZiOTg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCkgZmluYWw7CiAgICAg
dm9pZCBzdG9wVXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSBmaW5hbCB7IH0KLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0
UG9zaXRpb24oKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIGZpbmFsOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsUGVybWlz
c2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNGQ2
MzE4NTYxMTA0NWQwM2Y2M2M3NjA4OTU0Yzk5NTZjNjNmYTVmZS4uMGQ2Yjc4NGUwNzUwMzEwOGMw
Mzg2NzA1OGUxNmIzOTVjYmY4ZmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTgxLDE4ICs4MSwxOCBAQCBVTE9ORyBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpSZWxlYXNlKCkKIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjppbml0V2l0aFRpbWVzdGFtcChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKLSAgICBtX3Bvc2l0
aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxv
bmdpdHVkZSwgYWNjdXJhY3kpOworICAgIG1fcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9u
IHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OwogICAgIHJldHVy
biBTX09LOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBjb3JlKElXZWJHZW9sb2NhdGlvblBv
c2l0aW9uKiBwb3NpdGlvbikKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29y
ZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7CiAgICAgaWYgKCFwb3NpdGlv
bikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbihR
dWVyeSwgcG9zaXRpb24pOwogICAgIGlmICghd2ViR2VvbG9jYXRpb25Qb3NpdGlvbikKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
d2ViR2VvbG9jYXRpb25Qb3NpdGlvbi0+aW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDc5OGFiODA4N2Q5YzdlZjBm
OGNkMTFhZjYzODhhZjM5OGVmODkyYzcuLjZmMWZjMWRjYjM3MGIyNjJkNzQxZjdjOWVkMzAzM2Zm
YjljOWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5p
dFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbiogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uZ2V0KCk7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+JiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQg
eyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IG1fcG9zaXRp
b247CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bv
c2l0aW9uOwogfTsKIAotV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogY29yZShJV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiopOworc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CiAKICNlbmRpZiAvLyBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAwNWFkYmVjNTMzZmU5MjMzMjEzMWZkZjA5MGUzMjY2NjczYmFlODQ3
Li5iODM2MWNlMjczMjg5NTZhNjcyYzU5YjdlZmIxNGZhNTZlZTdjMTk0IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rl
cm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKwogMjAxNy0x
MC0xMCAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6
IFtBVEtdIEFSSUEgZm9ybSByb2xlIHNob3VsZCBiZSBtYXBwZWQgdG8gQVRLX1JPTEVfTEFORE1B
Uks7IG5vdCBBVEtfUk9MRV9GT1JNCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVy
TWFjLm1tCmluZGV4IGE2MTEwZDkxNjYxY2I1ZTZiZThjNDRhYTczN2Q1NzI4ZTA3Y2NhNWIuLjYz
M2U0Nzc4MTlmNmJjNjYzMmVlOTZlNDcxMTZjZTk5YjhjM2UwMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogI2Vu
ZGlmCiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAoSW50ZXJuYWwpCi0tIChp
ZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uPiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoR2VvbG9j
YXRpb25Qb3NpdGlvbjooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2Nh
dGlvblBvc2l0aW9uOwogQGVuZAogCiBUZXN0UnVubmVyOjp+VGVzdFJ1bm5lcigpCkBAIC00NDks
OCArNDQ5LDE2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgICAgIC8vIFRlc3QgdGhl
IGV4cG9zZWQgQVBJLgogICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6Y3VycmVudFRpbWUoKSBsYXRpdHVkZTpsYXRpdHVk
ZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3VyYWN5XTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBhdXRvIGNvcmVHZW9sb2NhdGlvblBvc2l0aW9uID0gV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFj
Y3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVz
U3BlZWQsIHNwZWVkKTsKLSAgICAgICAgcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooV1RGTW92ZShjb3JlR2VvbG9j
YXRpb25Qb3NpdGlvbikpXTsKKyAgICAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBn
ZW9sb2NhdGlvblBvc2l0aW9uIHsgY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwg
YWNjdXJhY3kgfTsKKyAgICAgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGUpCisgICAgICAgICAgICBn
ZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CisgICAgICAgIGlmIChwcm92
aWRlc0FsdGl0dWRlQWNjdXJhY3kpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFs
dGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OworICAgICAgICBpZiAocHJvdmlkZXNI
ZWFkaW5nKQorICAgICAgICAgICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5oZWFkaW5nID0gaGVhZGlu
ZzsKKyAgICAgICAgaWYgKHByb3ZpZGVzU3BlZWQpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBv
c2l0aW9uLnNwZWVkID0gc3BlZWQ7CisgICAgICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlv
blBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFdURk1vdmUoZ2Vv
bG9jYXRpb25Qb3NpdGlvbikpXTsKICAgICB9CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRl
ciBzaGFyZWRdIHNldFBvc2l0aW9uOnBvc2l0aW9uXTsKICAgICBbcG9zaXRpb24gcmVsZWFzZV07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323383</attachid>
            <date>2017-10-10 21:08:40 -0700</date>
            <delta_ts>2017-10-10 22:39:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010210839.patch</filename>
            <type>text/plain</type>
            <size>66255</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uMGI1YTFmYTVjNjY5NzhiMDY3NWIxN2U1YzEwNDBk
NDMzYzJlOTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlOgorICAgICAgICAtIFVzZSBzdGQ6Om9wdGlvbmFs
PD4gaW5zdGVhZCBvZiBzZXBhcmF0ZSBib29sZWFuIG1lbWJlcnMKKyAgICAgICAgLSBNYWtlIEdl
b2xvY2F0aW9uUG9zaXRpb24gYSBzaW1wbGUgc3RydWN0IHRoYXQgY2FuIGJlIHBhc3NlZCB2aWEg
SVBDCisgICAgICAgIC0gUmVwbGFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHdpdGgg
R2VvbG9jYXRpb25Qb3NpdGlvbgorICAgICAgICAtIE1vdmUgbG9naWMgdG8gY29uc3RydWN0IGEg
R2VvbG9jYXRpb25Qb3NpdGlvbiBmcm9tIGEgQ0xMb2NhdGlvbiBvbiBpT1MKKyAgICAgICAgICBp
biBvbmUgcGxhY2UgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OkNvb3JkaW5hdGVzKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmxhdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVzOjpsb25naXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZXM6OmFsdGl0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWx0aXR1ZGVB
Y2N1cmFjeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVhZGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlR2VvcG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246
Okdlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xs
ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oOgorCisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmVhbGx5IGZpeCB0aGUgYnVpbGQgd2l0aCBjZXJ0YWluIFNE
S3MuCiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIyMjMxNTQsIHdoaWNoIGZpeGVkIHRoZSB3cm9u
ZyBsYW1iZGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzMjY2ZGZjYmI3ZjIwYjU5OWNjZjRmZGI4MGI2MDEwZTJl
YTIwYTguLjU5M2Y0MGVhNmQ2NjM2ZjBiYjBkNTk4YTEwYzBlY2IxMjYwMmQ0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp0aW1lc3Rh
bXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpsYXRp
dHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246Omxv
bmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dl
b2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBv
c2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xlZ2FjeUNvcmVMb2NhdGlv
blByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEzMC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTkyMDllOTNiOTEwYjJiOTZm
NTllLi4zZDJhOWRiZjJjMGViMDkzZGQ2N2NmMGEzZTUzMmQ1MDk1YWZiN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5pemUgR2VvbG9jYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBNaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIgc2VuZExvY2F0aW9uOl0pOgorICAgICAgICAq
IE1pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bX1dlYkNvcmVM
b2NhdGlvblVwZGF0ZVRocmVhZGluZ1Byb3h5IHBvc2l0aW9uQ2hhbmdlZDpdKToKKwogMjAxNy0x
MC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggYTAxNDA1YjRiY2Y5ZDdiNWRhMGFmOTBiODMyZmNiMjMzMGM3NTdmMS4uZmZjZTFh
NjkzZmY0NjYyM2VjNjAyZmMyNDJlY2I3N2Y5OTkyZjdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGluaXRXaXRoQ29yZUdl
b2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBpbml0V2l0aFRpbWVzdGFtcDpsYXRpdHVkZTpsb25naXR1ZGU6YWNj
dXJhY3k6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmg6CisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9y
IHdpdGggY29weVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggODQyODg1YWZhNzZmMjYxZGU3YTQ5NGQ0
NzQwZGY4ZGYxMDIxMTRlZi4uNWUxMGY0YWEwZDBkZTA2ZTRiYWYwMGQwNDMwODY1ZWUwZjUyY2Jm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEw
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXpl
IEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRX
aXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmltcGwgY29uc3Qp
OgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpjb29raWVzRW5h
YmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nv
b3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRp
bmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcu
LjlhYzcyNmU5MWIxNTcwNGEzNGYyNGMwYzAyN2JkMjUzYzhhMDgzMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwz
MiArMjgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorQ29vcmRpbmF0ZXM6OkNvb3JkaW5hdGVz
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKKyAgICA6IG1fcG9zaXRpb24oV1RGTW92
ZShwb3NpdGlvbikpCiB7Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9hbHRpdHVkZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsK
LSAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIG1faGVhZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpzcGVlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vQ29vcmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVh
MDYzODMyLi4yNzYzNzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5h
dGVzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91Ymxl
IGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENvb3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGUsIGFsdGl0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVk
ZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVk
KSk7IH0KKyAgICBzdGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3Np
dGlvbiYmIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29v
cmRpbmF0ZXMoV1RGTW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0
ZXM+IGlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0
ZXM6OmNyZWF0ZShtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUs
IG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1f
YWx0aXR1ZGVBY2N1cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblBy
b3ZpZGVTcGVlZCwgbV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRl
KCBHZW9sb2NhdGlvblBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxv
bmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVk
ZUFjY3VyYWN5KCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBj
b25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3Vi
bGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5hbHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zaXRpb24uYWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29u
c3QgeyByZXR1cm4gbV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29y
ZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNB
bHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hl
YWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkK
LSAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNj
dXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNj
dXJhY3kpCi0gICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChz
cGVlZCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5KQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQot
ICAgICAgICAsIG1fY2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0K
KyAgICBleHBsaWNpdCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAg
ZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBt
X2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAg
ICAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9v
bCBtX2NhblByb3ZpZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFi
Y2U0YzAwNWFjMWQ2MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAz
ZWY3OTA0NTdlZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdl
b2xvY2F0CiBzdGF0aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtd
ID0gIkdlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwog
c3RhdGljIGNvbnN0IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNz
YWdlW10gPSAiT3JpZ2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRp
b24gc2VydmljZSI7CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0
aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3Np
dGlvbj4gY3JlYXRlR2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAotICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Q
cm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlv
bi0+YWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBv
c2l0aW9uLT5hbHRpdHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRl
SGVhZGluZygpLCBwb3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVk
KCksIHBvc2l0aW9uLT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRl
KFdURk1vdmUoY29vcmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0
aW9uLT50aW1lc3RhbXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0
U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBH
ZW9wb3NpdGlvbjo6Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52
YWx1ZSgpKSksIHRpbWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3Jl
YXRlUG9zaXRpb25FcnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMs
NyBAQCBHZW9wb3NpdGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRl
R2VvcG9zaXRpb24oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5
MzkwOGMzYWYwLi5mNzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRp
b247CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdl
YktpdCB0byByZWZsZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAg
ICAvLyBpcyBwdWJsaXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFj
eShib29sKSA9IDA7Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+
IGxhc3RQb3NpdGlvbigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lv
bihHZW9sb2NhdGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRj
ZDA1NDY5N2Q3ZGIxYWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4
Yzk2YTY5NzBjMzE2YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTks
NyArOTksNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1p
c3Npb25SZXF1ZXN0KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24g
PSBwb3NpdGlvbjsKICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9y
OwpAQCAtMTIwLDEwICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9y
T2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRF
cnJvcihlcnJvcik7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
R2VvbG9jYXRpb25Db250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQ
b3NpdGlvbi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAg
IGlmIChtX2xhc3RQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuaAppbmRleCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5i
NjVkNjBkNTQxZWM1Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmgKQEAgLTUzLDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihHZW9sb2NhdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2Vv
bG9jYXRpb24mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hh
bmdlZChjb25zdCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAg
IEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6
OkZsYWdzIG9sZEFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5
U3RhdGUpIG92ZXJyaWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFz
dFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0
UG9zaXRpb247CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2
ZXJzU2V0OwogICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdo
IGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNj
OWVkZTJhOGE2NzBkMzA1NzdiMWRiMDM1ZGJjZDYuLjVjMzU2MGUzNGRjZjJjZDliZmQ0NGZmNzRm
MTE2Y2NkNGMyNDk1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4MSBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JK
Q19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9z
aXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAs
IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1l
c3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0
aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFj
eShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0
aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJv
dmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVl
ZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91Ymxl
IGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25n
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgLTEgfTsKIAotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm92aWRlQWx0
aXR1ZGU7IH0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVIZWFkaW5nOyB9Ci0gICAgYm9v
bCBjYW5Qcm92aWRlU3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVTcGVlZDsgfQor
ICAgIGRvdWJsZSBsYXRpdHVkZSB7IC0xIH07CisgICAgZG91YmxlIGxvbmdpdHVkZSB7IC0xIH07
CisgICAgZG91YmxlIGFjY3VyYWN5IHsgLTEgfTsKIAotcHJpdmF0ZToKLSAgICBHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgICAgICA6IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkK
LSAgICAgICAgLCBtX2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxv
bmdpdHVkZSkKLSAgICAgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQotICAgICAgICAsIG1fYWx0
aXR1ZGUoMCkKLSAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koMCkKLSAgICAgICAgLCBtX2hl
YWRpbmcoMCkKLSAgICAgICAgLCBtX3NwZWVkKDApCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0
aXR1ZGUoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeShmYWxz
ZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKGZhbHNlKQotICAgICAgICAsIG1fY2Fu
UHJvdmlkZVNwZWVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzcGVlZDsKIAotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFt
cCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5n
LCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi0gICAg
ICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJh
Y3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKLSAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKLSAgICAgICAgLCBtX3NwZWVkKHNwZWVkKQotICAgICAgICAsIG1fY2FuUHJvdmlk
ZUFsdGl0dWRlKHByb3ZpZGVzQWx0aXR1ZGUpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeShwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgICwgbV9jYW5Qcm92
aWRlSGVhZGluZyhwcm92aWRlc0hlYWRpbmcpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
cHJvdmlkZXNTcGVlZCkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIEdlb2xvY2F0aW9uUG9zaXRpb24mKTsKK307
CiAKLSAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBHZW9sb2NhdGlvblBvc2l0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IHRpbWVzdGFtcDsKKyAgICBlbmNvZGVyIDw8IGxhdGl0dWRlOworICAg
IGVuY29kZXIgPDwgbG9uZ2l0dWRlOworICAgIGVuY29kZXIgPDwgYWNjdXJhY3k7CisgICAgZW5j
b2RlciA8PCBhbHRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFsdGl0dWRlQWNjdXJhY3k7CisgICAg
ZW5jb2RlciA8PCBoZWFkaW5nOworICAgIGVuY29kZXIgPDwgc3BlZWQ7Cit9CiAKLSAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKLSAgICBkb3VibGUgbV9sb25naXR1ZGU7Ci0gICAgZG91YmxlIG1fYWNj
dXJhY3k7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGU7Ci0gICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBkb3VibGUgbV9oZWFkaW5nOwotICAgIGRvdWJsZSBtX3NwZWVkOwordGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24udGltZXN0YW1wKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubGF0aXR1ZGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5sb25naXR1ZGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5hY2N1cmFjeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvc2l0aW9uLmFsdGl0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmhlYWRpbmcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5zcGVl
ZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1
ZGU7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OwotICAgIGJvb2wgbV9j
YW5Qcm92aWRlSGVhZGluZzsKLSAgICBib29sIG1fY2FuUHJvdmlkZVNwZWVkOwotfTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhhODQzNDJiMjQ3NDYyMTE3
YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbihD
TExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2NhdGlvbi50aW1lc3RhbXAu
dGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9jYXRpb24uY29vcmRpbmF0
ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVk
ZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSkKK3sKKyAgICBp
ZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAgICAgICAgYWx0aXR1ZGUg
PSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeSA9IGxvY2F0aW9u
LnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlvbi5zcGVlZCA+PSAwLjAp
CisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYgKGxvY2F0aW9uLmNvdXJz
ZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBlZDI2MmFjZDlkYS4uZDM3
NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzU1MCw2ICszNTUw
LDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVz
dWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzYw
OUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAv
KiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8q
IE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Mzc5NjRDRjFG
OERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVB
MCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjcz
MDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBM
b2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZD
IC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4
NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtMTE4NzMs
NiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQgLyogRXJyb3JDYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2
NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2
ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUy
MTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQx
RUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRoID0gYmVhY29uOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0MxRjhEQjY3RDAwMjE4RUEw
IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
ODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi8s
CisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdyb3VwIjsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhBMTcwMDk4NkU1NCAvKiBl
bnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xv
Y2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3NDZBRjExMTRGNERERTYw
MDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3
QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0RERFNjAwM0U3QTcwIC8q
IENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcgQEAKIAkJCQlDRDRCRTUy
QTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyog
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjYyNTJFMThE
RTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1cmVFdmVudHMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEyMjU4MWFhZjIxZTU3MDMy
ZGIyY2JiZGRiMjc0ZS4uMThkYWZkOWU3ZmNiZDRiYjMxNWI5ZTQ3M2Q3ZTc3ZDBlZGE4ODU0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAg
bV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnNldFBvc2l0aW9uKFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9uKQor
dm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRp
b24mJiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24p
OwogICAgIGNsZWFyRXJyb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2EKIHsKICAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IGVy
cm9yTWVzc2FnZTsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IG51bGxwdHI7CisgICAgbV9sYXN0UG9z
aXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAK
QEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lv
blRpbWVyRmlyZWQoKQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVzZXQoKQogewot
ICAgIG1fbGFzdFBvc2l0aW9uID0gbnVsbHB0cjsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IHN0ZDo6
bnVsbG9wdDsKICAgICBjbGVhckVycm9yKCk7CiAgICAgbV9wZXJtaXNzaW9uU3RhdGUgPSBQZXJt
aXNzaW9uU3RhdGVVbnNldDsKIH0KQEAgLTE1Niw5ICsxNTYsOSBAQCB2b2lkIEdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQzOAogfQogCi1HZW9sb2NhdGlv
blBvc2l0aW9uKiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9w
dGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBv
c2l0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24uZ2V0KCk7CisgICAgcmV0dXJu
IG1fbGFzdFBvc2l0aW9uOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6YXN5bmNV
cGRhdGVDb250cm9sbGVyKCkKQEAgLTE3Miw5ICsxNzIsOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoKQogewogICAgIEFTU0VSVChtX2NvbnRyb2xs
ZXIpOwogCi0gICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgaWYgKG1fbGFzdFBv
c2l0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9oYXNFcnJvcik7Ci0gICAgICAgIG1fY29udHJv
bGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFzdFBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAgbV9j
b250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQoKm1fbGFzdFBvc2l0aW9uKTsKICAgICB9IGVsc2Ug
aWYgKG1faGFzRXJyb3IpIHsKICAgICAgICAgYXV0byBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2Nh
dGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwg
bV9lcnJvck1lc3NhZ2UpOwogICAgICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQoZ2Vv
bG9jYXRpb0Vycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDg1ZmMwMzgwNjE0ZjRjZGMzMjRiYWY1
ZmExYTY1MjUxOTRhMzY2MGIuLmZjMWI1MWQ3ZjcxMGZjMzg2MjFlZGNjNzZlNjA0ZmM3NmRhYTEw
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaApAQCAtMzIsNiArMzIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDAsNyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwog
CiAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIGluIFdlYkNvcmUuIEl0IHNob3VsZCBiZSBt
b3ZlZCB0byBXZWJLaXQuCiAvLyBQcm92aWRlcyBhIG1vY2sgb2JqZWN0IGZvciB0aGUgZ2VvbG9j
YXRpb24gY2xpZW50LgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgp
OwogICAgIHZvaWQgc2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAg
IHZvaWQgc2V0UG9zaXRpb24oUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpOworICAgIHZv
aWQgc2V0UG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiYmKTsKICAgICB2b2lkIHNldFBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9p
ZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9mUGVuZGluZ1Bl
cm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBv
dmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsK
LSAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAK
QEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRXJyb3IoKTsKIAogICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0
aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwogICAgIGJvb2wgbV9oYXNFcnJvcjsKICAgICBT
dHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgVGltZXIgbV9jb250cm9sbGVyVGltZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IGJi
ZjlmYTU0Y2EzYzgzNjNkZGU1NTBiMzhjYjE3ZmY4OGFmYTlkZjMuLjNmMTU1OGI3NTJiZWY4Yzky
YjQxNjk2ZmQ0NmEwYzA4MWI1YmJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zMCwzNCArMzAsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBk
b3VibGUgc3BlZWQpCi17Ci0gICAgbV9kYXRhLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLSAgICBt
X2RhdGEubGF0aXR1ZGUgPSBsYXRpdHVkZTsKLSAgICBtX2RhdGEubG9uZ2l0dWRlID0gbG9uZ2l0
dWRlOwotICAgIG1fZGF0YS5hY2N1cmFjeSA9IGFjY3VyYWN5OwotICAgIG1fZGF0YS5jYW5Qcm92
aWRlQWx0aXR1ZGUgPSBwcm92aWRlc0FsdGl0dWRlOwotICAgIG1fZGF0YS5hbHRpdHVkZSA9IGFs
dGl0dWRlOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHByb3ZpZGVz
QWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRl
QWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVIZWFkaW5nID0gcHJvdmlkZXNIZWFkaW5n
OwotICAgIG1fZGF0YS5oZWFkaW5nID0gaGVhZGluZzsKLSAgICBtX2RhdGEuY2FuUHJvdmlkZVNw
ZWVkID0gcHJvdmlkZXNTcGVlZDsKLSAgICBtX2RhdGEuc3BlZWQgPSBzcGVlZDsKLX0KK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbigpCitSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBnZW9sb2NhdGlvblBvc2l0
aW9uKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24o
V1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OkRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0g
ICAgSVBDOjpTaW1wbGVBcmd1bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+
OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwotfQotCi1ib29sIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERhdGEmIGRhdGEpCitXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7Ci0gICAgcmV0
dXJuIElQQzo6U2ltcGxlQXJndW1lbnRDb2RlcjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRh
Pjo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCAxZGQ3
OTg5YmNjMDNkNDAwMDBkY2Q5Y2MyNjk0Y2JhYmNmZmU0NjAxLi40MThhYzM2MzE0N2U0NDA5ZTQy
ZGZmYzFhZDgxYjE0YjFjNTI4ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdlb2xvY2F0
aW9uUG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgSVBDIHsKQEAgLTM4LDU2ICszOSwyOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3Qg
RGF0YSB7Ci0gICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgICAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgRGF0YSYpOwotCi0gICAgICAgIGRv
dWJsZSB0aW1lc3RhbXA7Ci0gICAgICAgIGRvdWJsZSBsYXRpdHVkZTsKLSAgICAgICAgZG91Ymxl
IGxvbmdpdHVkZTsKLSAgICAgICAgZG91YmxlIGFjY3VyYWN5OwotCi0gICAgICAgIGRvdWJsZSBh
bHRpdHVkZTsKLSAgICAgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgICAgIGRvdWJs
ZSBoZWFkaW5nOwotICAgICAgICBkb3VibGUgc3BlZWQ7Ci0KLSAgICAgICAgYm9vbCBjYW5Qcm92
aWRlQWx0aXR1ZGU7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZVNw
ZWVkOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGNy
ZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUs
IGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwg
Ym9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQs
IGRvdWJsZSBzcGVlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFj
eSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
YWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVk
LCBzcGVlZCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+
IGNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCiAgICAgdmlydHVhbCB+
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpOwogCi0gICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS50aW1lc3RhbXA7IH0KLSAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEubGF0aXR1ZGU7IH0KLSAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmxvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5hY2N1cmFjeTsgfQorICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi50aW1lc3RhbXA7IH0KKyAgICBkb3VibGUgbGF0
aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sYXRpdHVkZTsgfQorICAgIGRv
dWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sb25naXR1ZGU7
IH0KKyAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5h
Y2N1cmFjeTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5hbHRp
dHVkZUFjY3VyYWN5OyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5oZWFkaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uc3BlZWQ7IH0KIAot
ICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNhblBy
b3ZpZGVBbHRpdHVkZTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5hbHRpdHVkZTsgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsgfQotICAg
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0dWRl
QWNjdXJhY3k7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5oZWFkaW5nOyB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQ7IH0KLSAgICBkb3VibGUgc3Bl
ZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc3BlZWQ7IH0KLQotICAgIGNvbnN0IERhdGEmIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uJiBjb3JlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlv
bjsgfQogCiBwcml2YXRlOgotICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVz
dGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ks
IGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0
aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFk
aW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpOwor
ICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCisgICAgICAgIDogbV9jb3JlUG9zaXRpb24o
V1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkKKyAgICB7CisgICAgfQogCi0gICAgRGF0YSBt
X2RhdGE7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBtX2NvcmVQb3NpdGlvbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggNTdmYmRjZmQz
ZWU2ZTk5OWQyZDVkM2IxZDAzNTk1MjIwYWZkYzRlZC4uMzI0MWQ3MjdkM2M1NzE2Mjk1NjNiMWEx
OTdiYjkyNTM3Y2RmMmE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2ICs0MywxNiBAQCBXS0dl
b2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9uQ3JlYXRlKGRvdWJsZSB0
aW1lc3RhbXAsIGRvdWJsZSBsYQogCiBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2Nh
dGlvblBvc2l0aW9uQ3JlYXRlX2IoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwg
ZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9v
bCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCiB7Ci0gICAgYXV0byBwb3NpdGlvbiA9IFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1
ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHBy
b3ZpZGVzU3BlZWQsIHNwZWVkKTsKKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGNv
cmVQb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsK
KyAgICBpZiAocHJvdmlkZXNBbHRpdHVkZSkKKyAgICAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRl
ID0gYWx0aXR1ZGU7CisgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAg
Y29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5OworICAgIGlm
IChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgIGNvcmVQb3NpdGlvbi5oZWFkaW5nID0gaGVhZGlu
ZzsKKyAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAgICAgY29yZVBvc2l0aW9uLnNwZWVkID0g
c3BlZWQ7CisKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAgICAgcmV0dXJuIHRvQVBJKCZwb3NpdGlvbi5s
ZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA4ZWVmYmVjYzc0Y2NjYjE3
NDA5YWNmYTE3MjhjOWJiOTMwOTI2YmZhLi42ZjgxOWRmMTQ3NTc2ZWZlNTk1Yjg5N2MwZGIyZGRj
MzM0N2YxOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtMzksMjkgKzM5LDcgQEAgKyAo
aW5zdGFuY2V0eXBlKXBvc2l0aW9uV2l0aExvY2F0aW9uOihDTExvY2F0aW9uICopbG9jYXRpb24K
ICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYm9vbCBjYW5Q
cm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJh
Y3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOwotICAg
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKLSAg
ICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1
ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kgPSBmYWxzZTsK
LSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9IHRydWU7Ci0gICAgZG91YmxlIHNw
ZWVkID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNwZWVkIDwgMC4wKQotICAgICAgICBjYW5Q
cm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmcgPSB0cnVl
OwotICAgIGRvdWJsZSBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwotICAgIGlmIChoZWFkaW5n
IDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVhZGluZyA9IGZhbHNlOwotCi0gICAgQ0xMb2Nh
dGlvbkNvb3JkaW5hdGUyRCBjb29yZGluYXRlID0gbG9jYXRpb24uY29vcmRpbmF0ZTsKLSAgICBk
b3VibGUgdGltZXN0YW1wID0gbG9jYXRpb24udGltZXN0YW1wLnRpbWVJbnRlcnZhbFNpbmNlMTk3
MDsKLQotICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUo
dGltZXN0YW1wLCBjb29yZGluYXRlLmxhdGl0dWRlLCBjb29yZGluYXRlLmxvbmdpdHVkZSwgbG9j
YXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBj
YW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhl
YWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwgc3BlZWQpLmxlYWtSZWYoKSkgYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiB7IGxvY2F0aW9uIH0pLmxlYWtSZWYoKSkg
YXV0b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ci5jcHAKaW5kZXggZGI3N2YzODkwYzU1ZDM2NjE4NjI2YTNlYmNlNWRhZTk2ZWM0ZTBlMi4uMDA3
ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5NWIyNWY5M2M0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Q
cm92aWRlci5jcHAKQEAgLTgxLDcgKzgxLDEwIEBAIHZvaWQgV2ViS2l0R2VvbG9jYXRpb25Qcm92
aWRlcjo6c3RvcFVwZGF0aW5nKCkKIAogdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3kpCiB7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBv
c2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1
ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHRydWUsIGFsdGl0dWRlLCB0cnVlLCBhbHRpdHVkZUFj
Y3VyYWN5LCBmYWxzZSwgMCwgZmFsc2UsIDApOworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24gY29yZVBvc2l0aW9uIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXApLCBsYXRp
dHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZSA9
IGFsdGl0dWRlOworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVB
Y2N1cmFjeTsKKyAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKICAg
ICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlv
bi5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA4N2IyOTY4NmJiZTU2ZmZlMzRlZTczNDlj
MWY4YTkwYmY2OGEyMDE5Li41MmIwMTFmNWRiYWM2Y2Q2YjcwNzNiODIwNTQ2ZmI2MjZlMjFhNGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJR2VvbG9jYXRp
b25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkwLDcgKzkxLDcgQEAgdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXZWJHZW9sb2NhdGlv
blBvc2l0aW8KICAgICBpZiAoIXByb2Nlc3NQb29sKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi0+ZGF0YSgpKSk7CisgICAgcHJv
Y2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5jb3JlUG9zaXRpb24oKSkpOwogfQog
CiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5k
ZXggYzM3YjMzMTQxM2ZiM2UyYWYzNmFjMjAwNmMxZTM5Mjg1NGY3NDdhYS4uODkyZGVlMTNlMTY5
M2I2OGM3YzMxNTZiMzI0ZDI2ZWY4MTg1MTRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC03NCwxMSAr
NzQsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRp
b25SZXF1ZXN0RnJvbU9yaWdpbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJV2luZG93Kik7CiB9OwogCi1z
dGF0aWMgaW5saW5lIFJlZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBraXQoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pCi17Ci0gICAgcmV0dXJuIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OmNyZWF0ZShwb3NpdGlvbi0+dGltZXN0YW1wKCksIHBvc2l0aW9uLT5sYXRpdHVk
ZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5hY2N1cmFjeSgpLCBwb3NpdGlv
bi0+Y2FuUHJvdmlkZUFsdGl0dWRlKCksIHBvc2l0aW9uLT5hbHRpdHVkZSgpLCBwb3NpdGlvbi0+
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3koKSwgcG9zaXRpb24tPmFsdGl0dWRlQWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVIZWFkaW5nKCksIHBvc2l0aW9uLT5oZWFkaW5nKCksIHBv
c2l0aW9uLT5jYW5Qcm92aWRlU3BlZWQoKSwgcG9zaXRpb24tPnNwZWVkKCkpOwotfQotCiBzdHJ1
Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW47CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IGZyYW1lOwpAQCAtMzA0LDEwICsyOTks
MTAgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5pZWQKICAgICBbX2xpc3Rl
bmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF07CiB9CiAKLS0gKHZvaWQpcG9zaXRp
b25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uICopY29yZVBvc2l0aW9uCist
ICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNv
cmVQb3NpdGlvbgogewogICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAgIGF1dG8gcG9zaXRpb24g
PSBraXQoY29yZVBvc2l0aW9uKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAgICAgW19saXN0ZW5lciBw
b3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwCmluZGV4IGQzNmU2OGQ1YTg2NTUyNjgyZjE2MzI2OTVlMWNiOTYyNTgz
ZDc3NDQuLjk1Njc1MTgwYzQzYTBjMTY0ZWIyYTUwNGJjZjAxMDMyY2Y4Nzc1YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC05MSwxOSArOTEsMTcgQEAgdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UoV2ViUGFnZSYgcGFnZSwg
Ym9vbCBlbmEKICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpTZXRFbmFibGVIaWdoQWNj
dXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9CiAKLXZvaWQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjpEYXRhJiBkYXRhKQordm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5n
ZVBvc2l0aW9uKGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0aW9uKQogewogI2lmIEVO
QUJMRShHRU9MT0NBVElPTikKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRp
b24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoZGF0YS50aW1lc3RhbXAsIGRhdGEubGF0
aXR1ZGUsIGRhdGEubG9uZ2l0dWRlLCBkYXRhLmFjY3VyYWN5LCBkYXRhLmNhblByb3ZpZGVBbHRp
dHVkZSwgZGF0YS5hbHRpdHVkZSwgZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgZGF0
YS5hbHRpdHVkZUFjY3VyYWN5LCBkYXRhLmNhblByb3ZpZGVIZWFkaW5nLCBkYXRhLmhlYWRpbmcs
IGRhdGEuY2FuUHJvdmlkZVNwZWVkLCBkYXRhLnNwZWVkKTsKLQogICAgIFZlY3RvcjxSZWZQdHI8
V2ViUGFnZT4+IHdlYlBhZ2VDb3B5OwogICAgIGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQsIHdlYlBh
Z2VDb3B5KTsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiB3ZWJQYWdlQ29weSkgewogICAgICAgICBp
ZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uLmdldCgpKTsK
KyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgp
KS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwogI2VuZGlmIC8vIEVOQUJM
RShHRU9MT0NBVElPTikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IGQxZjNjYjcz
NjAwMzFjZGU5ZDI0ZmJjNDVmMjlmNTBjYzc5MDZlNmIuLjRmNDQ3YWYwYTM3NDY1NDM4ZjVmMjli
MTc4ZjA3YjY2MjM3NzNlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTM1LDYgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR2VvbG9jYXRpb247CitjbGFzcyBH
ZW9sb2NhdGlvblBvc2l0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYz
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVXBkYXRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9w
YWdlU2V0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaXNIaWdoQWNjdXJhY3lFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gIW1faGlnaEFjY3VyYWN5UGFnZVNldC5pc0VtcHR5KCk7IH0KIAotICAgIHZv
aWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSYp
OworICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbiYpOwogICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIHJlc2V0UGVy
bWlzc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmlu
ZGV4IDI3MTU0ZjVhMzZlZTMwMzIxYmE1ZTFkOWUyNzJlODQwY2FjNzcxZTkuLjk3ZGEyODU2YmQy
OWE2ZTA1Y2Y3NzBmNWNjMjllNzc2OWI2ZDQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBt
ZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgewotICAgIERpZENoYW5nZVBvc2l0aW9u
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSBwb3NpdGlvbik7CisgICAgRGlk
Q2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBwb3NpdGlvbik7CiAg
ICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9yTWVzc2FnZSk7CiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwCmluZGV4IDNiYzhkZmNiMTQwNmI3OWU4NzYwNGY1MDkzNTM2OGE1OTQyZDQ3
Y2UuLjg5MTMxM2NlOWZhYTc2M2M1MTU2OWNjZTlmY2I5ODVhNGI0MzI4NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsMTAgKzY0LDEwIEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGVuYWJsZWQpCiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXI+KCkt
PnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UobV9wYWdlLCBlbmFibGVkKTsKIH0KIAotR2Vv
bG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCitz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojps
YXN0UG9zaXRpb24oKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9u
Q2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDE5Nzc3MTExM2E2OWQ1NDdiNjM5MTRiMzAzNzMy
OTJmNDcxY2FmMDIuLmNmZThkNDI0ODU5ZDhmMTE3MGZhODllNzY5NDA2MGI3ODIwZDM5MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSBvdmVycmlkZTsKIAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaAppbmRleCA4MDk1ZDUzYzc4MmI0
MTkxNmI1M2UwZjhkNmIxMzIxZmRkMzBhYjA1Li4wNDkwZmNmYjFkYjA0YmY2YjAyNGU4ZTQwOTY3
NTcwZjdjNWFjMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dl
Ykdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogLSAodm9pZClnZW9sb2NhdGlv
bkF1dGhvcml6YXRpb25HcmFudGVkOwogLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25E
ZW5pZWQ7CiAKLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uKilwb3NpdGlvbjsKKy0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uJiYpcG9zaXRpb247CiAtICh2b2lkKWVycm9yT2NjdXJyZWQ6KE5TU3Ry
aW5nICopZXJyb3JNZXNzYWdlOwogLSAodm9pZClyZXNldEdlb2xvY2F0aW9uOwogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCmluZGV4IGFlZDk1NjIxYzc4NTFkMzU3MTQy
MGMwYzYyNTE3ZmFiMjUwNTM2MDYuLmQ5ZjAzM2E3ZDcyMGExNGUxMTMyMTY3MjBmNmYwYjYzODRl
YTEzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KQEAgLTE2NSwyOSAr
MTY1LDcgQEAgLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRpb25NYW5hZ2VyICopbWFu
YWdlciBkaWRDaGFuZ2VBdXRob3JpemF0aW9uU3RhdHUKIAogLSAodm9pZClzZW5kTG9jYXRpb246
KENMTG9jYXRpb24gKiluZXdMb2NhdGlvbgogewotICAgIC8vIE5vcm1hbGl6ZS4KLSAgICBib29s
IGNhblByb3ZpZGVBbHRpdHVkZSA9IHRydWU7Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVB
Y2N1cmFjeSA9IHRydWU7Ci0gICAgZG91YmxlIGFsdGl0dWRlID0gbmV3TG9jYXRpb24uYWx0aXR1
ZGU7Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3kgPSBuZXdMb2NhdGlvbi52ZXJ0aWNhbEFj
Y3VyYWN5OwotICAgIGlmIChhbHRpdHVkZUFjY3VyYWN5IDwgMC4wKSB7Ci0gICAgICAgIGNhblBy
b3ZpZGVBbHRpdHVkZSA9IGZhbHNlOwotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFj
eSA9IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkID0gdHJ1ZTsKLSAg
ICBkb3VibGUgc3BlZWQgPSBuZXdMb2NhdGlvbi5zcGVlZDsKLSAgICBpZiAoc3BlZWQgPCAwLjAp
Ci0gICAgICAgIGNhblByb3ZpZGVTcGVlZCA9IGZhbHNlOwotCi0gICAgYm9vbCBjYW5Qcm92aWRl
SGVhZGluZyA9IHRydWU7Ci0gICAgZG91YmxlIGhlYWRpbmcgPSBuZXdMb2NhdGlvbi5jb3Vyc2U7
Ci0gICAgaWYgKGhlYWRpbmcgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVIZWFkaW5nID0gZmFs
c2U7Ci0KLSAgICBkb3VibGUgdGltZXN0YW1wID0gW25ld0xvY2F0aW9uLnRpbWVzdGFtcCB0aW1l
SW50ZXJ2YWxTaW5jZTE5NzBdOwotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBnZW9s
b2NhdGlvblBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwg
bmV3TG9jYXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSwgbmV3TG9jYXRpb24uY29vcmRpbmF0ZS5s
b25naXR1ZGUsIG5ld0xvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSwgY2FuUHJvdmlkZUFsdGl0
dWRlLCBhbHRpdHVkZSwgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJh
Y3ksIGNhblByb3ZpZGVIZWFkaW5nLCBoZWFkaW5nLCBjYW5Qcm92aWRlU3BlZWQsIHNwZWVkKTsK
LSAgICBbX3Bvc2l0aW9uTGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOmdlb2xvY2F0aW9uUG9zaXRp
b24uZ2V0KCldOworICAgIFtfcG9zaXRpb25MaXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6R2VvbG9j
YXRpb25Qb3NpdGlvbiB7IG5ld0xvY2F0aW9uIH1dOwogfQogCiAtICh2b2lkKWxvY2F0aW9uTWFu
YWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0ZUxvY2F0aW9uczooTlNB
cnJheSAqKWxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
TWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDBkNTNhZjAzODViYzQxODNh
Zjg2ODZiNmMzNzQzZGI1ZmM1YzE0OGEuLjFkMjgwYzFhY2Q1OTFlN2MxYWVjNjg5YWI3YTIzNDQ2
ODNhYmI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTQ0LDcgKzQ0LDcgQEAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKElu
dGVybmFsKQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8R2VvbG9j
YXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsKKy0gKGlkKWluaXRXaXRo
R2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uOwogQGVuZAogCiAvLyBDb3JlTG9jYXRpb24gcnVucyBpbiB0aGUgbWFpbiB0aHJl
YWQuIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgbGl2ZXMgb24gdGhlIFdlYlRocmVhZC4KQEAg
LTM2MSw5ICszNjEsOSBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAog
ICAgIH0pOwogfQogCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbiopcG9zaXRpb24KKy0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uJiYpcG9zaXRpb24KIHsKLSAgICBSZXRhaW5QdHI8V2ViR2VvbG9j
YXRpb25Qb3NpdGlvbj4gd2ViUG9zaXRpb24gPSBhZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOnBvc2l0aW9uXSk7CisgICAg
UmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYlBvc2l0aW9uID0gYWRvcHROUyhb
W1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlv
bjpXVEZNb3ZlKHBvc2l0aW9uKV0pOwogICAgIFdlYlRocmVhZFJ1biheewogICAgICAgICBbX3By
b3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDp3ZWJQb3NpdGlvbi5nZXQoKV07CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAzMzYwMjQ5MTBlYzE1MTg4MmI2NGE4NmI5ODkwNTMw
Y2U5MjdlZmM4Li4yMGM0MzQzMTA3ODdhYmFkYjAyMjYwMzk1Yjc5MjA4NzYzNzhiNDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAKLSAg
ICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3Np
dGlvbigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3Qo
V2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50Lm1tCmluZGV4IDBjYjJiZTk5MWUxNzQ4OTkxMjQ5ZWRkMWJjOWZlZWY1NWFiZjNhODAuLjJl
ZjNkYjYyMzljMTk0NDVhMDc1MDgxNTMwZTgzYmNhNDAyNzFiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBv
c2l0aW9uPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICByZXR1
cm4gY29yZShbW21fd2ViVmlldyBfZ2VvbG9jYXRpb25Qcm92aWRlcl0gbGFzdFBvc2l0aW9uXSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24ubW0KaW5kZXggNDU2ZDRiYThiZGYwZTcxNjQ0OTA3NTMyMWY5ZWRk
NGYwODQ1ZGZhMC4uMzc0NTljNmI4NTg0N2M2MTM1YWE4NjFiNTE0YTEwZDY0YTg2YTFiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbi5tbQpAQCAtMjYsMjQgKzI2LDI0IEBACiAjaW1wb3J0ICJXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uLmgiCiAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5h
bC5oIgotI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgotCiAjaW1wb3J0IDxXZWJDb3JlL0dlb2xvY2F0
aW9uUG9zaXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgorI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgOiBOU09iamVjdAogewogQHB1YmxpYwotICAgIFJlZlB0
cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBfcG9zaXRpb247CisgICAgR2VvbG9jYXRpb25Qb3NpdGlv
biBfcG9zaXRpb247CiB9CiAKLS0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246
KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwor
LSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlv
biYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsCiAKLS0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0
aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uCistIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2Nh
dGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24KIHsKICAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTU2LDkgKzU2LDExIEBAIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24KIAotR2VvbG9jYXRpb25Qb3NpdGlv
biogY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikKK3N0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlv
bikKIHsKLSAgICByZXR1cm4gcG9zaXRpb24gPyBwb3NpdGlvbi0+X2ludGVybmFsLT5fcG9zaXRp
b24uZ2V0KCkgOiAwOworICAgIGlmICghcG9zaXRpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHBvc2l0aW9uLT5faW50ZXJuYWwtPl9wb3NpdGlvbjsKIH0KIAog
LSAoaWQpaW5pdFdpdGhUaW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgbGF0aXR1ZGU6KGRvdWJs
ZSlsYXRpdHVkZSBsb25naXR1ZGU6KGRvdWJsZSlsb25naXR1ZGUgYWNjdXJhY3k6KGRvdWJsZSlh
Y2N1cmFjeQpAQCAtNjYsMTEgKzY4LDExIEBAIC0gKGlkKWluaXRXaXRoVGltZXN0YW1wOihkb3Vi
bGUpdGltZXN0YW1wIGxhdGl0dWRlOihkb3VibGUpbGF0aXR1ZGUgbG9uZ2l0dWRlOihkCiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgX2ludGVybmFsID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgYWxsb2Nd
IGluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpXTsKKyAgICBfaW50
ZXJuYWwgPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhD
b3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpHZW9sb2NhdGlvblBvc2l0aW9uIHsgdGltZXN0YW1wLCBs
YXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9XTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAot
LSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8R2VvbG9jYXRpb25Qb3Np
dGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgorLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlv
blBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24K
IHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbklu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oCmluZGV4IGY1NGU2NmI4MWUxOTliNDQ0MDk1ODA2ZDA0YjExMDNm
MjZkYTUwOTIuLjI2YzMyYjEyNmRmMjQzMjVmZGNlOTliN2I4NmE4Yzc1OTgyY2Q3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaApAQCAtMjQsMTAgKzI0LDExIEBACiAgKi8KIAog
I2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2ltcG9ydCA8d3RmL09wdGlvbmFs
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9u
OwogfQogCi1XZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBjb3JlKFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24gKik7CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+
IGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuY3BwCmluZGV4IGJhMjg2YzhkOTc1OTcyODhkYjhlZDE4NWIyMDhmYTk3ODMwMGQxMGUuLmJh
M2YzNDFlZDFlZDcxZmU5YTUwZjNmYTQ1YWY0NTkxZjM5NDM3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHAKQEAgLTY0LDE0ICs2NCwxNCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xp
ZW50OjpzdG9wVXBkYXRpbmcoKQogICAgIHByb3ZpZGVyLT51bnJlZ2lzdGVyV2ViVmlldyhtX3dl
YlZpZXcuZ2V0KCkpOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNs
aWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4g
V2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgQ09NUHRyPElXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+
Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblBvc2l0
aW9uPiBwb3NpdGlvbjsKICAgICBpZiAoRkFJTEVEKHByb3ZpZGVyLT5sYXN0UG9zaXRpb24oJnBv
c2l0aW9uKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBjb3JlKHBvc2l0aW9uLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKaW5kZXggN2IxYmY0ODdhYWM3MDMzNGUzNTE1ZDczNDFlMjY2MGExN2RlMDE2Yi4u
ZjYyZjVjMGRlMTNhZjgzM2U2Y2I4NjdmNzMyZWY1NTk1ZmI5ODY1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0VXBk
YXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQg
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQotICAgIFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgZmluYWw7CiAKICAg
ICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWw7CiAg
ICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIGZp
bmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmNwcAppbmRleCA0ZDYzMTg1NjExMDQ1ZDAzZjYzYzc2MDg5NTRjOTk1NmM2M2ZhNWZl
Li4wZDZiNzg0ZTA3NTAzMTA4YzAzODY3MDU4ZTE2YjM5NWNiZjhmZWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtODEs
MTggKzgxLDE4IEBAIFVMT05HIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlJlbGVhc2UoKQogCiBI
UkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRXaXRoVGltZXN0YW1wKGRvdWJsZSB0
aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3Vy
YWN5KQogewotICAgIG1fcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGlt
ZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7CisgICAgbV9wb3NpdGlvbiA9
IEdlb2xvY2F0aW9uUG9zaXRpb24geyB0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFj
Y3VyYWN5IH07CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIGNv
cmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxHZW9s
b2NhdGlvblBvc2l0aW9uPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikK
IHsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIENPTVB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3ZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKFF1ZXJ5LCBwb3NpdGlvbik7CiAgICAgaWYgKCF3ZWJHZW9sb2Nh
dGlvblBvc2l0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB3ZWJHZW9sb2NhdGlvblBvc2l0aW9uLT5pbXBsKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKaW5k
ZXggNzk4YWI4MDg3ZDljN2VmMGY4Y2QxMWFmNjM4OGFmMzk4ZWY4OTJjNy4uNmYxZmMxZGNiMzcw
YjI2MmQ3NDFmN2M5ZWQzMDMzZmZiOWM5YjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHB1Ymxp
YzoKICAgICAvLyBJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFRpbWVzdGFtcChkb3VibGUgdGltZXN0YW1wLCBkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAKLSAgICBX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbi5nZXQoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbj4mIGltcGwoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKIHByaXZhdGU6CiAg
ICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbj4gbV9wb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24+IG1fcG9zaXRpb247CiB9OwogCi1XZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uKiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKik7CitzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24q
KTsKIAogI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25faApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA1YWRiZWM1MzNmZTkyMzMyMTMx
ZmRmMDkwZTMyNjY2NzNiYWU4NDcuLmI4MzYxY2UyNzMyODk1NmE2NzJjNTliN2VmYjE0ZmE1NmVl
N2MxOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlvbiBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24pOgorCiAyMDE3LTEwLTEwICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogW0FUS10gQVJJQSBmb3JtIHJvbGUgc2hvdWxkIGJlIG1hcHBl
ZCB0byBBVEtfUk9MRV9MQU5ETUFSSzsgbm90IEFUS19ST0xFX0ZPUk0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggYTYxMTBkOTE2NjFjYjVlNmJlOGM0NGFh
NzM3ZDU3MjhlMDdjY2E1Yi4uNjMzZTQ3NzgxOWY2YmM2NjMyZWU5NmU0NzExNmNlOTliOGMzZTAx
MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEyNSw3
ICsxMjUsNyBAQCBAZW5kCiAjZW5kaWYKIAogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIChJbnRlcm5hbCkKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRy
PFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+KWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwor
LSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIFRlc3RSdW5uZXI6On5U
ZXN0UnVubmVyKCkKQEAgLTQ0OSw4ICs0NDksMTYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQK
ICAgICAgICAgLy8gVGVzdCB0aGUgZXhwb3NlZCBBUEkuCiAgICAgICAgIHBvc2l0aW9uID0gW1tX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFtcDpjdXJyZW50VGlt
ZSgpIGxhdGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNjdXJh
Y3ldOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24g
PSBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0
aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBw
cm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGlu
ZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpOwotICAgICAgICBwb3NpdGlvbiA9IFtb
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9u
OihXVEZNb3ZlKGNvcmVHZW9sb2NhdGlvblBvc2l0aW9uKSldOworICAgICAgICBXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uIGdlb2xvY2F0aW9uUG9zaXRpb24geyBjdXJyZW50VGltZSgpLCBs
YXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgICAgICBpZiAocHJvdmlkZXNBbHRp
dHVkZSkKKyAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVk
ZTsKKyAgICAgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAgICAgIGdl
b2xvY2F0aW9uUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Cisg
ICAgICAgIGlmIChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0
aW9uLmhlYWRpbmcgPSBoZWFkaW5nOworICAgICAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAg
ICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKyAgICAgICAgcG9zaXRp
b24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Q
b3NpdGlvbjooV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSldOwogICAgIH0KICAgICBbW01v
Y2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0UG9zaXRpb246cG9zaXRpb25dOwogICAg
IFtwb3NpdGlvbiByZWxlYXNlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323388</attachid>
            <date>2017-10-10 22:39:14 -0700</date>
            <delta_ts>2017-10-11 08:43:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171010223913.patch</filename>
            <type>text/plain</type>
            <size>66705</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uYjhjZGJiYzY4M2JmYWZlZDhhNjgzNzg0MThmNjMx
NjQ4OTYyNmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBN
b2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZToKKyAgICAgICAgLSBVc2Ugc3RkOjpvcHRpb25hbDw+
IGluc3RlYWQgb2Ygc2VwYXJhdGUgYm9vbGVhbiBtZW1iZXJzCisgICAgICAgIC0gTWFrZSBHZW9s
b2NhdGlvblBvc2l0aW9uIGEgc2ltcGxlIHN0cnVjdCB0aGF0IGNhbiBiZSBwYXNzZWQgdmlhIElQ
QworICAgICAgICAtIFJlcGxhY2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSB3aXRoIEdl
b2xvY2F0aW9uUG9zaXRpb24KKyAgICAgICAgLSBNb3ZlIGxvZ2ljIHRvIGNvbnN0cnVjdCBhIEdl
b2xvY2F0aW9uUG9zaXRpb24gZnJvbSBhIENMTG9jYXRpb24gb24gaU9TCisgICAgICAgICAgaW4g
b25lIHBsYWNlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjpDb29yZGluYXRlcyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGlu
YXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVzOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlczo6bG9uZ2l0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjphbHRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmhlYWRpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OnNwZWVkIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUdlb3Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Omxh
c3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246Okdlb2xvY2F0
aW9uUG9zaXRpb24pOgorICAgICAgICBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBvbmx5IG5l
ZWRlZCBieSBvdXIgSVBDIGRlY29kaW5nIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9z
L0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmg6CisKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCByZWFsbHkgZml4IHRoZSBidWls
ZCB3aXRoIGNlcnRhaW4gU0RLcy4KIAogICAgICAgICBGb2xsb3ctdXAgdG8gcjIyMzE1NCwgd2hp
Y2ggZml4ZWQgdGhlIHdyb25nIGxhbWJkYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjMyNjZkZmNiYjdmMjBiNTk5
Y2NmNGZkYjgwYjYwMTBlMmVhMjBhOC4uNjFhNjUwZjZhNmQxMWRlNzJmMDBlZjY2OTM0NTMwNTYz
MzM0NWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNy0xMC0xMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlvbiBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgx
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
UG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjp0aW1lc3RhbXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmxvbmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6
CisgICAgICAgIChXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50Ojps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEz
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTky
MDllOTNiOTEwYjJiOTZmNTllLi5iNWExYzgyOTAyNTAzZDUzOTYxZjhjZDIwODdhMmQ0MDVjNzRl
ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5p
emUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg6Cisg
ICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tOgorICAg
ICAgICAoLVtXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIHNlbmRMb2NhdGlvbjpd
KToKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAg
ICgtW19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBwb3NpdGlvbkNoYW5nZWQ6
XSk6CisKIDIwMTctMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwMTQwNWI0YmNmOWQ3YjVkYTBhZjkwYjgzMmZjYjIzMzBj
NzU3ZjEuLmRmODc3Y2QwOWRkMmM2NGQ1OWEzODc4NTVkNmNjYzMyYWUxOTA5M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMC0xMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlv
biBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgaW5p
dFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAg
ICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGluaXRXaXRoVGltZXN0YW1wOmxhdGl0dWRlOmxv
bmdpdHVkZTphY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBp
bml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDoKKwogMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFs
dWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1h
cC52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA4NDI4ODVhZmE3NmYy
NjFkZTdhNDk0ZDQ3NDBkZjhkZjEwMjExNGVmLi5mNDRkOTU0ZjgyYzc5ZjI4NzZlODdkYWJlZDVk
NzkzZmQxMDY0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmluaXRXaXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Omlt
cGwgY29uc3QpOgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpj
b29raWVzRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0Nvb3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIz
NWQxYjllNjcuLjljZWJkZmMwZjY1YThmYjgxMDI0M2UxMjdlZDc5Njc1ODQyZjUwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CkBAIC0yOCwzMiArMjgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRlKCkgY29uc3QKK0Nvb3JkaW5hdGVzOjpD
b29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYgcG9zaXRpb24pCisgICAgOiBtX3Bvc2l0
aW9uKFdURk1vdmUocG9zaXRpb24pKQogewotICAgIGlmICghbV9jYW5Qcm92aWRlQWx0aXR1ZGUp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGU7Cisg
ICAgQVNTRVJUKG1fcG9zaXRpb24uaXNWYWxpZCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FuUHJvdmlk
ZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1faGVh
ZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpzcGVlZCgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29v
cmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0
ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVhMDYzODMyLi4yNzYz
NzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5hdGVzPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBh
bHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJv
b2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENv
b3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRl
LCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBw
cm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7IH0KKyAgICBz
dGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbiYmIHBvc2l0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZXMoV1RG
TW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0ZXM+IGlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZXM6OmNyZWF0ZSht
X2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUsIG1fYWx0aXR1ZGUs
IG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1fYWx0aXR1ZGVBY2N1
cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblByb3ZpZGVTcGVlZCwg
bV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRlKCBHZW9sb2NhdGlv
blBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFs
dGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9h
Y2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkg
Y29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25zdDsKLSAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdp
dHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRp
dHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24u
YWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5oZWFk
aW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlcyhkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJs
ZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBt
X2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKLSAg
ICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJh
Y3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpCi0gICAg
ICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChzcGVlZCkKLSAgICAg
ICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQotICAg
ICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNp
dCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAgZG91YmxlIG1fbGF0
aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwot
ICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAgICAKLSAgICBib29s
IG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3Zp
ZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247CiB9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFiY2U0YzAwNWFjMWQ2
MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAzZWY3OTA0NTdlZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyIGZhaWxlZFRvU3Rh
cnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdlb2xvY2F0CiBzdGF0
aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtdID0gIkdlb2xvY2F0
aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwogc3RhdGljIGNvbnN0
IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNzYWdlW10gPSAiT3Jp
Z2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRpb24gc2VydmljZSI7
CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0aW9uKEdlb2xvY2F0
aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3NpdGlvbj4gY3JlYXRl
R2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9u
KQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBvc2l0aW9uLT5sYXRp
dHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1
ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlvbi0+YWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5hbHRp
dHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBw
b3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9u
LT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29v
cmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3Rh
bXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0U2Vjb25kc1RvRE9N
VGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBHZW9wb3NpdGlvbjo6
Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52YWx1ZSgpKSksIHRp
bWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3JlYXRlUG9zaXRpb25F
cnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMsNyBAQCBHZW9wb3Np
dGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRlR2VvcG9zaXRpb24o
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRpb24oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5MzkwOGMzYWYwLi5m
NzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb247CkBAIC00Miw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdlYktpdCB0byByZWZs
ZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAgICAvLyBpcyBwdWJs
aXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7
Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7Cisg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlv
bigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlv
biYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRjZDA1NDY5N2Q3ZGIx
YWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4Yzk2YTY5NzBjMzE2
YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2
b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0
KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9u
Q2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlv
blBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsK
ICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOwpAQCAtMTIwLDEw
ICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoR2Vv
bG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRFcnJvcihlcnJvcik7
CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6bGFzdFBv
c2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25D
b250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQb3NpdGlvbi5nZXQo
KSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAgIGlmIChtX2xhc3RQ
b3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVlKCk7CiAKICAgICBy
ZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAppbmRl
eCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5iNjVkNjBkNTQxZWM1
Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTUz
LDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9z
aXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Q
b3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFj
dGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJy
aWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAK
ICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OwogICAg
IC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFu
ZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNjOWVkZTJhOGE2NzBk
MzA1NzdiMWRiMDM1ZGJjZDYuLmMwOGNmMmM2NzE1NWVjMTU3OTQ0NjA2ODM2NmEwM2M2NzBiNWY0
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4OCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorT0JKQ19DTEFTUyBDTExv
Y2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uUG9zaXRpb24+IHsKK2Ns
YXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2VvbG9j
YXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAsIGxhdGl0dWRlLCBs
b25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oKSA9
IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNyZWF0ZShk
b3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wg
cHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBw
cm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJs
ZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQorICAgICAgICA6
IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1ZGUobGF0aXR1ZGUpCisgICAg
ICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBhY2N1cmFjeShhY2N1cmFjeSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdlb2xvY2F0aW9uUG9zaXRpb24o
dGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVk
ZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwg
cHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVkLCBzcGVlZCkpOwogICAgIH0K
IAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHZW9sb2NhdGlv
blBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAgZG91YmxlIGxhdGl0dWRlKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1ZGUoKSBjb25zdCB7IHJldHVy
biBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJl
dHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKSB9OwogCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUoKSBjb25z
dCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVkZTsgfQotICAgIGJvb2wgY2FuUHJvdmlkZUFs
dGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3Vy
YWN5OyB9Ci0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
UHJvdmlkZUhlYWRpbmc7IH0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FuUHJvdmlkZVNwZWVkOyB9CisgICAgZG91YmxlIGxhdGl0dWRlIHsgc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OworICAgIGRvdWJsZSBsb25naXR1ZGUg
eyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpIH07CisgICAgZG91Ymxl
IGFjY3VyYWN5IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9Owog
Ci1wcml2YXRlOgotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFtcCwgZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCi0gICAgICAg
IDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1fbGF0aXR1ZGUobGF0aXR1ZGUp
Ci0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAgICAgICAsIG1fYWNjdXJhY3ko
YWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZSgwKQotICAgICAgICAsIG1fYWx0aXR1ZGVB
Y2N1cmFjeSgwKQotICAgICAgICAsIG1faGVhZGluZygwKQotICAgICAgICAsIG1fc3BlZWQoMCkK
LSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShmYWxzZSkKLSAgICAgICAgLCBtX2NhblBy
b3ZpZGVBbHRpdHVkZUFjY3VyYWN5KGZhbHNlKQotICAgICAgICAsIG1fY2FuUHJvdmlkZUhlYWRp
bmcoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQoZmFsc2UpCi0gICAgewotICAg
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7CisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhl
YWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkOwogCi0gICAgR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCi0g
ICAgICAgICwgbV9sYXRpdHVkZShsYXRpdHVkZSkKLSAgICAgICAgLCBtX2xvbmdpdHVkZShsb25n
aXR1ZGUpCi0gICAgICAgICwgbV9hY2N1cmFjeShhY2N1cmFjeSkKLSAgICAgICAgLCBtX2FsdGl0
dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWx0aXR1ZGVBY2N1cmFjeShhbHRpdHVkZUFjY3Vy
YWN5KQotICAgICAgICAsIG1faGVhZGluZyhoZWFkaW5nKQotICAgICAgICAsIG1fc3BlZWQoc3Bl
ZWQpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUocHJvdmlkZXNBbHRpdHVkZSkKLSAg
ICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKHByb3ZpZGVzSGVhZGluZykKLSAg
ICAgICAgLCBtX2NhblByb3ZpZGVTcGVlZChwcm92aWRlc1NwZWVkKQotICAgIHsKLSAgICB9Cisg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBHZW9sb2NhdGlvblBvc2l0aW9uJik7Cit9Owog
Ci0gICAgZG91YmxlIG1fdGltZXN0YW1wOwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
R2VvbG9jYXRpb25Qb3NpdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCB0aW1lc3RhbXA7CisgICAgZW5jb2RlciA8PCBsYXRpdHVkZTsKKyAgICBl
bmNvZGVyIDw8IGxvbmdpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFjY3VyYWN5OworICAgIGVuY29k
ZXIgPDwgYWx0aXR1ZGU7CisgICAgZW5jb2RlciA8PCBhbHRpdHVkZUFjY3VyYWN5OworICAgIGVu
Y29kZXIgPDwgaGVhZGluZzsKKyAgICBlbmNvZGVyIDw8IHNwZWVkOworfQogCi0gICAgZG91Ymxl
IG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBtX2FjY3Vy
YWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwotICAgIGRvdWJsZSBtX2FsdGl0dWRlQWNjdXJh
Y3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+Citib29sIEdlb2xvY2F0aW9uUG9zaXRpb246OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBHZW9sb2NhdGlvblBvc2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBvc2l0aW9uLnRpbWVzdGFtcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmxhdGl0dWRlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24ubG9uZ2l0dWRlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24u
YWNjdXJhY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwb3NpdGlvbi5hbHRpdHVkZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5oZWFkaW5nKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zaXRpb24uc3BlZWQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIG1fY2FuUHJvdmlkZUFsdGl0dWRl
OwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBib29sIG1fY2Fu
UHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVTcGVlZDsKLX07CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlvbjo6aXNWYWxpZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFzdGQ6OmlzbmFuKHRpbWVzdGFtcCkgJiYgIXN0ZDo6aXNuYW4obGF0
aXR1ZGUpICYmICFzdGQ6OmlzbmFuKGxvbmdpdHVkZSkgJiYgIXN0ZDo6aXNuYW4oYWNjdXJhY3kp
OworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMjk3ZTg0YzhhZjBjOGE4NDM0MmIyNDc0NjIxMTdhZWEyZmQ4Mzkz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9p
b3MvR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2lmIFBMQVRGT1JNKElPUykKKwor
I2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitHZW9sb2NhdGlvblBvc2l0aW9uOjpHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24q
IGxvY2F0aW9uKQorICAgIDogdGltZXN0YW1wKGxvY2F0aW9uLnRpbWVzdGFtcC50aW1lSW50ZXJ2
YWxTaW5jZTE5NzApCisgICAgLCBsYXRpdHVkZShsb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRl
KQorICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUubG9uZ2l0dWRlKQorICAgICwg
YWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5KQoreworICAgIGlmIChsb2NhdGlv
bi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkgeworICAgICAgICBhbHRpdHVkZSA9IGxvY2F0aW9u
LmFsdGl0dWRlOworICAgICAgICBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGljYWxB
Y2N1cmFjeTsKKyAgICB9CisgICAgaWYgKGxvY2F0aW9uLnNwZWVkID49IDAuMCkKKyAgICAgICAg
c3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKKyAgICBpZiAobG9jYXRpb24uY291cnNlID49IDAuMCkK
KyAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9uLmNvdXJzZTsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkZTkyYTg5Zjc2ZmViOThmMjUwZjNhYWM2YWY2MGVkMjYyYWNkOWRhLi5kMzc3MDExNWUyZjA5
NmExNmRjZDU1OGY4YmY3ZTc3NjM0MzcyMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTUwLDYgKzM1NTAsNyBAQAogCQk4
MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzcyREIzMDFB
Njc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3NjA5Q0ExRjU0Q0Mx
ODAwMEMxMjJEIC8qIEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjA5QzgxRjU0Q0MxMzAwMEMxMjJEIC8qIEVycm9yQ2Fs
bGJhY2suY3BwICovOyB9OwogCQk4Mzc2NUY5NTFEQUM1MjJGMDBDMDY1MzcgLyogTW91c2VFdmVu
dEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzNzk2NENGMUY4REI2OUQwMDIx
OEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25JT1MubW0gKi87IH07CiAJCTgzN0E4MDEzMUUxRTEyNzMwMDAyNkI5RiAv
KiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxl
LnN0cmluZ3NkaWN0ICovOyB9OwogCQk4MzdCN0QyMDFEQzNGNTUwMDBEMDUxRkMgLyogVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1t
ICovOyB9OwogCQk4Mzg2QTk2RDE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzg2QTk2QzE5RjYx
QjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggKi87IH07CkBAIC0xMTg3Myw2ICsxMTg3NCw3
IEBACiAJCTgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9yQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc2NUY5MzFEQUM1MjE4MDBDMDY1MzcgLyogTW91
c2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vdXNlRXZlbnRJbml0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTQxREFDNTIxODAwQzA2NTM3
IC8qIE1vdXNlRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
dXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNzk2NENFMUY4
REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbTsgcGF0
aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW07IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8q
IEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gu
bHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxl
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdERkIzNDFFQkZFQTcwMDA2
MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjA0MzgsNiArMjA0NDAsMTUgQEAKIAkJCXBhdGggPSBiZWFjb247CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk4Mzc5NjRDRTFG
OERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLywKKwkJCSk7CisJ
CQluYW1lID0gaW9zOworCQkJcGF0aCA9ICJOZXcgR3JvdXAiOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJODNGQjMzNjUxRjUwOEExNzAwOTg2RTU0IC8qIGVudHJpZXNhcGkg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjEzMDEsNiAr
MjEzMTIsNyBAQAogCQk5NzExNDVGRjE0RUYwMDc5MDA2NzRGRDkgLyogZ2VvbG9jYXRpb24gKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTgzNzk2NENDMUY4
REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8sCiAJCQkJOTc0NkFGMTExNEY0RERFNjAwM0U3QTcyIC8q
IENvb3JkaW5hdGVzLmNwcCAqLywKIAkJCQk5NzQ2QUYxMTE0RjREREU2MDAzRTdBNzAgLyogQ29v
cmRpbmF0ZXMuaCAqLywKIAkJCQk5NzQ2QUYxMjE0RjREREU2MDAzRTdBNzAgLyogQ29vcmRpbmF0
ZXMuaWRsICovLApAQCAtMzIxNTQsNiArMzIxNjYsNyBAQAogCQkJCUNENEJFNTJBMUNFMTM2RUYw
MDlEODdEQSAvKiBHZW5lcmljVGFza1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NDZB
RjIzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzQ2QUYyNjE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlv
blBvc2l0aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNjI1MkUxOERFMUIxNTAwQTA3
QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ2QzgzRUZE
MUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDUwMzY2ODFCQ0REREM0MDBFMjBCQjMgLyogR2VzdHVyZUV2ZW50cy5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcAppbmRleCBiYzAxZWRhMzdiMTIyNTgxYWFmMjFlNTcwMzJkYjJjYmJkZGIy
NzRlLi4xOGRhZmQ5ZTdmY2JkNGJiMzE1YjllNDczZDdlNzdkMGVkYTg4NTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRDb250
cm9sbGVyKEdlb2xvY2F0aW9uQ29udHJvbGxlciAqY29udHJvbGxlcikKICAgICBtX2NvbnRyb2xs
ZXIgPSBjb250cm9sbGVyOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9z
aXRpb24oUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYgcG9zaXRpb24pCit2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiYmIHBvc2l0
aW9uKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CiAgICAgY2xl
YXJFcnJvcigpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6
c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYQogewog
ICAgIG1faGFzRXJyb3IgPSB0cnVlOwogICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdl
OwotICAgIG1fbGFzdFBvc2l0aW9uID0gbnVsbHB0cjsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IHN0
ZDo6bnVsbG9wdDsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KIApAQCAtMTI2LDcg
KzEyNiw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpwZXJtaXNzaW9uVGltZXJGaXJl
ZCgpCiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNldCgpCiB7Ci0gICAgbV9sYXN0
UG9zaXRpb24gPSBudWxscHRyOworICAgIG1fbGFzdFBvc2l0aW9uID0gc3RkOjpudWxsb3B0Owog
ICAgIGNsZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IFBlcm1pc3Npb25TdGF0
ZVVuc2V0OwogfQpAQCAtMTU2LDkgKzE1Niw5IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDM4CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24q
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2Vv
bG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25DbGllbnRNb2NrOjpsYXN0UG9zaXRpb24oKQog
ewotICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0UG9z
aXRpb247CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjphc3luY1VwZGF0ZUNvbnRy
b2xsZXIoKQpAQCAtMTcyLDkgKzE3Miw5IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpj
b250cm9sbGVyVGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAg
ICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkpIHsKKyAgICBpZiAobV9sYXN0UG9zaXRpb24pIHsK
ICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsKLSAgICAgICAgbV9jb250cm9sbGVyLT5wb3Np
dGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkpOworICAgICAgICBtX2NvbnRyb2xsZXIt
PnBvc2l0aW9uQ2hhbmdlZCgqbV9sYXN0UG9zaXRpb24pOwogICAgIH0gZWxzZSBpZiAobV9oYXNF
cnJvcikgewogICAgICAgICBhdXRvIGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6
OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9yTWVz
c2FnZSk7CiAgICAgICAgIG1fY29udHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJy
b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmgKaW5kZXggODVmYzAzODA2MTRmNGNkYzMyNGJhZjVmYTFhNjUyNTE5
NGEzNjYwYi4uZmMxYjUxZDdmNzEwZmMzODYyMWVkY2M3NmU2MDRmYzc2ZGFhMTA0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9j
ay5oCkBAIC0zMiw2ICszMiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdlb2xvY2F0
aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC00MCw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjsKLWNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAKIC8vIEZJWE1F
OiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hvdWxkIGJlIG1vdmVkIHRvIFdl
YktpdC4KIC8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlvbiBjbGll
bnQuCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9p
ZCBzZXRDb250cm9sbGVyKEdlb2xvY2F0aW9uQ29udHJvbGxlciopOwogCi0gICAgdm9pZCBzZXRQ
b3NpdGlvbihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJik7CisgICAgdm9pZCBzZXRQb3Np
dGlvbihHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogICAgIHZvaWQgc2V0UG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2b2lkIHNldFBlcm1p
c3Npb24oYm9vbCBhbGxvd2VkKTsKICAgICBpbnQgbnVtYmVyT2ZQZW5kaW5nUGVybWlzc2lvblJl
cXVlc3RzKCkgY29uc3Q7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0
VXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwotICAgIEdlb2xv
Y2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2Fu
Y2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVycmlkZTsKIApAQCAtNzYsNyAr
NzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJFcnJvcigpOwogCiAgICAgR2VvbG9jYXRp
b25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+IG1fbGFzdFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlv
bj4gbV9sYXN0UG9zaXRpb247CiAgICAgYm9vbCBtX2hhc0Vycm9yOwogICAgIFN0cmluZyBtX2Vy
cm9yTWVzc2FnZTsKICAgICBUaW1lciBtX2NvbnRyb2xsZXJUaW1lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggYmJmOWZhNTRjYTNj
ODM2M2RkZTU1MGIzOGNiMTdmZjg4YWZhOWRmMy4uM2YxNTU4Yjc1MmJlZjhjOTJiNDE2OTZmZDQ2
YTBjMDgxYjViYmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbi5jcHAKQEAgLTMwLDM0ICszMCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUg
dGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlk
ZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRl
c0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVl
ZCkKLXsKLSAgICBtX2RhdGEudGltZXN0YW1wID0gdGltZXN0YW1wOwotICAgIG1fZGF0YS5sYXRp
dHVkZSA9IGxhdGl0dWRlOwotICAgIG1fZGF0YS5sb25naXR1ZGUgPSBsb25naXR1ZGU7Ci0gICAg
bV9kYXRhLmFjY3VyYWN5ID0gYWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVk
ZSA9IHByb3ZpZGVzQWx0aXR1ZGU7Ci0gICAgbV9kYXRhLmFsdGl0dWRlID0gYWx0aXR1ZGU7Ci0g
ICAgbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gcHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5OwotICAgIG1fZGF0YS5hbHRpdHVkZUFjY3VyYWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsK
LSAgICBtX2RhdGEuY2FuUHJvdmlkZUhlYWRpbmcgPSBwcm92aWRlc0hlYWRpbmc7Ci0gICAgbV9k
YXRhLmhlYWRpbmcgPSBoZWFkaW5nOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQgPSBwcm92
aWRlc1NwZWVkOwotICAgIG1fZGF0YS5zcGVlZCA9IHNwZWVkOwotfQordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0
aW9uKCkKK1JlZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCiB7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihXVEZNb3ZlKGdl
b2xvY2F0aW9uUG9zaXRpb24pKSk7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBJUEM6OlNp
bXBsZUFyZ3VtZW50Q29kZXI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YT46OmVuY29kZShl
bmNvZGVyLCAqdGhpcyk7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YSYgZGF0YSkKK1dlYkdlb2xvY2F0aW9u
UG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKLSAgICByZXR1cm4gSVBDOjpT
aW1wbGVBcmd1bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE+OjpkZWNvZGUo
ZGVjb2RlciwgZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDFkZDc5ODliY2MwM2Q0
MDAwMGRjZDljYzI2OTRjYmFiY2ZmZTQ2MDEuLjQxOGFjMzYzMTQ3ZTQ0MDllNDJkZmZjMWFkODFi
MTRiMWM1MjhlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bl9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0
aW9uUG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewpAQCAtMzgsNTYgKzM5LDI4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gewogcHVibGljOgotICAgIHN0cnVjdCBEYXRhIHsKLSAg
ICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBEYXRhJik7Ci0KLSAgICAgICAgZG91YmxlIHRpbWVz
dGFtcDsKLSAgICAgICAgZG91YmxlIGxhdGl0dWRlOwotICAgICAgICBkb3VibGUgbG9uZ2l0dWRl
OwotICAgICAgICBkb3VibGUgYWNjdXJhY3k7Ci0KLSAgICAgICAgZG91YmxlIGFsdGl0dWRlOwot
ICAgICAgICBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgZG91YmxlIGhlYWRpbmc7
Ci0gICAgICAgIGRvdWJsZSBzcGVlZDsKLQotICAgICAgICBib29sIGNhblByb3ZpZGVBbHRpdHVk
ZTsKLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAgICAgYm9v
bCBjYW5Qcm92aWRlSGVhZGluZzsKLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlU3BlZWQ7Ci0gICAg
fTsKLQotICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJs
ZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgYm9vbCBwcm92
aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3Zp
ZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNw
ZWVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbih0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRl
c0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFj
Y3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7
Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJik7CiAKICAgICB2aXJ0dWFsIH5XZWJHZW9sb2Nh
dGlvblBvc2l0aW9uKCk7CiAKLSAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLnRpbWVzdGFtcDsgfQotICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEubG9uZ2l0dWRlOyB9Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmFjY3VyYWN5OyB9CisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29yZVBvc2l0aW9uLnRpbWVzdGFtcDsgfQorICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdp
dHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxvbmdpdHVkZTsgfQorICAgIGRv
dWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFjY3VyYWN5OyB9
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9j
b3JlUG9zaXRpb24uYWx0aXR1ZGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1
ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJh
Y3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fY29yZVBvc2l0aW9uLmhlYWRpbmc7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3Bl
ZWQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5zcGVlZDsgfQogCi0gICAgYm9vbCBj
YW5Qcm92aWRlQWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuY2FuUHJvdmlkZUFsdGl0
dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFsdGl0
dWRlOyB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYWx0aXR1ZGVBY2N1cmFjeTsg
fQotCi0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5j
YW5Qcm92aWRlSGVhZGluZzsgfQotICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmhlYWRpbmc7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmNhblByb3ZpZGVTcGVlZDsgfQotICAgIGRvdWJsZSBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5zcGVlZDsgfQotCi0gICAgY29uc3QgRGF0YSYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b24mIGNvcmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uOyB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92
aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJs
ZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCk7CisgICAgZXhwbGlj
aXQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYg
Z2VvbG9jYXRpb25Qb3NpdGlvbikKKyAgICAgICAgOiBtX2NvcmVQb3NpdGlvbihXVEZNb3ZlKGdl
b2xvY2F0aW9uUG9zaXRpb24pKQorICAgIHsKKyAgICB9CiAKLSAgICBEYXRhIG1fZGF0YTsKKyAg
ICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIG1fY29yZVBvc2l0aW9uOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCA1N2ZiZGNmZDNlZTZlOTk5ZDJk
NWQzYjFkMDM1OTUyMjBhZmRjNGVkLi4zMjQxZDcyN2QzYzU3MTYyOTU2M2IxYTE5N2JiOTI1Mzdj
ZGYyYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDE2IEBAIFdLR2VvbG9jYXRpb25Q
b3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwg
ZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRp
b25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ks
IGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVl
ZCwgc3BlZWQpOworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9u
IHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGlmIChw
cm92aWRlc0FsdGl0dWRlKQorICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVk
ZTsKKyAgICBpZiAocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQorICAgICAgICBjb3JlUG9zaXRp
b24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgaWYgKHByb3ZpZGVz
SGVhZGluZykKKyAgICAgICAgY29yZVBvc2l0aW9uLmhlYWRpbmcgPSBoZWFkaW5nOworICAgIGlm
IChwcm92aWRlc1NwZWVkKQorICAgICAgICBjb3JlUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKwor
ICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92
ZShjb3JlUG9zaXRpb24pKTsKICAgICByZXR1cm4gdG9BUEkoJnBvc2l0aW9uLmxlYWtSZWYoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tCmluZGV4IDhlZWZiZWNjNzRjY2NiMTc0MDlhY2ZhMTcy
OGM5YmI5MzA5MjZiZmEuLjZmODE5ZGYxNDc1NzZlZmU1OTViODk3YzBkYjJkZGMzMzQ3ZjE4ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2Nh
dGlvblBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tCkBAIC0zOSwyOSArMzksNyBAQCArIChpbnN0YW5jZXR5
cGUpcG9zaXRpb25XaXRoTG9jYXRpb246KENMTG9jYXRpb24gKilsb2NhdGlvbgogICAgIGlmICgh
bG9jYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBib29sIGNhblByb3ZpZGVBbHRp
dHVkZSA9IHRydWU7Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHRydWU7
Ci0gICAgZG91YmxlIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIGlmIChhbHRp
dHVkZUFjY3VyYWN5IDwgMC4wKSB7Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNl
OwotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IGZhbHNlOwotICAgIH0KLQot
ICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc3BlZWQgPSBsb2Nh
dGlvbi5zcGVlZDsKLSAgICBpZiAoc3BlZWQgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVTcGVl
ZCA9IGZhbHNlOwotCi0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZyA9IHRydWU7Ci0gICAgZG91
YmxlIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Ci0gICAgaWYgKGhlYWRpbmcgPCAwLjApCi0g
ICAgICAgIGNhblByb3ZpZGVIZWFkaW5nID0gZmFsc2U7Ci0KLSAgICBDTExvY2F0aW9uQ29vcmRp
bmF0ZTJEIGNvb3JkaW5hdGUgPSBsb2NhdGlvbi5jb29yZGluYXRlOwotICAgIGRvdWJsZSB0aW1l
c3RhbXAgPSBsb2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwOwotCi0gICAg
cmV0dXJuIFt3cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAs
IGNvb3JkaW5hdGUubGF0aXR1ZGUsIGNvb3JkaW5hdGUubG9uZ2l0dWRlLCBsb2NhdGlvbi5ob3Jp
em9udGFsQWNjdXJhY3ksIGNhblByb3ZpZGVBbHRpdHVkZSwgYWx0aXR1ZGUsIGNhblByb3ZpZGVB
bHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBjYW5Qcm92aWRlSGVhZGluZywgaGVh
ZGluZywgY2FuUHJvdmlkZVNwZWVkLCBzcGVlZCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIFt3cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uIHsgbG9jYXRpb24gfSkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAppbmRl
eCBkYjc3ZjM4OTBjNTVkMzY2MTg2MjZhM2ViY2U1ZGFlOTZlYzRlMGUyLi4wMDdkMTExYmFkMDdi
MDMwY2I5YTgwYTM3YWFjYzk1YjI1ZjkzYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cApAQCAtODEsNyArODEsMTAgQEAgdm9pZCBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpzdG9w
VXBkYXRpbmcoKQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6Om5vdGlmeVBvc2l0
aW9uQ2hhbmdlZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSkKIHsKLSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0
dWRlLCBhY2N1cmFjeSwgdHJ1ZSwgYWx0aXR1ZGUsIHRydWUsIGFsdGl0dWRlQWNjdXJhY3ksIGZh
bHNlLCAwLCBmYWxzZSwgMCk7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBjb3Jl
UG9zaXRpb24geyBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCksIGxhdGl0dWRlLCBsb25n
aXR1ZGUsIGFjY3VyYWN5IH07CisgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7
CisgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFjY3VyYWN5Owor
ICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlvbikpOwogICAgIG1fZ2VvbG9j
YXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLmdldCgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDg3YjI5Njg2YmJlNTZmZmUzNGVlNzM0OWMxZjhhOTBiZjY4
YTIwMTkuLjUyYjAxMWY1ZGJhYzZjZDZiNzA3M2I4MjA1NDZmYjYyNmUyMWE0ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElHZW9sb2NhdGlvblByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtOTAsNyArOTEsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpbwog
ICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5kYXRhKCkpKTsKKyAgICBwcm9jZXNzUG9vbCgp
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlk
Q2hhbmdlUG9zaXRpb24ocG9zaXRpb24tPmNvcmVQb3NpdGlvbigpKSk7CiB9CiAKIHZvaWQgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRp
b24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCBjMzdiMzMx
NDEzZmIzZTJhZjM2YWMyMDA2YzFlMzkyODU0Zjc0N2FhLi44OTJkZWUxM2UxNjkzYjY4YzdjMzE1
NmIzMjRkMjZlZjgxODUxNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTc0LDExICs3NCw2IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogdm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RG
cm9tT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGlkPFdl
YkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiwgVUlXaW5kb3cqKTsKIH07CiAKLXN0YXRpYyBpbmxp
bmUgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGtpdChXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uICpwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKHBvc2l0aW9uLT50aW1lc3RhbXAoKSwgcG9zaXRpb24tPmxhdGl0dWRlKCksIHBvc2l0
aW9uLT5sb25naXR1ZGUoKSwgcG9zaXRpb24tPmFjY3VyYWN5KCksIHBvc2l0aW9uLT5jYW5Qcm92
aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGVBY2N1cmFjeSgpLCBwb3NpdGlv
bi0+Y2FuUHJvdmlkZUhlYWRpbmcoKSwgcG9zaXRpb24tPmhlYWRpbmcoKSwgcG9zaXRpb24tPmNh
blByb3ZpZGVTcGVlZCgpLCBwb3NpdGlvbi0+c3BlZWQoKSk7Ci19Ci0KIHN0cnVjdCBHZW9sb2Nh
dGlvblJlcXVlc3REYXRhIHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKICAg
ICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gZnJhbWU7CkBAIC0zMDQsMTAgKzI5OSwxMCBAQCAtICh2
b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogICAgIFtfbGlzdGVuZXIgZ2VvbG9j
YXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKIH0KIAotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6
KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gKiljb3JlUG9zaXRpb24KKy0gKHZvaWQpcG9z
aXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZVBvc2l0aW9u
CiB7CiAgICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBwb3NpdGlvbiA9IGtpdChjb3Jl
UG9zaXRpb24pOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpj
cmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKICAgICBbX2xpc3RlbmVyIHBvc2l0aW9uQ2hh
bmdlZDp3cmFwcGVyKHBvc2l0aW9uLmdldCgpKV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdl
ci5jcHAKaW5kZXggZDM2ZTY4ZDVhODY1NTI2ODJmMTYzMjY5NWUxY2I5NjI1ODNkNzc0NC4uOTU2
NzUxODBjNDNhMGMxNjRlYjJhNTA0YmNmMDEwMzJjZjg3NzVjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9u
TWFuYWdlci5jcHAKQEAgLTkxLDE5ICs5MSwxNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdl
cjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdlJiBwYWdlLCBib29sIGVuYQog
ICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJsZUhpZ2hBY2N1cmFjeShoaWdo
QWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRh
dGEmIGRhdGEpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24o
Y29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IEdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZShkYXRhLnRpbWVzdGFtcCwgZGF0YS5sYXRpdHVkZSwgZGF0
YS5sb25naXR1ZGUsIGRhdGEuYWNjdXJhY3ksIGRhdGEuY2FuUHJvdmlkZUFsdGl0dWRlLCBkYXRh
LmFsdGl0dWRlLCBkYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBkYXRhLmFsdGl0dWRl
QWNjdXJhY3ksIGRhdGEuY2FuUHJvdmlkZUhlYWRpbmcsIGRhdGEuaGVhZGluZywgZGF0YS5jYW5Q
cm92aWRlU3BlZWQsIGRhdGEuc3BlZWQpOwotCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlPj4g
d2ViUGFnZUNvcHk7CiAgICAgY29weVRvVmVjdG9yKG1fcGFnZVNldCwgd2ViUGFnZUNvcHkpOwog
ICAgIGZvciAoYXV0byYgcGFnZSA6IHdlYlBhZ2VDb3B5KSB7CiAgICAgICAgIGlmIChwYWdlLT5j
b3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2Ut
PmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24uZ2V0KCkpOworICAgICAgICAg
ICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlv
bkNoYW5nZWQocG9zaXRpb24pOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGEp
OworICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYgLy8gRU5BQkxFKEdFT0xPQ0FU
SU9OKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggZDFmM2NiNzM2MDAzMWNkZTlk
MjRmYmM0NWYyOWY1MGNjNzkwNmU2Yi4uNGY0NDdhZjBhMzc0NjU0MzhmNWYyOWIxNzhmMDdiNjYy
Mzc3M2U0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtMzUsNiArMzUsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHZW9sb2NhdGlvbjsKK2NsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjIsNyArNjMsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3BhZ2VTZXQuaXNF
bXB0eSgpOyB9CiAgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBkaWRDaGFu
Z2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhJik7CisgICAgdm9p
ZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJik7
CiAgICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQgcmVzZXRQZXJtaXNzaW9ucygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMjcxNTRm
NWEzNmVlMzAzMjFiYTVlMWQ5ZTI3MmU4NDBjYWM3NzFlOS4uOTdkYTI4NTZiZDI5YTZlMDVjZjc3
MGY1Y2MyOWU3NzY5YjZkNDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFdlYkdlb2xvY2F0aW9uTWFuYWdlciB7Ci0gICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHBvc2l0aW9uKTsKKyAgICBEaWRDaGFuZ2VQb3Np
dGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIHBvc2l0aW9uKTsKICAgICBEaWRGYWls
VG9EZXRlcm1pbmVQb3NpdGlvbihTdHJpbmcgZXJyb3JNZXNzYWdlKTsKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgUmVzZXRQZXJtaXNzaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAKaW5kZXggM2JjOGRmY2IxNDA2Yjc5ZTg3NjA0ZjUwOTM1MzY4YTU5NDJkNDdjZS4uODkxMzEz
Y2U5ZmFhNzYzYzUxNTY5Y2NlOWZjYjk4NWE0YjQzMjg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwCkBAIC02NCwxMCArNjQsMTAgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dDo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlcj4oKS0+c2V0RW5hYmxl
SGlnaEFjY3VyYWN5Rm9yUGFnZShtX3BhZ2UsIGVuYWJsZWQpOwogfQogCi1HZW9sb2NhdGlvblBv
c2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9u
YWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlv
bigpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIHJldHVybiAwOworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJl
cXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKaW5kZXggMTk3NzcxMTEzYTY5ZDU0N2I2MzkxNGIzMDM3MzI5MmY0NzFjYWYw
Mi4uY2ZlOGQ0MjQ4NTlkOGYxMTcwZmE4OWU3Njk0MDYwYjc4MjBkMzkwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJv
b2wpIG92ZXJyaWRlOwogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBv
c2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlv
blBvc2l0aW9uPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNl
bFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxv
Y2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDgwOTVkNTNjNzgyYjQxOTE2YjUzZTBm
OGQ2YjEzMjFmZGQzMGFiMDUuLjA0OTBmY2ZiMWRiMDRiZjZiMDI0ZThlNDA5Njc1NzBmN2M1YWMx
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRp
b25Db3JlTG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCkBAIC00Myw3ICs0Myw3IEBA
IGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXph
dGlvbkdyYW50ZWQ7CiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZDsKIAot
LSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qKXBv
c2l0aW9uOworLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24mJilwb3NpdGlvbjsKIC0gKHZvaWQpZXJyb3JPY2N1cnJlZDooTlNTdHJpbmcgKillcnJv
ck1lc3NhZ2U7CiAtICh2b2lkKXJlc2V0R2VvbG9jYXRpb247CiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJv
dmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uUHJvdmlkZXIubW0KaW5kZXggYWVkOTU2MjFjNzg1MWQzNTcxNDIwYzBjNjI1MTdm
YWIyNTA1MzYwNi4uZDlmMDMzYTdkNzIwYTE0ZTExMzIxNjcyMGY2ZjBiNjM4NGVhMTM0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2Vi
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQpAQCAtMTY1LDI5ICsxNjUsNyBAQCAt
ICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZENo
YW5nZUF1dGhvcml6YXRpb25TdGF0dQogCiAtICh2b2lkKXNlbmRMb2NhdGlvbjooQ0xMb2NhdGlv
biAqKW5ld0xvY2F0aW9uCiB7Ci0gICAgLy8gTm9ybWFsaXplLgotICAgIGJvb2wgY2FuUHJvdmlk
ZUFsdGl0dWRlID0gdHJ1ZTsKLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0g
dHJ1ZTsKLSAgICBkb3VibGUgYWx0aXR1ZGUgPSBuZXdMb2NhdGlvbi5hbHRpdHVkZTsKLSAgICBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeSA9IG5ld0xvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7Ci0g
ICAgaWYgKGFsdGl0dWRlQWNjdXJhY3kgPCAwLjApIHsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0
dWRlID0gZmFsc2U7Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0gZmFsc2U7
Ci0gICAgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlU3BlZWQgPSB0cnVlOwotICAgIGRvdWJsZSBz
cGVlZCA9IG5ld0xvY2F0aW9uLnNwZWVkOwotICAgIGlmIChzcGVlZCA8IDAuMCkKLSAgICAgICAg
Y2FuUHJvdmlkZVNwZWVkID0gZmFsc2U7Ci0KLSAgICBib29sIGNhblByb3ZpZGVIZWFkaW5nID0g
dHJ1ZTsKLSAgICBkb3VibGUgaGVhZGluZyA9IG5ld0xvY2F0aW9uLmNvdXJzZTsKLSAgICBpZiAo
aGVhZGluZyA8IDAuMCkKLSAgICAgICAgY2FuUHJvdmlkZUhlYWRpbmcgPSBmYWxzZTsKLQotICAg
IGRvdWJsZSB0aW1lc3RhbXAgPSBbbmV3TG9jYXRpb24udGltZXN0YW1wIHRpbWVJbnRlcnZhbFNp
bmNlMTk3MF07Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IGdlb2xvY2F0aW9uUG9z
aXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBuZXdMb2NhdGlv
bi5jb29yZGluYXRlLmxhdGl0dWRlLCBuZXdMb2NhdGlvbi5jb29yZGluYXRlLmxvbmdpdHVkZSwg
bmV3TG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92aWRlQWx0aXR1ZGUsIGFsdGl0
dWRlLCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgY2FuUHJv
dmlkZUhlYWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwgc3BlZWQpOwotICAgIFtfcG9z
aXRpb25MaXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6Z2VvbG9jYXRpb25Qb3NpdGlvbi5nZXQoKV07
CisgICAgW19wb3NpdGlvbkxpc3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDpHZW9sb2NhdGlvblBvc2l0
aW9uIHsgbmV3TG9jYXRpb24gfV07CiB9CiAKIC0gKHZvaWQpbG9jYXRpb25NYW5hZ2VyOihDTExv
Y2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkVXBkYXRlTG9jYXRpb25zOihOU0FycmF5ICopbG9j
YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdl
b2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggMGQ1M2FmMDM4NWJjNDE4M2FmODY4NmI2YzM3
NDNkYjVmYzVjMTQ4YS4uMWQyODBjMWFjZDU5MWU3YzFhZWM2ODlhYjdhMjM0NDY4M2FiYjY2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQpAQCAtNDQsNyArNDQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAoSW50ZXJuYWwpCi0t
IChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0
aW9uPiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlv
blBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247
CiBAZW5kCiAKIC8vIENvcmVMb2NhdGlvbiBydW5zIGluIHRoZSBtYWluIHRocmVhZC4gV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBsaXZlcyBvbiB0aGUgV2ViVGhyZWFkLgpAQCAtMzYxLDkgKzM2
MSw5IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiAgICAgfSk7CiB9
CiAKLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
Kilwb3NpdGlvbgorLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9u
UG9zaXRpb24mJilwb3NpdGlvbgogewotICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblBvc2l0
aW9uPiB3ZWJQb3NpdGlvbiA9IGFkb3B0TlMoW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9j
XSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246cG9zaXRpb25dKTsKKyAgICBSZXRhaW5QdHI8
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gd2ViUG9zaXRpb24gPSBhZG9wdE5TKFtbV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOldURk1vdmUo
cG9zaXRpb24pXSk7CiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAgICAgIFtfcHJvdmlkZXIgcG9z
aXRpb25DaGFuZ2VkOndlYlBvc2l0aW9uLmdldCgpXTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCmluZGV4IDMzNjAyNDkxMGVjMTUxODgyYjY0YTg2Yjk4OTA1MzBjZTkyN2VmYzgu
LjIwYzQzNDMxMDc4N2FiYWRiMDIyNjAzOTViNzkyMDg3NjM3OGI0NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFi
bGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIG92ZXJyaWRlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KaW5k
ZXggMGNiMmJlOTkxZTE3NDg5OTEyNDllZGQxYmM5ZmVlZjU1YWJmM2E4MC4uMmVmM2RiNjIzOWMx
OTQ0NWEwNzUwODE1MzBlODNiY2E0MDI3MWJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
bW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0
UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGll
bnQ6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIHJldHVybiBjb3JlKFtb
bV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSBsYXN0UG9zaXRpb25dKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbi5tbQppbmRleCA0NTZkNGJhOGJkZjBlNzE2NDQ5MDc1MzIxZjllZGQ0ZjA4NDVkZmEw
Li4zNzQ1OWM2Yjg1ODQ3YzYxMzVhYTg2MWI1MTRhMTBkNjRhODZhMWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLm1tCkBAIC0yNiwyNCArMjYsMjQgQEAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaCIKIAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgiCi0jaW1w
b3J0IDx3dGYvUmVmUHRyLmg+Ci0KICNpbXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb25Qb3NpdGlv
bi5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9z
aXRpb25JbnRlcm5hbCA6IE5TT2JqZWN0CiB7CiBAcHVibGljCi0gICAgUmVmUHRyPEdlb2xvY2F0
aW9uUG9zaXRpb24+IF9wb3NpdGlvbjsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIF9wb3NpdGlv
bjsKIH0KIAotLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdl
b2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CistIChpZClpbml0
V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdl
b2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uSW50ZXJuYWwKIAotLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlv
bjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24K
Ky0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRp
b24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQpAQCAtNTYsOSArNTYsMTEgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbgogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBjb3JlKFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlv
blBvc2l0aW9uPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQogewotICAg
IHJldHVybiBwb3NpdGlvbiA/IHBvc2l0aW9uLT5faW50ZXJuYWwtPl9wb3NpdGlvbi5nZXQoKSA6
IDA7CisgICAgaWYgKCFwb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gcG9zaXRpb24tPl9pbnRlcm5hbC0+X3Bvc2l0aW9uOwogfQogCiAtIChpZClpbml0
V2l0aFRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCBsYXRpdHVkZTooZG91YmxlKWxhdGl0dWRl
IGxvbmdpdHVkZTooZG91YmxlKWxvbmdpdHVkZSBhY2N1cmFjeTooZG91YmxlKWFjY3VyYWN5CkBA
IC02NiwxMSArNjgsMTEgQEAgLSAoaWQpaW5pdFdpdGhUaW1lc3RhbXA6KGRvdWJsZSl0aW1lc3Rh
bXAgbGF0aXR1ZGU6KGRvdWJsZSlsYXRpdHVkZSBsb25naXR1ZGU6KGQKICAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfaW50
ZXJuYWwgPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhD
b3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0
YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSldOworICAgIF9pbnRlcm5hbCA9IFtb
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGFsbG9jXSBpbml0V2l0aENvcmVHZW9sb2Nh
dGlvblBvc2l0aW9uOkdlb2xvY2F0aW9uUG9zaXRpb24geyB0aW1lc3RhbXAsIGxhdGl0dWRlLCBs
b25naXR1ZGUsIGFjY3VyYWN5IH1dOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChpZClpbml0
V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNv
cmVHZW9sb2NhdGlvblBvc2l0aW9uCistIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgogewogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbklu
dGVybmFsLmgKaW5kZXggZjU0ZTY2YjgxZTE5OWI0NDQwOTU4MDZkMDRiMTEwM2YyNmRhNTA5Mi4u
MjZjMzJiMTI2ZGYyNDMyNWZkY2U5OWI3Yjg2YThjNzU5ODJjZDdmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oCkBAIC0yNCwxMCArMjQsMTEgQEAKICAqLwogCiAjaW1wb3J0ICJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiB9CiAKLVdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAq
KTsKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uICopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5k
ZXggYmEyODZjOGQ5NzU5NzI4OGRiOGVkMTg1YjIwOGZhOTc4MzAwZDEwZS4uYmEzZjM0MWVkMWVk
NzFmZTlhNTBmM2ZhNDVhZjQ1OTFmMzk0Mzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmNwcApAQCAtNjQsMTQgKzY0LDE0IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnN0b3BV
cGRhdGluZygpCiAgICAgcHJvdmlkZXItPnVucmVnaXN0ZXJXZWJWaWV3KG1fd2ViVmlldy5nZXQo
KSk7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0aW9u
UHJvdmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5nZW9sb2NhdGlv
blByb3ZpZGVyKCZwcm92aWRlcikpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0
aW9uOwogICAgIGlmIChGQUlMRUQocHJvdmlkZXItPmxhc3RQb3NpdGlvbigmcG9zaXRpb24pKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIGNvcmUocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApp
bmRleCA3YjFiZjQ4N2FhYzcwMzM0ZTM1MTVkNzM0MWUyNjYwYTE3ZGUwMTZiLi5mNjJmNWMwZGUx
M2FmODMzZTZjYjg2N2Y3MzJlZjU1OTVmYjk4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRVcGRhdGluZygpIGZp
bmFsOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CiAgICAgdm9pZCBzZXRFbmFibGVI
aWdoQWNjdXJhY3koYm9vbCkgZmluYWwgeyB9Ci0gICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3Np
dGlvbiogbGFzdFBvc2l0aW9uKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uPiBsYXN0UG9zaXRpb24oKSBmaW5hbDsKIAogICAgIHZvaWQgcmVx
dWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uJikgZmluYWwgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
CmluZGV4IDRkNjMxODU2MTEwNDVkMDNmNjNjNzYwODk1NGM5OTU2YzYzZmE1ZmUuLjBkNmI3ODRl
MDc1MDMxMDhjMDM4NjcwNThlMTZiMzk1Y2JmOGZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC04MSwxOCArODEsMTgg
QEAgVUxPTkcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6UmVsZWFzZSgpCiAKIEhSRVNVTFQgV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbjo6aW5pdFdpdGhUaW1lc3RhbXAoZG91YmxlIHRpbWVzdGFtcCwg
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7Ci0g
ICAgbV9wb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKKyAgICBtX3Bvc2l0aW9uID0gR2VvbG9jYXRp
b25Qb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogY29yZShJV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9z
aXRpb24+IGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQogewogICAgIGlm
ICghcG9zaXRpb24pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYkdlb2xvY2F0aW9u
UG9zaXRpb24oUXVlcnksIHBvc2l0aW9uKTsKICAgICBpZiAoIXdlYkdlb2xvY2F0aW9uUG9zaXRp
b24pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHdlYkdlb2xvY2F0aW9uUG9zaXRpb24tPmltcGwoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAppbmRleCA3OThhYjgw
ODdkOWM3ZWYwZjhjZDExYWY2Mzg4YWYzOThlZjg5MmM3Li4wZTA2N2NiOTFiNWI3ZWUxOGZlYmMz
ODhlZGU2NWFhMjllYTUwZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHVibGljOgogICAgIC8v
IElXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGluaXRXaXRoVGltZXN0YW1wKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKIAotICAgIFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24qIGltcGwoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmdldCgp
OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
PiYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KIAogcHJpdmF0ZToKICAgICBV
TE9ORyBtX3JlZkNvdW50IHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBv
c2l0aW9uPiBtX3Bvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbj4gbV9wb3NpdGlvbjsKIH07CiAKLVdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b24qIGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qKTsKK3N0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOwog
CiAjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDVhZGJlYzUzM2ZlOTIzMzIxMzFmZGYw
OTBlMzI2NjY3M2JhZTg0Ny4uZTAyMjFlNWJhNjMzOTM5NGQ3MzAyN2U0YjA3NTNlMWQ2YWRhOTIz
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24pOgorCiAyMDE3LTEwLTEwICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4K
IAogICAgICAgICBBWDogW0FUS10gQVJJQSBmb3JtIHJvbGUgc2hvdWxkIGJlIG1hcHBlZCB0byBB
VEtfUk9MRV9MQU5ETUFSSzsgbm90IEFUS19ST0xFX0ZPUk0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggYTYxMTBkOTE2NjFjYjVlNmJlOGM0NGFhNzM3ZDU3
MjhlMDdjY2E1Yi4uNjMzZTQ3NzgxOWY2YmM2NjMyZWU5NmU0NzExNmNlOTliOGMzZTAxMyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEyNSw3ICsxMjUs
NyBAQCBAZW5kCiAjZW5kaWYKIAogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIChJ
bnRlcm5hbCkKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+KWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOworLSAoaWQp
aW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
JiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIFRlc3RSdW5uZXI6On5UZXN0UnVu
bmVyKCkKQEAgLTQ0OSw4ICs0NDksMTYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICAg
ICAgLy8gVGVzdCB0aGUgZXhwb3NlZCBBUEkuCiAgICAgICAgIHBvc2l0aW9uID0gW1tXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFtcDpjdXJyZW50VGltZSgpIGxh
dGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNjdXJhY3ldOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24gPSBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUs
IGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRl
c0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVh
ZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpOwotICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihXVEZN
b3ZlKGNvcmVHZW9sb2NhdGlvblBvc2l0aW9uKSldOworICAgICAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uIGdlb2xvY2F0aW9uUG9zaXRpb24geyBjdXJyZW50VGltZSgpLCBsYXRpdHVk
ZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgICAgICBpZiAocHJvdmlkZXNBbHRpdHVkZSkK
KyAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKKyAg
ICAgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAgICAgIGdlb2xvY2F0
aW9uUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgICAg
IGlmIChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmhl
YWRpbmcgPSBoZWFkaW5nOworICAgICAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAgICAgICAg
IGdlb2xvY2F0aW9uUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKyAgICAgICAgcG9zaXRpb24gPSBb
W1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlv
bjooV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSldOwogICAgIH0KICAgICBbW01vY2tHZW9s
b2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0UG9zaXRpb246cG9zaXRpb25dOwogICAgIFtwb3Np
dGlvbiByZWxlYXNlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323418</attachid>
            <date>2017-10-11 08:44:00 -0700</date>
            <delta_ts>2017-10-11 08:47:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171011084359.patch</filename>
            <type>text/plain</type>
            <size>66723</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uYjhjZGJiYzY4M2JmYWZlZDhhNjgzNzg0MThmNjMx
NjQ4OTYyNmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBN
b2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZToKKyAgICAgICAgLSBVc2Ugc3RkOjpvcHRpb25hbDw+
IGluc3RlYWQgb2Ygc2VwYXJhdGUgYm9vbGVhbiBtZW1iZXJzCisgICAgICAgIC0gTWFrZSBHZW9s
b2NhdGlvblBvc2l0aW9uIGEgc2ltcGxlIHN0cnVjdCB0aGF0IGNhbiBiZSBwYXNzZWQgdmlhIElQ
QworICAgICAgICAtIFJlcGxhY2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSB3aXRoIEdl
b2xvY2F0aW9uUG9zaXRpb24KKyAgICAgICAgLSBNb3ZlIGxvZ2ljIHRvIGNvbnN0cnVjdCBhIEdl
b2xvY2F0aW9uUG9zaXRpb24gZnJvbSBhIENMTG9jYXRpb24gb24gaU9TCisgICAgICAgICAgaW4g
b25lIHBsYWNlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjpDb29yZGluYXRlcyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGlu
YXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVzOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlczo6bG9uZ2l0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjphbHRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmhlYWRpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OnNwZWVkIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUdlb3Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Omxh
c3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246Okdlb2xvY2F0
aW9uUG9zaXRpb24pOgorICAgICAgICBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBvbmx5IG5l
ZWRlZCBieSBvdXIgSVBDIGRlY29kaW5nIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9z
L0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmg6CisKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCByZWFsbHkgZml4IHRoZSBidWls
ZCB3aXRoIGNlcnRhaW4gU0RLcy4KIAogICAgICAgICBGb2xsb3ctdXAgdG8gcjIyMzE1NCwgd2hp
Y2ggZml4ZWQgdGhlIHdyb25nIGxhbWJkYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjMyNjZkZmNiYjdmMjBiNTk5
Y2NmNGZkYjgwYjYwMTBlMmVhMjBhOC4uNjFhNjUwZjZhNmQxMWRlNzJmMDBlZjY2OTM0NTMwNTYz
MzM0NWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNy0xMC0xMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlvbiBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgx
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
UG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjp0aW1lc3RhbXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmxvbmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6
CisgICAgICAgIChXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50Ojps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEz
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTky
MDllOTNiOTEwYjJiOTZmNTllLi5iNWExYzgyOTAyNTAzZDUzOTYxZjhjZDIwODdhMmQ0MDVjNzRl
ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5p
emUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg6Cisg
ICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tOgorICAg
ICAgICAoLVtXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIHNlbmRMb2NhdGlvbjpd
KToKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAg
ICgtW19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBwb3NpdGlvbkNoYW5nZWQ6
XSk6CisKIDIwMTctMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwMTQwNWI0YmNmOWQ3YjVkYTBhZjkwYjgzMmZjYjIzMzBj
NzU3ZjEuLmRmODc3Y2QwOWRkMmM2NGQ1OWEzODc4NTVkNmNjYzMyYWUxOTA5M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMC0xMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlv
biBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgaW5p
dFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAg
ICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGluaXRXaXRoVGltZXN0YW1wOmxhdGl0dWRlOmxv
bmdpdHVkZTphY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBp
bml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDoKKwogMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFs
dWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1h
cC52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA4NDI4ODVhZmE3NmYy
NjFkZTdhNDk0ZDQ3NDBkZjhkZjEwMjExNGVmLi5mNDRkOTU0ZjgyYzc5ZjI4NzZlODdkYWJlZDVk
NzkzZmQxMDY0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmluaXRXaXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Omlt
cGwgY29uc3QpOgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpj
b29raWVzRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0Nvb3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIz
NWQxYjllNjcuLjljZWJkZmMwZjY1YThmYjgxMDI0M2UxMjdlZDc5Njc1ODQyZjUwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CkBAIC0yOCwzMiArMjgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRlKCkgY29uc3QKK0Nvb3JkaW5hdGVzOjpD
b29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYgcG9zaXRpb24pCisgICAgOiBtX3Bvc2l0
aW9uKFdURk1vdmUocG9zaXRpb24pKQogewotICAgIGlmICghbV9jYW5Qcm92aWRlQWx0aXR1ZGUp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGU7Cisg
ICAgQVNTRVJUKG1fcG9zaXRpb24uaXNWYWxpZCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FuUHJvdmlk
ZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1faGVh
ZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpzcGVlZCgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29v
cmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0
ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVhMDYzODMyLi4yNzYz
NzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5hdGVzPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBh
bHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJv
b2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENv
b3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRl
LCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBw
cm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7IH0KKyAgICBz
dGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbiYmIHBvc2l0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZXMoV1RG
TW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0ZXM+IGlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZXM6OmNyZWF0ZSht
X2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUsIG1fYWx0aXR1ZGUs
IG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1fYWx0aXR1ZGVBY2N1
cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblByb3ZpZGVTcGVlZCwg
bV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRlKCBHZW9sb2NhdGlv
blBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFs
dGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9h
Y2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkg
Y29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25zdDsKLSAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdp
dHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRp
dHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24u
YWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5oZWFk
aW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlcyhkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJs
ZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBt
X2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKLSAg
ICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJh
Y3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpCi0gICAg
ICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChzcGVlZCkKLSAgICAg
ICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQotICAg
ICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNp
dCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAgZG91YmxlIG1fbGF0
aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwot
ICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAgICAKLSAgICBib29s
IG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3Zp
ZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247CiB9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFiY2U0YzAwNWFjMWQ2
MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAzZWY3OTA0NTdlZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyIGZhaWxlZFRvU3Rh
cnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdlb2xvY2F0CiBzdGF0
aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtdID0gIkdlb2xvY2F0
aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwogc3RhdGljIGNvbnN0
IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNzYWdlW10gPSAiT3Jp
Z2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRpb24gc2VydmljZSI7
CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0aW9uKEdlb2xvY2F0
aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3NpdGlvbj4gY3JlYXRl
R2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9u
KQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBvc2l0aW9uLT5sYXRp
dHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1
ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlvbi0+YWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5hbHRp
dHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBw
b3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9u
LT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29v
cmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3Rh
bXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0U2Vjb25kc1RvRE9N
VGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBHZW9wb3NpdGlvbjo6
Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52YWx1ZSgpKSksIHRp
bWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3JlYXRlUG9zaXRpb25F
cnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMsNyBAQCBHZW9wb3Np
dGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRlR2VvcG9zaXRpb24o
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRpb24oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5MzkwOGMzYWYwLi5m
NzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb247CkBAIC00Miw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdlYktpdCB0byByZWZs
ZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAgICAvLyBpcyBwdWJs
aXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7
Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7Cisg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlv
bigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlv
biYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRjZDA1NDY5N2Q3ZGIx
YWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4Yzk2YTY5NzBjMzE2
YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2
b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0
KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9u
Q2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlv
blBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsK
ICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOwpAQCAtMTIwLDEw
ICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoR2Vv
bG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRFcnJvcihlcnJvcik7
CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6bGFzdFBv
c2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25D
b250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQb3NpdGlvbi5nZXQo
KSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAgIGlmIChtX2xhc3RQ
b3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVlKCk7CiAKICAgICBy
ZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAppbmRl
eCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5iNjVkNjBkNTQxZWM1
Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTUz
LDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9z
aXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Q
b3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFj
dGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJy
aWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAK
ICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OwogICAg
IC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFu
ZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNjOWVkZTJhOGE2NzBk
MzA1NzdiMWRiMDM1ZGJjZDYuLjg5MGExZDJlNzFmNDRjYzJjYzU2NDIxNWVmNjBlZDA5ODEyYzEy
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4OSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9T
KQorT0JKQ19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0
aW9uUG9zaXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAs
IGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1l
c3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xv
Y2F0aW9uUG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9u
UG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1
ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHBy
b3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1
ZGUobGF0aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBh
Y2N1cmFjeShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdl
b2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFj
eSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
YWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVk
LCBzcGVlZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAg
ZG91YmxlIGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJs
ZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBh
Y2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1
ZGUoKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUg
aGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogCi0gICAgYm9vbCBjYW5Qcm92
aWRlQWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVkZTsgfQotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NhblBy
b3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBib29sIGNhblByb3ZpZGVT
cGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZVNwZWVkOyB9CisgICAgZG91YmxlIGxh
dGl0dWRlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OworICAg
IGRvdWJsZSBsb25naXR1ZGUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpIH07CisgICAgZG91YmxlIGFjY3VyYWN5IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OwogCi1wcml2YXRlOgotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91
YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3kpCi0gICAgICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1f
bGF0aXR1ZGUobGF0aXR1ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAg
ICAgICAsIG1fYWNjdXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZSgwKQotICAg
ICAgICAsIG1fYWx0aXR1ZGVBY2N1cmFjeSgwKQotICAgICAgICAsIG1faGVhZGluZygwKQotICAg
ICAgICAsIG1fc3BlZWQoMCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShmYWxzZSkK
LSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KGZhbHNlKQotICAgICAgICAs
IG1fY2FuUHJvdmlkZUhlYWRpbmcoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
ZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGhlYWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVk
OwogCi0gICAgR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0Fs
dGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFk
aW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBtX3RpbWVz
dGFtcCh0aW1lc3RhbXApCi0gICAgICAgICwgbV9sYXRpdHVkZShsYXRpdHVkZSkKLSAgICAgICAg
LCBtX2xvbmdpdHVkZShsb25naXR1ZGUpCi0gICAgICAgICwgbV9hY2N1cmFjeShhY2N1cmFjeSkK
LSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWx0aXR1ZGVBY2N1
cmFjeShhbHRpdHVkZUFjY3VyYWN5KQotICAgICAgICAsIG1faGVhZGluZyhoZWFkaW5nKQotICAg
ICAgICAsIG1fc3BlZWQoc3BlZWQpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUocHJv
dmlkZXNBbHRpdHVkZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KHBy
b3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKHBy
b3ZpZGVzSGVhZGluZykKLSAgICAgICAgLCBtX2NhblByb3ZpZGVTcGVlZChwcm92aWRlc1NwZWVk
KQotICAgIHsKLSAgICB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBHZW9sb2NhdGlv
blBvc2l0aW9uJik7Cit9OwogCi0gICAgZG91YmxlIG1fdGltZXN0YW1wOwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB0aW1lc3RhbXA7CisgICAgZW5jb2RlciA8
PCBsYXRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGxvbmdpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFj
Y3VyYWN5OworICAgIGVuY29kZXIgPDwgYWx0aXR1ZGU7CisgICAgZW5jb2RlciA8PCBhbHRpdHVk
ZUFjY3VyYWN5OworICAgIGVuY29kZXIgPDwgaGVhZGluZzsKKyAgICBlbmNvZGVyIDw8IHNwZWVk
OworfQogCi0gICAgZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwot
ICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwotICAgIGRvdWJs
ZSBtX2FsdGl0dWRlQWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUg
bV9zcGVlZDsKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEdlb2xvY2F0aW9uUG9zaXRp
b246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBHZW9sb2NhdGlvblBvc2l0aW9uJiBwb3NpdGlv
bikKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLnRpbWVzdGFtcCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmxhdGl0
dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9z
aXRpb24ubG9uZ2l0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocG9zaXRpb24uYWNjdXJhY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5hbHRpdHVkZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5oZWFkaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocG9zaXRpb24uc3BlZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFj
eTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVT
cGVlZDsKLX07CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR2VvbG9jYXRpb25Qb3NpdGlv
bjo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzdGQ6OmlzbmFuKHRpbWVzdGFtcCkg
JiYgIXN0ZDo6aXNuYW4obGF0aXR1ZGUpICYmICFzdGQ6OmlzbmFuKGxvbmdpdHVkZSkgJiYgIXN0
ZDo6aXNuYW4oYWNjdXJhY3kpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBv
c2l0aW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2Vv
bG9jYXRpb25Qb3NpdGlvbklPUy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjk3ZTg0YzhhZjBjOGE4NDM0MmIy
NDc0NjIxMTdhZWEyZmQ4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbQpAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKworI2lm
IFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8Q29yZUxvY2F0aW9uL0NMTG9jYXRpb24uaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2NhdGlvblBvc2l0aW9uOjpHZW9sb2NhdGlvblBv
c2l0aW9uKENMTG9jYXRpb24qIGxvY2F0aW9uKQorICAgIDogdGltZXN0YW1wKGxvY2F0aW9uLnRp
bWVzdGFtcC50aW1lSW50ZXJ2YWxTaW5jZTE5NzApCisgICAgLCBsYXRpdHVkZShsb2NhdGlvbi5j
b29yZGluYXRlLmxhdGl0dWRlKQorICAgICwgbG9uZ2l0dWRlKGxvY2F0aW9uLmNvb3JkaW5hdGUu
bG9uZ2l0dWRlKQorICAgICwgYWNjdXJhY3kobG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5KQor
eworICAgIGlmIChsb2NhdGlvbi52ZXJ0aWNhbEFjY3VyYWN5ID49IDAuMCkgeworICAgICAgICBh
bHRpdHVkZSA9IGxvY2F0aW9uLmFsdGl0dWRlOworICAgICAgICBhbHRpdHVkZUFjY3VyYWN5ID0g
bG9jYXRpb24udmVydGljYWxBY2N1cmFjeTsKKyAgICB9CisgICAgaWYgKGxvY2F0aW9uLnNwZWVk
ID49IDAuMCkKKyAgICAgICAgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKKyAgICBpZiAobG9jYXRp
b24uY291cnNlID49IDAuMCkKKyAgICAgICAgaGVhZGluZyA9IGxvY2F0aW9uLmNvdXJzZTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkZTkyYTg5Zjc2ZmViOThmMjUwZjNhYWM2YWY2MGVkMjYyYWNk
OWRhLi5kMzc3MDExNWUyZjA5NmExNmRjZDU1OGY4YmY3ZTc3NjM0MzcyMGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTUw
LDYgKzM1NTAsNyBAQAogCQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xv
Z2dpbmdSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzcyREIzMDFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1
bHRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODM3NjA5Q0ExRjU0Q0MxODAwMEMxMjJEIC8qIEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3NjA5QzgxRjU0Q0MxMzAw
MEMxMjJEIC8qIEVycm9yQ2FsbGJhY2suY3BwICovOyB9OwogCQk4Mzc2NUY5NTFEQUM1MjJGMDBD
MDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5p
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgz
Nzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5
QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi87IH07CiAJCTgzN0E4MDEz
MUUxRTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2
QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0ICovOyB9OwogCQk4MzdCN0QyMDFEQzNGNTUw
MDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxp
ZGF0aW9uQnViYmxlSU9TLm1tICovOyB9OwogCQk4Mzg2QTk2RDE5RjYxQjJFMDBFMUVDNEEgLyog
U3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggKi87IH07CkBA
IC0xMTg3Myw2ICsxMTg3NCw3IEBACiAJCTgzNzYwOUM4MUY1NENDMTMwMDBDMTIyRCAvKiBFcnJv
ckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVycm9y
Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc2NUY5MzFEQUM1
MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1vdXNlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVG
OTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Q
b3NpdGlvbklPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIx
RTFFMTI3MzAwMDI2QjlGIC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gRW5nbGlz
aDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlk
YXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjA0MzgsNiArMjA0NDAsMTUgQEAKIAkJCXBhdGggPSBiZWFj
b247CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk4Mzc5NjRDQzFGOERCNjdE
MDAyMThFQTAgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0gaW9zOworCQkJcGF0aCA9ICJOZXcgR3JvdXAiOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJODNGQjMzNjUxRjUwOEExNzAwOTg2
RTU0IC8qIGVudHJpZXNhcGkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMjEzMDEsNiArMjEzMTIsNyBAQAogCQk5NzExNDVGRjE0RUYwMDc5MDA2NzRGRDkg
LyogZ2VvbG9jYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTgzNzk2NENDMUY4REI2N0QwMDIxOEVBMCAvKiBpb3MgKi8sCiAJCQkJOTc0NkFGMTEx
NEY0RERFNjAwM0U3QTcyIC8qIENvb3JkaW5hdGVzLmNwcCAqLywKIAkJCQk5NzQ2QUYxMTE0RjRE
REU2MDAzRTdBNzAgLyogQ29vcmRpbmF0ZXMuaCAqLywKIAkJCQk5NzQ2QUYxMjE0RjREREU2MDAz
RTdBNzAgLyogQ29vcmRpbmF0ZXMuaWRsICovLApAQCAtMzIxNTQsNiArMzIxNjYsNyBAQAogCQkJ
CUNENEJFNTJBMUNFMTM2RUYwMDlEODdEQSAvKiBHZW5lcmljVGFza1F1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3NDZBRjIzMTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYyNjE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzNzk2NENGMUY4REI2OUQwMDIx
OEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
NjI1MkUxOERFMUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ2QzgzRUZEMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDUwMzY2ODFCQ0REREM0MDBFMjBCQjMgLyogR2VzdHVyZUV2ZW50
cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRleCBiYzAxZWRhMzdiMTIyNTgxYWFm
MjFlNTcwMzJkYjJjYmJkZGIyNzRlLi4xOGRhZmQ5ZTdmY2JkNGJiMzE1YjllNDczZDdlNzdkMGVk
YTg4NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpzZXRDb250cm9sbGVyKEdlb2xvY2F0aW9uQ29udHJvbGxlciAqY29udHJvbGxl
cikKICAgICBtX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOwogfQogCi12b2lkIEdlb2xvY2F0aW9u
Q2xpZW50TW9jazo6c2V0UG9zaXRpb24oUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYgcG9z
aXRpb24pCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oR2VvbG9jYXRp
b25Qb3NpdGlvbiYmIHBvc2l0aW9uKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gV1RGTW92ZShw
b3NpdGlvbik7CiAgICAgY2xlYXJFcnJvcigpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYQogewogICAgIG1faGFzRXJyb3IgPSB0cnVlOwogICAgIG1fZXJyb3JNZXNz
YWdlID0gZXJyb3JNZXNzYWdlOwotICAgIG1fbGFzdFBvc2l0aW9uID0gbnVsbHB0cjsKKyAgICBt
X2xhc3RQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIo
KTsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpw
ZXJtaXNzaW9uVGltZXJGaXJlZCgpCiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpyZXNl
dCgpCiB7Ci0gICAgbV9sYXN0UG9zaXRpb24gPSBudWxscHRyOworICAgIG1fbGFzdFBvc2l0aW9u
ID0gc3RkOjpudWxsb3B0OwogICAgIGNsZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Npb25TdGF0
ZSA9IFBlcm1pc3Npb25TdGF0ZVVuc2V0OwogfQpAQCAtMTU2LDkgKzE1Niw5IEBAIHZvaWQgR2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkKICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDM4CiB9CiAKLUdl
b2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bGFzdFBvc2l0aW9uKCkK
K3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpsYXN0UG9zaXRpb24oKQogewotICAgIHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsKKyAg
ICByZXR1cm4gbV9sYXN0UG9zaXRpb247CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
Ojphc3luY1VwZGF0ZUNvbnRyb2xsZXIoKQpAQCAtMTcyLDkgKzE3Miw5IEBAIHZvaWQgR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCgpCiB7CiAgICAgQVNTRVJUKG1f
Y29udHJvbGxlcik7CiAKLSAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkpIHsKKyAgICBpZiAo
bV9sYXN0UG9zaXRpb24pIHsKICAgICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsKLSAgICAgICAg
bV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkpOworICAg
ICAgICBtX2NvbnRyb2xsZXItPnBvc2l0aW9uQ2hhbmdlZCgqbV9sYXN0UG9zaXRpb24pOwogICAg
IH0gZWxzZSBpZiAobV9oYXNFcnJvcikgewogICAgICAgICBhdXRvIGdlb2xvY2F0aW9FcnJvciA9
IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZh
aWxhYmxlLCBtX2Vycm9yTWVzc2FnZSk7CiAgICAgICAgIG1fY29udHJvbGxlci0+ZXJyb3JPY2N1
cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggODVmYzAzODA2MTRmNGNk
YzMyNGJhZjVmYTFhNjUyNTE5NGEzNjYwYi4uZmMxYjUxZDdmNzEwZmMzODYyMWVkY2M3NmU2MDRm
Yzc2ZGFhMTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dl
b2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC0zMiw2ICszMiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3Np
dGlvbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MCw3ICs0MSw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlcjsKLWNsYXNzIEdlb2xvY2F0aW9uUG9z
aXRpb247CiAKIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hv
dWxkIGJlIG1vdmVkIHRvIFdlYktpdC4KIC8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRo
ZSBnZW9sb2NhdGlvbiBjbGllbnQuCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc2V0KCk7CiAgICAgdm9pZCBzZXRDb250cm9sbGVyKEdlb2xvY2F0aW9uQ29udHJvbGxlciop
OwogCi0gICAgdm9pZCBzZXRQb3NpdGlvbihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJik7
CisgICAgdm9pZCBzZXRQb3NpdGlvbihHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogICAgIHZvaWQg
c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
ICAgICB2b2lkIHNldFBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKTsKICAgICBpbnQgbnVtYmVyT2ZQ
ZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKCkgY29uc3Q7CkBAIC02Miw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHN0b3BVcGRh
dGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92
ZXJyaWRlOwotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKSBvdmVy
cmlkZTsKIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJFcnJvcigp
OwogCiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgUmVmUHRy
PEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAgICAgYm9vbCBtX2hhc0Vycm9y
OwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lciBtX2NvbnRyb2xsZXJUaW1l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAK
aW5kZXggYmJmOWZhNTRjYTNjODM2M2RkZTU1MGIzOGNiMTdmZjg4YWZhOWRmMy4uM2YxNTU4Yjc1
MmJlZjhjOTJiNDE2OTZmZDQ2YTBjMDgxYjViYmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTMwLDM0ICszMCwxNSBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVz
U3BlZWQsIGRvdWJsZSBzcGVlZCkKLXsKLSAgICBtX2RhdGEudGltZXN0YW1wID0gdGltZXN0YW1w
OwotICAgIG1fZGF0YS5sYXRpdHVkZSA9IGxhdGl0dWRlOwotICAgIG1fZGF0YS5sb25naXR1ZGUg
PSBsb25naXR1ZGU7Ci0gICAgbV9kYXRhLmFjY3VyYWN5ID0gYWNjdXJhY3k7Ci0gICAgbV9kYXRh
LmNhblByb3ZpZGVBbHRpdHVkZSA9IHByb3ZpZGVzQWx0aXR1ZGU7Ci0gICAgbV9kYXRhLmFsdGl0
dWRlID0gYWx0aXR1ZGU7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5ID0g
cHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5OwotICAgIG1fZGF0YS5hbHRpdHVkZUFjY3VyYWN5ID0g
YWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2RhdGEuY2FuUHJvdmlkZUhlYWRpbmcgPSBwcm92aWRl
c0hlYWRpbmc7Ci0gICAgbV9kYXRhLmhlYWRpbmcgPSBoZWFkaW5nOwotICAgIG1fZGF0YS5jYW5Q
cm92aWRlU3BlZWQgPSBwcm92aWRlc1NwZWVkOwotICAgIG1fZGF0YS5zcGVlZCA9IHNwZWVkOwot
fQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKK1JlZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0
aW9uUG9zaXRpb24pCiB7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uUG9zaXRpb24pKSk7CiB9CiAKLXZvaWQgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKLXsKLSAgICBJUEM6OlNpbXBsZUFyZ3VtZW50Q29kZXI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6RGF0YT46OmVuY29kZShlbmNvZGVyLCAqdGhpcyk7Ci19Ci0KLWJvb2wgV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgRGF0YSYgZGF0
YSkKK1dlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsK
LSAgICByZXR1cm4gSVBDOjpTaW1wbGVBcmd1bWVudENvZGVyPFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OkRhdGE+OjpkZWNvZGUoZGVjb2RlciwgZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmlu
ZGV4IDFkZDc5ODliY2MwM2Q0MDAwMGRjZDljYzI2OTRjYmFiY2ZmZTQ2MDEuLjQxOGFjMzYzMTQ3
ZTQ0MDllNDJkZmZjMWFkODFiMTRiMWM1MjhlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbl9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgsNTYgKzM5LDI4IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gewogcHVibGljOgotICAg
IHN0cnVjdCBEYXRhIHsKLSAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
Ci0gICAgICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBEYXRhJik7Ci0KLSAg
ICAgICAgZG91YmxlIHRpbWVzdGFtcDsKLSAgICAgICAgZG91YmxlIGxhdGl0dWRlOwotICAgICAg
ICBkb3VibGUgbG9uZ2l0dWRlOwotICAgICAgICBkb3VibGUgYWNjdXJhY3k7Ci0KLSAgICAgICAg
ZG91YmxlIGFsdGl0dWRlOwotICAgICAgICBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeTsKLSAgICAg
ICAgZG91YmxlIGhlYWRpbmc7Ci0gICAgICAgIGRvdWJsZSBzcGVlZDsKLQotICAgICAgICBib29s
IGNhblByb3ZpZGVBbHRpdHVkZTsKLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICAgICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZzsKLSAgICAgICAgYm9vbCBjYW5Q
cm92aWRlU3BlZWQ7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxv
bmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBib29sIHByb3ZpZGVzQWx0aXR1ZGUsIGRvdWJsZSBh
bHRpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFj
Y3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlk
ZXNTcGVlZCwgZG91YmxlIHNwZWVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUs
IGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFj
Y3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3Zp
ZGVzU3BlZWQsIHNwZWVkKSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8V2ViR2VvbG9jYXRpb25Q
b3NpdGlvbj4gY3JlYXRlKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJik7CiAKICAgICB2
aXJ0dWFsIH5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCk7CiAKLSAgICBkb3VibGUgdGltZXN0YW1w
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnRpbWVzdGFtcDsgfQotICAgIGRvdWJsZSBsYXRpdHVk
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5sYXRpdHVkZTsgfQotICAgIGRvdWJsZSBsb25naXR1
ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubG9uZ2l0dWRlOyB9Ci0gICAgZG91YmxlIGFjY3Vy
YWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmFjY3VyYWN5OyB9CisgICAgZG91YmxlIHRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLnRpbWVzdGFtcDsgfQorICAgIGRv
dWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxhdGl0dWRlOyB9
CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmxv
bmdpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBv
c2l0aW9uLmFjY3VyYWN5OyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRpb24uYWx0aXR1ZGU7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0
aW9uLmFsdGl0dWRlQWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmhlYWRpbmc7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5zcGVl
ZDsgfQogCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuY2FuUHJvdmlkZUFsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmFsdGl0dWRlOyB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZUFj
Y3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5
OyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
YWx0aXR1ZGVBY2N1cmFjeTsgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlSGVhZGluZzsgfQotICAgIGRvdWJsZSBoZWFkaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmhlYWRpbmc7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlk
ZVNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmNhblByb3ZpZGVTcGVlZDsgfQotICAgIGRv
dWJsZSBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zcGVlZDsgfQotCi0gICAgY29uc3Qg
RGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24mIGNvcmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29y
ZVBvc2l0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBh
Y2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJv
dmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92
aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBz
cGVlZCk7CisgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbihXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uJiYgZ2VvbG9jYXRpb25Qb3NpdGlvbikKKyAgICAgICAgOiBtX2NvcmVQ
b3NpdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uUG9zaXRpb24pKQorICAgIHsKKyAgICB9CiAKLSAg
ICBEYXRhIG1fZGF0YTsKKyAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIG1fY29yZVBv
c2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCA1
N2ZiZGNmZDNlZTZlOTk5ZDJkNWQzYjFkMDM1OTUyMjBhZmRjNGVkLi4zMjQxZDcyN2QzYzU3MTYy
OTU2M2IxYTE5N2JiOTI1MzdjZGYyYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTQzLDYgKzQzLDE2
IEBAIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGUo
ZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhCiAKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBX
S0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0Fs
dGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFk
aW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKIHsKLSAgICBhdXRvIHBvc2l0
aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUs
IGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRl
c0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVh
ZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpOworICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24gY29yZVBvc2l0aW9uIHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1
cmFjeSB9OworICAgIGlmIChwcm92aWRlc0FsdGl0dWRlKQorICAgICAgICBjb3JlUG9zaXRpb24u
YWx0aXR1ZGUgPSBhbHRpdHVkZTsKKyAgICBpZiAocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQor
ICAgICAgICBjb3JlUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7
CisgICAgaWYgKHByb3ZpZGVzSGVhZGluZykKKyAgICAgICAgY29yZVBvc2l0aW9uLmhlYWRpbmcg
PSBoZWFkaW5nOworICAgIGlmIChwcm92aWRlc1NwZWVkKQorICAgICAgICBjb3JlUG9zaXRpb24u
c3BlZWQgPSBzcGVlZDsKKworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKICAgICByZXR1cm4gdG9BUEkoJnBv
c2l0aW9uLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tCmluZGV4IDhlZWZiZWNj
NzRjY2NiMTc0MDlhY2ZhMTcyOGM5YmI5MzA5MjZiZmEuLjZmODE5ZGYxNDc1NzZlZmU1OTViODk3
YzBkYjJkZGMzMzQ3ZjE4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tCkBAIC0zOSwyOSArMzks
NyBAQCArIChpbnN0YW5jZXR5cGUpcG9zaXRpb25XaXRoTG9jYXRpb246KENMTG9jYXRpb24gKils
b2NhdGlvbgogICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBi
b29sIGNhblByb3ZpZGVBbHRpdHVkZSA9IHRydWU7Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeSA9IHRydWU7Ci0gICAgZG91YmxlIGFsdGl0dWRlID0gbG9jYXRpb24uYWx0aXR1
ZGU7Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3kgPSBsb2NhdGlvbi52ZXJ0aWNhbEFjY3Vy
YWN5OwotICAgIGlmIChhbHRpdHVkZUFjY3VyYWN5IDwgMC4wKSB7Ci0gICAgICAgIGNhblByb3Zp
ZGVBbHRpdHVkZSA9IGZhbHNlOwotICAgICAgICBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9
IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNwZWVkID0gdHJ1ZTsKLSAgICBk
b3VibGUgc3BlZWQgPSBsb2NhdGlvbi5zcGVlZDsKLSAgICBpZiAoc3BlZWQgPCAwLjApCi0gICAg
ICAgIGNhblByb3ZpZGVTcGVlZCA9IGZhbHNlOwotCi0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGlu
ZyA9IHRydWU7Ci0gICAgZG91YmxlIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vyc2U7Ci0gICAgaWYg
KGhlYWRpbmcgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVIZWFkaW5nID0gZmFsc2U7Ci0KLSAg
ICBDTExvY2F0aW9uQ29vcmRpbmF0ZTJEIGNvb3JkaW5hdGUgPSBsb2NhdGlvbi5jb29yZGluYXRl
OwotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBsb2NhdGlvbi50aW1lc3RhbXAudGltZUludGVydmFs
U2luY2UxOTcwOwotCi0gICAgcmV0dXJuIFt3cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246
OmNyZWF0ZSh0aW1lc3RhbXAsIGNvb3JkaW5hdGUubGF0aXR1ZGUsIGNvb3JkaW5hdGUubG9uZ2l0
dWRlLCBsb2NhdGlvbi5ob3Jpem9udGFsQWNjdXJhY3ksIGNhblByb3ZpZGVBbHRpdHVkZSwgYWx0
aXR1ZGUsIGNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBjYW5Q
cm92aWRlSGVhZGluZywgaGVhZGluZywgY2FuUHJvdmlkZVNwZWVkLCBzcGVlZCkubGVha1JlZigp
KSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFt3cmFwcGVyKFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIHsgbG9jYXRpb24gfSkubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25Qcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlv
blByb3ZpZGVyLmNwcAppbmRleCBkYjc3ZjM4OTBjNTVkMzY2MTg2MjZhM2ViY2U1ZGFlOTZlYzRl
MGUyLi4wMDdkMTExYmFkMDdiMDMwY2I5YTgwYTM3YWFjYzk1YjI1ZjkzYzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9s
b2NhdGlvblByb3ZpZGVyLmNwcApAQCAtODEsNyArODEsMTAgQEAgdm9pZCBXZWJLaXRHZW9sb2Nh
dGlvblByb3ZpZGVyOjpzdG9wVXBkYXRpbmcoKQogCiB2b2lkIFdlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZChpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeSkKIHsKLSAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3Np
dGlvbj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZXN0YW1w
LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSwgdHJ1ZSwgYWx0aXR1ZGUsIHRydWUsIGFs
dGl0dWRlQWNjdXJhY3ksIGZhbHNlLCAwLCBmYWxzZSwgMCk7CisgICAgV2ViQ29yZTo6R2VvbG9j
YXRpb25Qb3NpdGlvbiBjb3JlUG9zaXRpb24geyBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFt
cCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH07CisgICAgY29yZVBvc2l0aW9uLmFs
dGl0dWRlID0gYWx0aXR1ZGU7CisgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBh
bHRpdHVkZUFjY3VyYWN5OworICAgIFJlZlB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3Np
dGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXVEZNb3ZlKGNvcmVQb3NpdGlv
bikpOwogICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyLT5wcm92aWRlckRpZENoYW5nZVBvc2l0aW9u
KHBvc2l0aW9uLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDg3YjI5Njg2YmJlNTZmZmUz
NGVlNzM0OWMxZjhhOTBiZjY4YTIwMTkuLjUyYjAxMWY1ZGJhYzZjZDZiNzA3M2I4MjA1NDZmYjYy
NmUyMWE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBUElH
ZW9sb2NhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQb29sLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTAsNyArOTEsNyBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdl
b2xvY2F0aW9uUG9zaXRpbwogICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5kYXRhKCkpKTsK
KyAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlcjo6RGlkQ2hhbmdlUG9zaXRpb24ocG9zaXRpb24tPmNvcmVQb3NpdGlvbigp
KSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkRmFp
bFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbQppbmRleCBjMzdiMzMxNDEzZmIzZTJhZjM2YWMyMDA2YzFlMzkyODU0Zjc0N2FhLi44OTJk
ZWUxM2UxNjkzYjY4YzdjMzE1NmIzMjRkMjZlZjgxODUxNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAg
LTc0LDExICs3NCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiwgVUlXaW5kb3cqKTsK
IH07CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IGtpdChXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHBvc2l0aW9uLT50aW1lc3RhbXAoKSwgcG9zaXRpb24t
PmxhdGl0dWRlKCksIHBvc2l0aW9uLT5sb25naXR1ZGUoKSwgcG9zaXRpb24tPmFjY3VyYWN5KCks
IHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIHBv
c2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSgpLCBwb3NpdGlvbi0+YWx0aXR1ZGVB
Y2N1cmFjeSgpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZUhlYWRpbmcoKSwgcG9zaXRpb24tPmhlYWRp
bmcoKSwgcG9zaXRpb24tPmNhblByb3ZpZGVTcGVlZCgpLCBwb3NpdGlvbi0+c3BlZWQoKSk7Ci19
Ci0KIHN0cnVjdCBHZW9sb2NhdGlvblJlcXVlc3REYXRhIHsKICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbjsKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gZnJhbWU7CkBAIC0zMDQs
MTAgKzI5OSwxMCBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZAogICAg
IFtfbGlzdGVuZXIgZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkXTsKIH0KIAotLSAodm9p
ZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24gKiljb3JlUG9z
aXRpb24KKy0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0
aW9uJiYpY29yZVBvc2l0aW9uCiB7CiAgICAgQVNTRVJUKF9saXN0ZW5lcik7Ci0gICAgYXV0byBw
b3NpdGlvbiA9IGtpdChjb3JlUG9zaXRpb24pOworICAgIGF1dG8gcG9zaXRpb24gPSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3JlUG9zaXRpb24pKTsKICAgICBbX2xp
c3RlbmVyIHBvc2l0aW9uQ2hhbmdlZDp3cmFwcGVyKHBvc2l0aW9uLmdldCgpKV07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZDM2ZTY4ZDVhODY1NTI2ODJmMTYzMjY5NWUx
Y2I5NjI1ODNkNzc0NC4uOTU2NzUxODBjNDNhMGMxNjRlYjJhNTA0YmNmMDEwMzJjZjg3NzVjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkxLDE5ICs5MSwxNyBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcjo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShXZWJQYWdl
JiBwYWdlLCBib29sIGVuYQogICAgICAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OlNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3lTaG91bGRCZUVuYWJsZWQpLCAwKTsKIH0KIAotdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OkRhdGEmIGRhdGEpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6
ZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgR2VvbG9jYXRpb25Qb3NpdGlvbiYgcG9zaXRpb24pCiB7
CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9u
PiBwb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShkYXRhLnRpbWVzdGFtcCwg
ZGF0YS5sYXRpdHVkZSwgZGF0YS5sb25naXR1ZGUsIGRhdGEuYWNjdXJhY3ksIGRhdGEuY2FuUHJv
dmlkZUFsdGl0dWRlLCBkYXRhLmFsdGl0dWRlLCBkYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3Vy
YWN5LCBkYXRhLmFsdGl0dWRlQWNjdXJhY3ksIGRhdGEuY2FuUHJvdmlkZUhlYWRpbmcsIGRhdGEu
aGVhZGluZywgZGF0YS5jYW5Qcm92aWRlU3BlZWQsIGRhdGEuc3BlZWQpOwotCiAgICAgVmVjdG9y
PFJlZlB0cjxXZWJQYWdlPj4gd2ViUGFnZUNvcHk7CiAgICAgY29weVRvVmVjdG9yKG1fcGFnZVNl
dCwgd2ViUGFnZUNvcHkpOwogICAgIGZvciAoYXV0byYgcGFnZSA6IHdlYlBhZ2VDb3B5KSB7CiAg
ICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICAgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24u
Z2V0KCkpOworICAgICAgICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNv
cmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24pOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CiAjZW5kaWYg
Ly8gRU5BQkxFKEdFT0xPQ0FUSU9OKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXgg
ZDFmM2NiNzM2MDAzMWNkZTlkMjRmYmM0NWYyOWY1MGNjNzkwNmU2Yi4uNGY0NDdhZjBhMzc0NjU0
MzhmNWYyOWIxNzhmMDdiNjYyMzc3M2U0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAt
MzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHZW9sb2NhdGlvbjsK
K2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjIsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsgcmV0
dXJuICFtX3BhZ2VTZXQuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmlzRW1wdHkoKTsgfQog
Ci0gICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpEYXRhJik7CisgICAgdm9pZCBkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uJik7CiAgICAgdm9pZCBkaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZvaWQg
cmVzZXRQZXJtaXNzaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggMjcxNTRmNWEzNmVlMzAzMjFiYTVlMWQ5ZTI3MmU4NDBjYWM3NzFlOS4uOTdk
YTI4NTZiZDI5YTZlMDVjZjc3MGY1Y2MyOWU3NzY5YjZkNDI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkdlb2xvY2F0aW9uTWFuYWdlciB7Ci0gICAgRGlkQ2hhbmdl
UG9zaXRpb24oV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhIHBvc2l0aW9uKTsK
KyAgICBEaWRDaGFuZ2VQb3NpdGlvbihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIHBvc2l0
aW9uKTsKICAgICBEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihTdHJpbmcgZXJyb3JNZXNzYWdl
KTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVzZXRQZXJtaXNzaW9ucygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggM2JjOGRmY2IxNDA2Yjc5ZTg3NjA0ZjUwOTM1MzY4
YTU5NDJkNDdjZS4uODkxMzEzY2U5ZmFhNzYzYzUxNTY5Y2NlOWZjYjk4NWE0YjQzMjg0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02NCwxMCArNjQsMTAgQEAgdm9pZCBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlcj4oKS0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5Rm9yUGFnZShtX3BhZ2UsIGVuYWJsZWQpOwog
fQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0
aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViR2Vv
bG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMTk3NzcxMTEzYTY5ZDU0N2I2Mzkx
NGIzMDM3MzI5MmY0NzFjYWYwMi4uY2ZlOGQ0MjQ4NTlkOGYxMTcwZmE4OWU3Njk0MDYwYjc4MjBk
MzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RW5h
YmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOwogCi0gICAgV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBsYXN0UG9zaXRpb24oKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dl
Ykdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDgwOTVk
NTNjNzgyYjQxOTE2YjUzZTBmOGQ2YjEzMjFmZGQzMGFiMDUuLjA0OTBmY2ZiMWRiMDRiZjZiMDI0
ZThlNDA5Njc1NzBmN2M1YWMxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5o
CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiAtICh2b2lkKWdl
b2xvY2F0aW9uQXV0aG9yaXphdGlvbkdyYW50ZWQ7CiAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkRlbmllZDsKIAotLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24qKXBvc2l0aW9uOworLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJilwb3NpdGlvbjsKIC0gKHZvaWQpZXJyb3JPY2N1cnJl
ZDooTlNTdHJpbmcgKillcnJvck1lc3NhZ2U7CiAtICh2b2lkKXJlc2V0R2VvbG9jYXRpb247CiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0
aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KaW5kZXggYWVkOTU2MjFjNzg1
MWQzNTcxNDIwYzBjNjI1MTdmYWIyNTA1MzYwNi4uZDlmMDMzYTdkNzIwYTE0ZTExMzIxNjcyMGY2
ZjBiNjM4NGVhMTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9X
ZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQpAQCAt
MTY1LDI5ICsxNjUsNyBAQCAtICh2b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFn
ZXIgKiltYW5hZ2VyIGRpZENoYW5nZUF1dGhvcml6YXRpb25TdGF0dQogCiAtICh2b2lkKXNlbmRM
b2NhdGlvbjooQ0xMb2NhdGlvbiAqKW5ld0xvY2F0aW9uCiB7Ci0gICAgLy8gTm9ybWFsaXplLgot
ICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlID0gdHJ1ZTsKLSAgICBib29sIGNhblByb3ZpZGVB
bHRpdHVkZUFjY3VyYWN5ID0gdHJ1ZTsKLSAgICBkb3VibGUgYWx0aXR1ZGUgPSBuZXdMb2NhdGlv
bi5hbHRpdHVkZTsKLSAgICBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSA9IG5ld0xvY2F0aW9uLnZl
cnRpY2FsQWNjdXJhY3k7Ci0gICAgaWYgKGFsdGl0dWRlQWNjdXJhY3kgPCAwLjApIHsKLSAgICAg
ICAgY2FuUHJvdmlkZUFsdGl0dWRlID0gZmFsc2U7Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVk
ZUFjY3VyYWN5ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlU3BlZWQgPSB0
cnVlOwotICAgIGRvdWJsZSBzcGVlZCA9IG5ld0xvY2F0aW9uLnNwZWVkOwotICAgIGlmIChzcGVl
ZCA8IDAuMCkKLSAgICAgICAgY2FuUHJvdmlkZVNwZWVkID0gZmFsc2U7Ci0KLSAgICBib29sIGNh
blByb3ZpZGVIZWFkaW5nID0gdHJ1ZTsKLSAgICBkb3VibGUgaGVhZGluZyA9IG5ld0xvY2F0aW9u
LmNvdXJzZTsKLSAgICBpZiAoaGVhZGluZyA8IDAuMCkKLSAgICAgICAgY2FuUHJvdmlkZUhlYWRp
bmcgPSBmYWxzZTsKLQotICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBbbmV3TG9jYXRpb24udGltZXN0
YW1wIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF07Ci0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+IGdlb2xvY2F0aW9uUG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGlt
ZXN0YW1wLCBuZXdMb2NhdGlvbi5jb29yZGluYXRlLmxhdGl0dWRlLCBuZXdMb2NhdGlvbi5jb29y
ZGluYXRlLmxvbmdpdHVkZSwgbmV3TG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92
aWRlQWx0aXR1ZGUsIGFsdGl0dWRlLCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1
ZGVBY2N1cmFjeSwgY2FuUHJvdmlkZUhlYWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwg
c3BlZWQpOwotICAgIFtfcG9zaXRpb25MaXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6Z2VvbG9jYXRp
b25Qb3NpdGlvbi5nZXQoKV07CisgICAgW19wb3NpdGlvbkxpc3RlbmVyIHBvc2l0aW9uQ2hhbmdl
ZDpHZW9sb2NhdGlvblBvc2l0aW9uIHsgbmV3TG9jYXRpb24gfV07CiB9CiAKIC0gKHZvaWQpbG9j
YXRpb25NYW5hZ2VyOihDTExvY2F0aW9uTWFuYWdlciAqKW1hbmFnZXIgZGlkVXBkYXRlTG9jYXRp
b25zOihOU0FycmF5ICopbG9jYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KaW5kZXggMGQ1M2FmMDM4
NWJjNDE4M2FmODY4NmI2YzM3NDNkYjVmYzVjMTQ4YS4uMWQyODBjMWFjZDU5MWU3YzFhZWM2ODlh
YjdhMjM0NDY4M2FiYjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAtNDQsNyArNDQsNyBAQAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbiAoSW50ZXJuYWwpCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0
cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOworLSAoaWQp
aW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdl
b2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIC8vIENvcmVMb2NhdGlvbiBydW5zIGluIHRoZSBt
YWluIHRocmVhZC4gV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUyBsaXZlcyBvbiB0aGUgV2ViVGhy
ZWFkLgpAQCAtMzYxLDkgKzM2MSw5IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9u
RGVuaWVkCiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uKilwb3NpdGlvbgorLSAodm9pZClwb3NpdGlvbkNoYW5nZWQ6KFdl
YkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24mJilwb3NpdGlvbgogewotICAgIFJldGFpblB0cjxX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3ZWJQb3NpdGlvbiA9IGFkb3B0TlMoW1tXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246cG9zaXRpb25d
KTsKKyAgICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gd2ViUG9zaXRpb24gPSBh
ZG9wdE5TKFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlv
blBvc2l0aW9uOldURk1vdmUocG9zaXRpb24pXSk7CiAgICAgV2ViVGhyZWFkUnVuKF57CiAgICAg
ICAgIFtfcHJvdmlkZXIgcG9zaXRpb25DaGFuZ2VkOndlYlBvc2l0aW9uLmdldCgpXTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMzNjAyNDkxMGVjMTUxODgyYjY0YTg2
Yjk4OTA1MzBjZTkyN2VmYzguLjIwYzQzNDMxMDc4N2FiYWRiMDIyNjAzOTViNzkyMDg3NjM3OGI0
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGUgeyB9CiAjZW5k
aWYKIAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4g
bGFzdFBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdl
YkNvcmU6Okdlb2xvY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQubW0KaW5kZXggMGNiMmJlOTkxZTE3NDg5OTEyNDllZGQxYmM5ZmVlZjU1YWJm
M2E4MC4uMmVmM2RiNjIzOWMxOTQ0NWEwNzUwODE1MzBlODNiY2E0MDI3MWJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkdlb2xvY2F0
aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2VvbG9jYXRpb24pCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiog
V2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xv
Y2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewog
ICAgIHJldHVybiBjb3JlKFtbbV93ZWJWaWV3IF9nZW9sb2NhdGlvblByb3ZpZGVyXSBsYXN0UG9z
aXRpb25dKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA0NTZkNGJhOGJkZjBlNzE2NDQ5MDc1
MzIxZjllZGQ0ZjA4NDVkZmEwLi4zNzQ1OWM2Yjg1ODQ3YzYxMzVhYTg2MWI1MTRhMTBkNjRhODZh
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCkBAIC0yNiwyNCArMjYsMjQgQEAKICNpbXBvcnQgIldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uaCIKIAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bkludGVybmFsLmgiCi0jaW1wb3J0IDx3dGYvUmVmUHRyLmg+Ci0KICNpbXBvcnQgPFdlYkNvcmUv
R2VvbG9jYXRpb25Qb3NpdGlvbi5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CisjaW1wb3J0
IDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNl
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbCA6IE5TT2JqZWN0CiB7CiBAcHVibGljCi0g
ICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IF9wb3NpdGlvbjsKKyAgICBHZW9sb2NhdGlv
blBvc2l0aW9uIF9wb3NpdGlvbjsKIH0KIAotLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdlb2xvY2F0aW9uUG9z
aXRpb247CistIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2NhdGlv
blBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwKIAotLSAoaWQpaW5pdFdpdGhDb3Jl
R2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+JiYpY29yZUdl
b2xvY2F0aW9uUG9zaXRpb24KKy0gKGlkKWluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246
KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgogewogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtNTYsOSArNTYsMTEgQEAgQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbgogCi1HZW9sb2NhdGlv
blBvc2l0aW9uKiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQorc3RkOjpv
cHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24g
KnBvc2l0aW9uKQogewotICAgIHJldHVybiBwb3NpdGlvbiA/IHBvc2l0aW9uLT5faW50ZXJuYWwt
Pl9wb3NpdGlvbi5nZXQoKSA6IDA7CisgICAgaWYgKCFwb3NpdGlvbikKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcG9zaXRpb24tPl9pbnRlcm5hbC0+X3Bvc2l0aW9u
OwogfQogCiAtIChpZClpbml0V2l0aFRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCBsYXRpdHVk
ZTooZG91YmxlKWxhdGl0dWRlIGxvbmdpdHVkZTooZG91YmxlKWxvbmdpdHVkZSBhY2N1cmFjeToo
ZG91YmxlKWFjY3VyYWN5CkBAIC02NiwxMSArNjgsMTEgQEAgLSAoaWQpaW5pdFdpdGhUaW1lc3Rh
bXA6KGRvdWJsZSl0aW1lc3RhbXAgbGF0aXR1ZGU6KGRvdWJsZSlsYXRpdHVkZSBsb25naXR1ZGU6
KGQKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBfaW50ZXJuYWwgPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5h
bCBhbGxvY10gaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSldOwor
ICAgIF9pbnRlcm5hbCA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsIGFsbG9jXSBp
bml0V2l0aENvcmVHZW9sb2NhdGlvblBvc2l0aW9uOkdlb2xvY2F0aW9uUG9zaXRpb24geyB0aW1l
c3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5IH1dOwogICAgIHJldHVybiBzZWxm
OwogfQogCi0tIChpZClpbml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCistIChpZClpbml0V2l0aEdl
b2xvY2F0aW9uUG9zaXRpb246KEdlb2xvY2F0aW9uUG9zaXRpb24mJiljb3JlR2VvbG9jYXRpb25Q
b3NpdGlvbgogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKaW5kZXggZjU0ZTY2YjgxZTE5OWI0NDQwOTU4MDZk
MDRiMTEwM2YyNmRhNTA5Mi4uMjZjMzJiMTI2ZGYyNDMyNWZkY2U5OWI3Yjg2YThjNzU5ODJjZDdm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2Nh
dGlvblBvc2l0aW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCkBAIC0yNCwxMCArMjQsMTEgQEAK
ICAqLwogCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCisjaW1wb3J0IDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb247CiB9CiAKLVdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGNvcmUoV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiAqKTsKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Q
b3NpdGlvbj4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHAKaW5kZXggYmEyODZjOGQ5NzU5NzI4OGRiOGVkMTg1YjIwOGZhOTc4MzAw
ZDEwZS4uYmEzZjM0MWVkMWVkNzFmZTlhNTBmM2ZhNDVhZjQ1OTFmMzk0Mzc1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsMTQgKzY0LDE0IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnN0b3BVcGRhdGluZygpCiAgICAgcHJvdmlkZXItPnVucmVnaXN0ZXJXZWJW
aWV3KG1fd2ViVmlldy5nZXQoKSk7CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBv
c2l0aW9uPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICBDT01Q
dHI8SVdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93
ZWJWaWV3LT5nZW9sb2NhdGlvblByb3ZpZGVyKCZwcm92aWRlcikpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBDT01QdHI8SVdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IHBvc2l0aW9uOwogICAgIGlmIChGQUlMRUQocHJvdmlkZXItPmxhc3RQb3Np
dGlvbigmcG9zaXRpb24pKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGNvcmUocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCA3YjFiZjQ4N2FhYzcwMzM0ZTM1MTVkNzM0MWUyNjYwYTE3
ZGUwMTZiLi5mNjJmNWMwZGUxM2FmODMzZTZjYjg2N2Y3MzJlZjU1OTVmYjk4NjU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c3RhcnRVcGRhdGluZygpIGZpbmFsOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgZmluYWwgeyB9Ci0gICAgV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgZmluYWw7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBsYXN0UG9zaXRpb24oKSBmaW5h
bDsKIAogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDRkNjMxODU2MTEwNDVkMDNmNjNjNzYwODk1NGM5OTU2
YzYzZmE1ZmUuLjBkNmI3ODRlMDc1MDMxMDhjMDM4NjcwNThlMTZiMzk1Y2JmOGZlZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
CkBAIC04MSwxOCArODEsMTggQEAgVUxPTkcgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6UmVsZWFz
ZSgpCiAKIEhSRVNVTFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6aW5pdFdpdGhUaW1lc3RhbXAo
ZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3kpCiB7Ci0gICAgbV9wb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb246OmNy
ZWF0ZSh0aW1lc3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKKyAgICBtX3Bv
c2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdp
dHVkZSwgYWNjdXJhY3kgfTsKICAgICByZXR1cm4gU19PSzsKIH0KIAotR2VvbG9jYXRpb25Qb3Np
dGlvbiogY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCitzdGQ6Om9wdGlv
bmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBv
c2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24+IHdlYkdlb2xvY2F0aW9uUG9zaXRpb24oUXVlcnksIHBvc2l0aW9uKTsKICAgICBpZiAoIXdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHdlYkdlb2xvY2F0aW9uUG9zaXRpb24tPmltcGwo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaAppbmRleCA3OThhYjgwODdkOWM3ZWYwZjhjZDExYWY2Mzg4YWYzOThlZjg5MmM3Li4wZTA2
N2NiOTFiNWI3ZWUxOGZlYmMzODhlZGU2NWFhMjllYTUwZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC00OCwxMyArNDgsMTMg
QEAgcHVibGljOgogICAgIC8vIElXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRXaXRoVGltZXN0YW1wKGRvdWJsZSB0aW1lc3Rh
bXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsK
IAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGltcGwoKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uLmdldCgpOyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uPiYgaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0K
IAogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwotICAgIFJlZlB0cjxXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9wb3NpdGlvbjsKIH07CiAKLVdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24qIGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qKTsKK3N0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShJV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiopOwogCiAjZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDVhZGJl
YzUzM2ZlOTIzMzIxMzFmZGYwOTBlMzI2NjY3M2JhZTg0Ny4uZTAyMjFlNWJhNjMzOTM5NGQ3MzAy
N2U0YjA3NTNlMWQ2YWRhOTIzMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24pOgorCiAyMDE3LTEwLTEwICBKb2FubWFyaWUgRGlnZ3MgIDxq
ZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDogW0FUS10gQVJJQSBmb3JtIHJvbGUgc2hv
dWxkIGJlIG1hcHBlZCB0byBBVEtfUk9MRV9MQU5ETUFSSzsgbm90IEFUS19ST0xFX0ZPUk0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggYTYxMTBkOTE2NjFj
YjVlNmJlOGM0NGFhNzM3ZDU3MjhlMDdjY2E1Yi4uNjMzZTQ3NzgxOWY2YmM2NjMyZWU5NmU0NzEx
NmNlOTliOGMzZTAxMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KQEAgLTEyNSw3ICsxMjUsNyBAQCBAZW5kCiAjZW5kaWYKIAogQGludGVyZmFjZSBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIChJbnRlcm5hbCkKLS0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3Np
dGlvbjooUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+KWNvcmVHZW9sb2NhdGlv
blBvc2l0aW9uOworLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIFRl
c3RSdW5uZXI6On5UZXN0UnVubmVyKCkKQEAgLTQ0OSw4ICs0NDksMTYgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGQKICAgICAgICAgLy8gVGVzdCB0aGUgZXhwb3NlZCBBUEkuCiAgICAgICAgIHBv
c2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFt
cDpjdXJyZW50VGltZSgpIGxhdGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNj
dXJhY3k6YWNjdXJhY3ldOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gY29yZUdlb2xvY2F0
aW9uUG9zaXRpb24gPSBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoY3VycmVu
dFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUs
IGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHBy
b3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlkZXNTcGVlZCwgc3BlZWQpOwotICAgICAgICBw
b3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2Nh
dGlvblBvc2l0aW9uOihXVEZNb3ZlKGNvcmVHZW9sb2NhdGlvblBvc2l0aW9uKSldOworICAgICAg
ICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uIGdlb2xvY2F0aW9uUG9zaXRpb24geyBjdXJy
ZW50VGltZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgICAgICBpZiAo
cHJvdmlkZXNBbHRpdHVkZSkKKyAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uYWx0aXR1
ZGUgPSBhbHRpdHVkZTsKKyAgICAgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAg
ICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRl
QWNjdXJhY3k7CisgICAgICAgIGlmIChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgICAgICBnZW9s
b2NhdGlvblBvc2l0aW9uLmhlYWRpbmcgPSBoZWFkaW5nOworICAgICAgICBpZiAocHJvdmlkZXNT
cGVlZCkKKyAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKyAg
ICAgICAgcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRo
R2VvbG9jYXRpb25Qb3NpdGlvbjooV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSldOwogICAg
IH0KICAgICBbW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0UG9zaXRpb246cG9z
aXRpb25dOwogICAgIFtwb3NpdGlvbiByZWxlYXNlXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323419</attachid>
            <date>2017-10-11 08:47:42 -0700</date>
            <delta_ts>2017-10-11 09:37:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171011084741.patch</filename>
            <type>text/plain</type>
            <size>66730</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uYjhjZGJiYzY4M2JmYWZlZDhhNjgzNzg0MThmNjMx
NjQ4OTYyNmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBN
b2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZToKKyAgICAgICAgLSBVc2Ugc3RkOjpvcHRpb25hbDw+
IGluc3RlYWQgb2Ygc2VwYXJhdGUgYm9vbGVhbiBtZW1iZXJzCisgICAgICAgIC0gTWFrZSBHZW9s
b2NhdGlvblBvc2l0aW9uIGEgc2ltcGxlIHN0cnVjdCB0aGF0IGNhbiBiZSBwYXNzZWQgdmlhIElQ
QworICAgICAgICAtIFJlcGxhY2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSB3aXRoIEdl
b2xvY2F0aW9uUG9zaXRpb24KKyAgICAgICAgLSBNb3ZlIGxvZ2ljIHRvIGNvbnN0cnVjdCBhIEdl
b2xvY2F0aW9uUG9zaXRpb24gZnJvbSBhIENMTG9jYXRpb24gb24gaU9TCisgICAgICAgICAgaW4g
b25lIHBsYWNlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjpDb29yZGluYXRlcyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGlu
YXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVzOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlczo6bG9uZ2l0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjphbHRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmhlYWRpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OnNwZWVkIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUdlb3Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Omxh
c3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246Okdlb2xvY2F0
aW9uUG9zaXRpb24pOgorICAgICAgICBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBvbmx5IG5l
ZWRlZCBieSBvdXIgSVBDIGRlY29kaW5nIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9z
L0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmg6CisKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCByZWFsbHkgZml4IHRoZSBidWls
ZCB3aXRoIGNlcnRhaW4gU0RLcy4KIAogICAgICAgICBGb2xsb3ctdXAgdG8gcjIyMzE1NCwgd2hp
Y2ggZml4ZWQgdGhlIHdyb25nIGxhbWJkYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjMyNjZkZmNiYjdmMjBiNTk5
Y2NmNGZkYjgwYjYwMTBlMmVhMjBhOC4uNjFhNjUwZjZhNmQxMWRlNzJmMDBlZjY2OTM0NTMwNTYz
MzM0NWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNy0xMC0xMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlvbiBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgx
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
UG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjp0aW1lc3RhbXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmxvbmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6
CisgICAgICAgIChXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50Ojps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEz
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTky
MDllOTNiOTEwYjJiOTZmNTllLi5iNWExYzgyOTAyNTAzZDUzOTYxZjhjZDIwODdhMmQ0MDVjNzRl
ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5p
emUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg6Cisg
ICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tOgorICAg
ICAgICAoLVtXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIHNlbmRMb2NhdGlvbjpd
KToKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAg
ICgtW19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBwb3NpdGlvbkNoYW5nZWQ6
XSk6CisKIDIwMTctMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwMTQwNWI0YmNmOWQ3YjVkYTBhZjkwYjgzMmZjYjIzMzBj
NzU3ZjEuLmRmODc3Y2QwOWRkMmM2NGQ1OWEzODc4NTVkNmNjYzMyYWUxOTA5M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMC0xMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlv
biBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgaW5p
dFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAg
ICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGluaXRXaXRoVGltZXN0YW1wOmxhdGl0dWRlOmxv
bmdpdHVkZTphY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBp
bml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDoKKwogMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFs
dWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1h
cC52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA4NDI4ODVhZmE3NmYy
NjFkZTdhNDk0ZDQ3NDBkZjhkZjEwMjExNGVmLi5mNDRkOTU0ZjgyYzc5ZjI4NzZlODdkYWJlZDVk
NzkzZmQxMDY0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmluaXRXaXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Omlt
cGwgY29uc3QpOgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpj
b29raWVzRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0Nvb3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIz
NWQxYjllNjcuLjljZWJkZmMwZjY1YThmYjgxMDI0M2UxMjdlZDc5Njc1ODQyZjUwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CkBAIC0yOCwzMiArMjgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRlKCkgY29uc3QKK0Nvb3JkaW5hdGVzOjpD
b29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYgcG9zaXRpb24pCisgICAgOiBtX3Bvc2l0
aW9uKFdURk1vdmUocG9zaXRpb24pKQogewotICAgIGlmICghbV9jYW5Qcm92aWRlQWx0aXR1ZGUp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGU7Cisg
ICAgQVNTRVJUKG1fcG9zaXRpb24uaXNWYWxpZCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FuUHJvdmlk
ZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1faGVh
ZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpzcGVlZCgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29v
cmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0
ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVhMDYzODMyLi4yNzYz
NzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5hdGVzPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBh
bHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJv
b2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENv
b3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRl
LCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBw
cm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7IH0KKyAgICBz
dGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbiYmIHBvc2l0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZXMoV1RG
TW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0ZXM+IGlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZXM6OmNyZWF0ZSht
X2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUsIG1fYWx0aXR1ZGUs
IG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1fYWx0aXR1ZGVBY2N1
cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblByb3ZpZGVTcGVlZCwg
bV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRlKCBHZW9sb2NhdGlv
blBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFs
dGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9h
Y2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkg
Y29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25zdDsKLSAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdp
dHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRp
dHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24u
YWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5oZWFk
aW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlcyhkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJs
ZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBt
X2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKLSAg
ICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJh
Y3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpCi0gICAg
ICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChzcGVlZCkKLSAgICAg
ICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQotICAg
ICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNp
dCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAgZG91YmxlIG1fbGF0
aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwot
ICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAgICAKLSAgICBib29s
IG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3Zp
ZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247CiB9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFiY2U0YzAwNWFjMWQ2
MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAzZWY3OTA0NTdlZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyIGZhaWxlZFRvU3Rh
cnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdlb2xvY2F0CiBzdGF0
aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtdID0gIkdlb2xvY2F0
aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwogc3RhdGljIGNvbnN0
IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNzYWdlW10gPSAiT3Jp
Z2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRpb24gc2VydmljZSI7
CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0aW9uKEdlb2xvY2F0
aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3NpdGlvbj4gY3JlYXRl
R2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9u
KQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBvc2l0aW9uLT5sYXRp
dHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1
ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlvbi0+YWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5hbHRp
dHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBw
b3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9u
LT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29v
cmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3Rh
bXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0U2Vjb25kc1RvRE9N
VGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBHZW9wb3NpdGlvbjo6
Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52YWx1ZSgpKSksIHRp
bWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3JlYXRlUG9zaXRpb25F
cnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMsNyBAQCBHZW9wb3Np
dGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRlR2VvcG9zaXRpb24o
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRpb24oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5MzkwOGMzYWYwLi5m
NzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb247CkBAIC00Miw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdlYktpdCB0byByZWZs
ZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAgICAvLyBpcyBwdWJs
aXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7
Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7Cisg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlv
bigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlv
biYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRjZDA1NDY5N2Q3ZGIx
YWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4Yzk2YTY5NzBjMzE2
YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2
b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0
KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9u
Q2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlv
blBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsK
ICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOwpAQCAtMTIwLDEw
ICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoR2Vv
bG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRFcnJvcihlcnJvcik7
CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6bGFzdFBv
c2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25D
b250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQb3NpdGlvbi5nZXQo
KSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAgIGlmIChtX2xhc3RQ
b3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVlKCk7CiAKICAgICBy
ZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAppbmRl
eCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5iNjVkNjBkNTQxZWM1
Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTUz
LDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9z
aXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Q
b3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFj
dGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJy
aWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAK
ICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OwogICAg
IC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFu
ZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNjOWVkZTJhOGE2NzBk
MzA1NzdiMWRiMDM1ZGJjZDYuLjgwNTM0MTY0M2I1ZWYyYjE4NGJiYmIxOTBmMWQyNWRkOGU2ZTk1
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4OSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9T
KQorT0JKQ19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0
aW9uUG9zaXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAs
IGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1l
c3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xv
Y2F0aW9uUG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9u
UG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1
ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHBy
b3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1
ZGUobGF0aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBh
Y2N1cmFjeShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdl
b2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFj
eSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
YWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVk
LCBzcGVlZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAg
ZG91YmxlIGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJs
ZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBh
Y2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1
ZGUoKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUg
aGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogCi0gICAgYm9vbCBjYW5Qcm92
aWRlQWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVkZTsgfQotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NhblBy
b3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBib29sIGNhblByb3ZpZGVT
cGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZVNwZWVkOyB9CisgICAgZG91YmxlIGxh
dGl0dWRlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OworICAg
IGRvdWJsZSBsb25naXR1ZGUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpIH07CisgICAgZG91YmxlIGFjY3VyYWN5IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OwogCi1wcml2YXRlOgotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91
YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3kpCi0gICAgICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1f
bGF0aXR1ZGUobGF0aXR1ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAg
ICAgICAsIG1fYWNjdXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZSgwKQotICAg
ICAgICAsIG1fYWx0aXR1ZGVBY2N1cmFjeSgwKQotICAgICAgICAsIG1faGVhZGluZygwKQotICAg
ICAgICAsIG1fc3BlZWQoMCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShmYWxzZSkK
LSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KGZhbHNlKQotICAgICAgICAs
IG1fY2FuUHJvdmlkZUhlYWRpbmcoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
ZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGhlYWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVk
OwogCi0gICAgR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0Fs
dGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFk
aW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBtX3RpbWVz
dGFtcCh0aW1lc3RhbXApCi0gICAgICAgICwgbV9sYXRpdHVkZShsYXRpdHVkZSkKLSAgICAgICAg
LCBtX2xvbmdpdHVkZShsb25naXR1ZGUpCi0gICAgICAgICwgbV9hY2N1cmFjeShhY2N1cmFjeSkK
LSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWx0aXR1ZGVBY2N1
cmFjeShhbHRpdHVkZUFjY3VyYWN5KQotICAgICAgICAsIG1faGVhZGluZyhoZWFkaW5nKQotICAg
ICAgICAsIG1fc3BlZWQoc3BlZWQpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUocHJv
dmlkZXNBbHRpdHVkZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KHBy
b3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKHBy
b3ZpZGVzSGVhZGluZykKLSAgICAgICAgLCBtX2NhblByb3ZpZGVTcGVlZChwcm92aWRlc1NwZWVk
KQotICAgIHsKLSAgICB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBHZW9sb2NhdGlv
blBvc2l0aW9uJik7Cit9OwogCi0gICAgZG91YmxlIG1fdGltZXN0YW1wOwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB0aW1lc3RhbXA7CisgICAgZW5jb2RlciA8
PCBsYXRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGxvbmdpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFj
Y3VyYWN5OworICAgIGVuY29kZXIgPDwgYWx0aXR1ZGU7CisgICAgZW5jb2RlciA8PCBhbHRpdHVk
ZUFjY3VyYWN5OworICAgIGVuY29kZXIgPDwgaGVhZGluZzsKKyAgICBlbmNvZGVyIDw8IHNwZWVk
OworfQogCi0gICAgZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwot
ICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwotICAgIGRvdWJs
ZSBtX2FsdGl0dWRlQWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUg
bV9zcGVlZDsKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEdlb2xvY2F0aW9uUG9zaXRp
b246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBHZW9sb2NhdGlvblBvc2l0aW9uJiBwb3NpdGlv
bikKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLnRpbWVzdGFtcCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmxhdGl0
dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9z
aXRpb24ubG9uZ2l0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocG9zaXRpb24uYWNjdXJhY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5hbHRpdHVkZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5oZWFkaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocG9zaXRpb24uc3BlZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFj
eTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVT
cGVlZDsKLX07CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIEdlb2xvY2F0aW9u
UG9zaXRpb246OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiAhc3RkOjppc25hbih0aW1l
c3RhbXApICYmICFzdGQ6OmlzbmFuKGxhdGl0dWRlKSAmJiAhc3RkOjppc25hbihsb25naXR1ZGUp
ICYmICFzdGQ6OmlzbmFuKGFjY3VyYWN5KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9j
YXRpb25Qb3NpdGlvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
aW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhh
ODQzNDJiMjQ3NDYyMTE3YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgi
CisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9u
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbihDTExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2Nh
dGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9j
YXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29y
ZGluYXRlLmxvbmdpdHVkZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1
cmFjeSkKK3sKKyAgICBpZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAg
ICAgICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1
cmFjeSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlv
bi5zcGVlZCA+PSAwLjApCisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYg
KGxvY2F0aW9uLmNvdXJzZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vy
c2U7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBl
ZDI2MmFjZDlkYS4uZDM3NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzU1MCw2ICszNTUwLDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdu
b3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dn
aW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzNzYwOUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1
NENDMTMwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFD
NTIyRjAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VF
dmVudEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENF
MUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4
MzdBODAxMzFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEy
NzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAx
REMzRjU1MDAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMg
LyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFF
QzRBIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICov
OyB9OwpAQCAtMTE4NzMsNiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQg
LyogRXJyb3JDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFcnJvckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVG
OTMxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xv
Y2F0aW9uUG9zaXRpb25JT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9s
b2NhdGlvblBvc2l0aW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgz
N0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9
IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAv
KiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM3REZCMzQxRUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRo
ID0gYmVhY29uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0Mx
RjhEQjY3RDAwMjE4RUEwIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25JT1MubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdy
b3VwIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhB
MTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAw
Njc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3
NDZBRjExMTRGNERERTYwMDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFG
MTExNEY0RERFNjAwM0U3QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0
RERFNjAwM0U3QTcwIC8qIENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcg
QEAKIAkJCQlDRDRCRTUyQTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERC
NjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTBGQjYyNTJFMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1
cmVFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEy
MjU4MWFhZjIxZTU3MDMyZGIyY2JiZGRiMjc0ZS4uMThkYWZkOWU3ZmNiZDRiYjMxNWI5ZTQ3M2Q3
ZTc3ZDBlZGE4ODU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNv
bnRyb2xsZXIpCiAgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKIH0KIAotdm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKEdl
b2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IFdU
Rk1vdmUocG9zaXRpb24pOwogICAgIGNsZWFyRXJyb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2EKIHsKICAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKICAgICBtX2Vy
cm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IG51bGxwdHI7
CisgICAgbV9sYXN0UG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgYXN5bmNVcGRhdGVDb250
cm9sbGVyKCk7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQoKQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6cmVzZXQoKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gbnVsbHB0cjsKKyAgICBtX2xhc3RQ
b3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBjbGVhckVycm9yKCk7CiAgICAgbV9wZXJtaXNz
aW9uU3RhdGUgPSBQZXJtaXNzaW9uU3RhdGVVbnNldDsKIH0KQEAgLTE1Niw5ICsxNTYsOSBAQCB2
b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQzOAog
fQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24uZ2V0
KCk7CisgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6YXN5bmNVcGRhdGVDb250cm9sbGVyKCkKQEAgLTE3Miw5ICsxNzIsOSBAQCB2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoKQogewogICAgIEFT
U0VSVChtX2NvbnRyb2xsZXIpOwogCi0gICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7Cisg
ICAgaWYgKG1fbGFzdFBvc2l0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9oYXNFcnJvcik7Ci0g
ICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFzdFBvc2l0aW9uLmdldCgp
KTsKKyAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQoKm1fbGFzdFBvc2l0aW9u
KTsKICAgICB9IGVsc2UgaWYgKG1faGFzRXJyb3IpIHsKICAgICAgICAgYXV0byBnZW9sb2NhdGlv
RXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRp
b25VbmF2YWlsYWJsZSwgbV9lcnJvck1lc3NhZ2UpOwogICAgICAgICBtX2NvbnRyb2xsZXItPmVy
cm9yT2NjdXJyZWQoZ2VvbG9jYXRpb0Vycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDg1ZmMwMzgw
NjE0ZjRjZGMzMjRiYWY1ZmExYTY1MjUxOTRhMzY2MGIuLmZjMWI1MWQ3ZjcxMGZjMzg2MjFlZGNj
NzZlNjA0ZmM3NmRhYTEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtMzIsNiArMzIsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDAsNyArNDEsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBHZW9sb2Nh
dGlvblBvc2l0aW9uOwogCiAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIGluIFdlYkNvcmUu
IEl0IHNob3VsZCBiZSBtb3ZlZCB0byBXZWJLaXQuCiAvLyBQcm92aWRlcyBhIG1vY2sgb2JqZWN0
IGZvciB0aGUgZ2VvbG9jYXRpb24gY2xpZW50LgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgc2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRy
b2xsZXIqKTsKIAotICAgIHZvaWQgc2V0UG9zaXRpb24oUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+JiYpOworICAgIHZvaWQgc2V0UG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiYmKTsKICAg
ICB2b2lkIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSk7CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51
bWJlck9mUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShi
b29sKSBvdmVycmlkZTsKLSAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3Np
dGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGU7CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
RXJyb3IoKTsKIAogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAg
IFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwogICAgIGJvb2wgbV9o
YXNFcnJvcjsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgVGltZXIgbV9jb250cm9s
bGVyVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCmluZGV4IGJiZjlmYTU0Y2EzYzgzNjNkZGU1NTBiMzhjYjE3ZmY4OGFmYTlkZjMuLjNm
MTU1OGI3NTJiZWY4YzkyYjQxNjk2ZmQ0NmEwYzA4MWI1YmJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zMCwzNCArMzAsMTUg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdl
b2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0
dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBw
cm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi17Ci0gICAgbV9kYXRhLnRpbWVzdGFtcCA9IHRp
bWVzdGFtcDsKLSAgICBtX2RhdGEubGF0aXR1ZGUgPSBsYXRpdHVkZTsKLSAgICBtX2RhdGEubG9u
Z2l0dWRlID0gbG9uZ2l0dWRlOwotICAgIG1fZGF0YS5hY2N1cmFjeSA9IGFjY3VyYWN5OwotICAg
IG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGUgPSBwcm92aWRlc0FsdGl0dWRlOwotICAgIG1fZGF0
YS5hbHRpdHVkZSA9IGFsdGl0dWRlOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeSA9IHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2RhdGEuYWx0aXR1ZGVBY2N1
cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVIZWFkaW5nID0g
cHJvdmlkZXNIZWFkaW5nOwotICAgIG1fZGF0YS5oZWFkaW5nID0gaGVhZGluZzsKLSAgICBtX2Rh
dGEuY2FuUHJvdmlkZVNwZWVkID0gcHJvdmlkZXNTcGVlZDsKLSAgICBtX2RhdGEuc3BlZWQgPSBz
cGVlZDsKLX0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCitSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBn
ZW9sb2NhdGlvblBvc2l0aW9uKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24oV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkpOwogfQogCi12b2lk
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgSVBDOjpTaW1wbGVBcmd1bWVudENvZGVyPFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OkRhdGE+OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwotfQotCi1ib29sIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERh
dGEmIGRhdGEpCitXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bigpCiB7Ci0gICAgcmV0dXJuIElQQzo6U2ltcGxlQXJndW1lbnRDb2RlcjxXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpEYXRhPjo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaAppbmRleCAxZGQ3OTg5YmNjMDNkNDAwMDBkY2Q5Y2MyNjk0Y2JhYmNmZmU0NjAxLi40MThh
YzM2MzE0N2U0NDA5ZTQyZGZmYzFhZDgxYjE0YjFjNTI4ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM4LDU2ICszOSwyOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IHsKIHB1Ymxp
YzoKLSAgICBzdHJ1Y3QgRGF0YSB7Ci0gICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgRGF0YSYp
OwotCi0gICAgICAgIGRvdWJsZSB0aW1lc3RhbXA7Ci0gICAgICAgIGRvdWJsZSBsYXRpdHVkZTsK
LSAgICAgICAgZG91YmxlIGxvbmdpdHVkZTsKLSAgICAgICAgZG91YmxlIGFjY3VyYWN5OwotCi0g
ICAgICAgIGRvdWJsZSBhbHRpdHVkZTsKLSAgICAgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7
Ci0gICAgICAgIGRvdWJsZSBoZWFkaW5nOwotICAgICAgICBkb3VibGUgc3BlZWQ7Ci0KLSAgICAg
ICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGU7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0
dWRlQWNjdXJhY3k7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgICAgIGJv
b2wgY2FuUHJvdmlkZVNwZWVkOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBk
b3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0
aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29s
IHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9u
Z2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0
aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5n
LCBwcm92aWRlc1NwZWVkLCBzcGVlZCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24+IGNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwog
CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpOwogCi0gICAgZG91YmxlIHRp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS50aW1lc3RhbXA7IH0KLSAgICBkb3VibGUg
bGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubGF0aXR1ZGU7IH0KLSAgICBkb3VibGUg
bG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmxvbmdpdHVkZTsgfQotICAgIGRvdWJs
ZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hY2N1cmFjeTsgfQorICAgIGRvdWJs
ZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi50aW1lc3RhbXA7IH0K
KyAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sYXRp
dHVkZTsgfQorICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3Np
dGlvbi5sb25naXR1ZGU7IH0KKyAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBt
X2NvcmVQb3NpdGlvbi5hY2N1cmFjeTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRp
dHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2Nv
cmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5OyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5oZWFkaW5nOyB9CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRp
b24uc3BlZWQ7IH0KIAotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5hbHRpdHVkZTsgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0
aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVB
Y2N1cmFjeTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmFsdGl0dWRlQWNjdXJhY3k7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmco
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBkb3VibGUg
aGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5oZWFkaW5nOyB9Ci0KLSAgICBib29sIGNh
blByb3ZpZGVTcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQ7IH0K
LSAgICBkb3VibGUgc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc3BlZWQ7IH0KLQotICAg
IGNvbnN0IERhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiBjb3JlUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NvcmVQb3NpdGlvbjsgfQogCiBwcml2YXRlOgotICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBk
b3VibGUgc3BlZWQpOworICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCisgICAgICAgIDog
bV9jb3JlUG9zaXRpb24oV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkKKyAgICB7CisgICAg
fQogCi0gICAgRGF0YSBtX2RhdGE7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBt
X2NvcmVQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAK
aW5kZXggNTdmYmRjZmQzZWU2ZTk5OWQyZDVkM2IxZDAzNTk1MjIwYWZkYzRlZC4uMzI0MWQ3Mjdk
M2M1NzE2Mjk1NjNiMWExOTdiYjkyNTM3Y2RmMmE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2
ICs0MywxNiBAQCBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9u
Q3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYQogCiBXS0dlb2xvY2F0aW9uUG9zaXRp
b25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9uQ3JlYXRlX2IoZG91YmxlIHRpbWVzdGFtcCwgZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJv
dmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3Vi
bGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCiB7Ci0gICAgYXV0
byBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwg
cHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRp
bmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKKyAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVk
ZSwgYWNjdXJhY3kgfTsKKyAgICBpZiAocHJvdmlkZXNBbHRpdHVkZSkKKyAgICAgICAgY29yZVBv
c2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CisgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSkKKyAgICAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFj
Y3VyYWN5OworICAgIGlmIChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgIGNvcmVQb3NpdGlvbi5o
ZWFkaW5nID0gaGVhZGluZzsKKyAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAgICAgY29yZVBv
c2l0aW9uLnNwZWVkID0gc3BlZWQ7CisKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAgICAgcmV0dXJuIHRv
QVBJKCZwb3NpdGlvbi5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA4
ZWVmYmVjYzc0Y2NjYjE3NDA5YWNmYTE3MjhjOWJiOTMwOTI2YmZhLi42ZjgxOWRmMTQ3NTc2ZWZl
NTk1Yjg5N2MwZGIyZGRjMzM0N2YxOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtMzks
MjkgKzM5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKXBvc2l0aW9uV2l0aExvY2F0aW9uOihDTExvY2F0
aW9uICopbG9jYXRpb24KICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlk
ZUFsdGl0dWRlQWNjdXJhY3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IGxvY2F0aW9u
LmFsdGl0dWRlOwotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGlj
YWxBY2N1cmFjeTsKLSAgICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAgICAgICBj
YW5Qcm92aWRlQWx0aXR1ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0dWRlQWNj
dXJhY3kgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9IHRydWU7
Ci0gICAgZG91YmxlIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNwZWVkIDwgMC4w
KQotICAgICAgICBjYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcgPSB0cnVlOwotICAgIGRvdWJsZSBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwot
ICAgIGlmIChoZWFkaW5nIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVhZGluZyA9IGZhbHNl
OwotCi0gICAgQ0xMb2NhdGlvbkNvb3JkaW5hdGUyRCBjb29yZGluYXRlID0gbG9jYXRpb24uY29v
cmRpbmF0ZTsKLSAgICBkb3VibGUgdGltZXN0YW1wID0gbG9jYXRpb24udGltZXN0YW1wLnRpbWVJ
bnRlcnZhbFNpbmNlMTk3MDsKLQotICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBjb29yZGluYXRlLmxhdGl0dWRlLCBjb29yZGluYXRl
LmxvbmdpdHVkZSwgbG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92aWRlQWx0aXR1
ZGUsIGFsdGl0dWRlLCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFj
eSwgY2FuUHJvdmlkZUhlYWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwgc3BlZWQpLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpjcmVhdGUoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiB7IGxvY2F0aW9u
IH0pLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggZGI3N2YzODkwYzU1ZDM2NjE4NjI2YTNlYmNlNWRh
ZTk2ZWM0ZTBlMi4uMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5NWIyNWY5M2M0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRp
b25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTgxLDcgKzgxLDEwIEBAIHZvaWQgV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKCkKIAogdm9pZCBXZWJLaXRHZW9sb2Nh
dGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3kpCiB7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRp
bWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHRydWUsIGFsdGl0dWRlLCB0
cnVlLCBhbHRpdHVkZUFjY3VyYWN5LCBmYWxzZSwgMCwgZmFsc2UsIDApOworICAgIFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9uIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPih0
aW1lc3RhbXApLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGNvcmVQb3Np
dGlvbi5hbHRpdHVkZSA9IGFsdGl0dWRlOworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3Vy
YWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3Jl
UG9zaXRpb24pKTsKICAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQ
b3NpdGlvbihwb3NpdGlvbi5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA4N2IyOTY4NmJi
ZTU2ZmZlMzRlZTczNDljMWY4YTkwYmY2OGEyMDE5Li41MmIwMTFmNWRiYWM2Y2Q2YjcwNzNiODIw
NTQ2ZmI2MjZlMjFhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFu
YWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkwLDcgKzkxLDcgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlv
bihXZWJHZW9sb2NhdGlvblBvc2l0aW8KICAgICBpZiAoIXByb2Nlc3NQb29sKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi0+ZGF0
YSgpKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5jb3JlUG9z
aXRpb24oKSkpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MubW0KaW5kZXggYzM3YjMzMTQxM2ZiM2UyYWYzNmFjMjAwNmMxZTM5Mjg1NGY3NDdh
YS4uODkyZGVlMTNlMTY5M2I2OGM3YzMxNTZiMzI0ZDI2ZWY4MTg1MTRlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCkBAIC03NCwxMSArNzQsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJV2lu
ZG93Kik7CiB9OwogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBr
aXQoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pCi17Ci0gICAgcmV0dXJu
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShwb3NpdGlvbi0+dGltZXN0YW1wKCksIHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5hY2N1
cmFjeSgpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZUFsdGl0dWRlKCksIHBvc2l0aW9uLT5hbHRpdHVk
ZSgpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3koKSwgcG9zaXRpb24tPmFs
dGl0dWRlQWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVIZWFkaW5nKCksIHBvc2l0aW9u
LT5oZWFkaW5nKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlU3BlZWQoKSwgcG9zaXRpb24tPnNwZWVk
KCkpOwotfQotCiBzdHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW47CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IGZyYW1lOwpA
QCAtMzA0LDEwICsyOTksMTAgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5p
ZWQKICAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF07CiB9CiAK
LS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uICop
Y29yZVBvc2l0aW9uCistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbiYmKWNvcmVQb3NpdGlvbgogewogICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAg
IGF1dG8gcG9zaXRpb24gPSBraXQoY29yZVBvc2l0aW9uKTsKKyAgICBhdXRvIHBvc2l0aW9uID0g
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAg
ICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGQzNmU2OGQ1YTg2NTUyNjgyZjE2
MzI2OTVlMWNiOTYyNTgzZDc3NDQuLjk1Njc1MTgwYzQzYTBjMTY0ZWIyYTUwNGJjZjAxMDMyY2Y4
Nzc1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC05MSwxOSArOTEsMTcgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2Uo
V2ViUGFnZSYgcGFnZSwgYm9vbCBlbmEKICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpT
ZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9
CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhJiBkYXRhKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0
aW9uKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Q
b3NpdGlvbj4gcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoZGF0YS50aW1l
c3RhbXAsIGRhdGEubGF0aXR1ZGUsIGRhdGEubG9uZ2l0dWRlLCBkYXRhLmFjY3VyYWN5LCBkYXRh
LmNhblByb3ZpZGVBbHRpdHVkZSwgZGF0YS5hbHRpdHVkZSwgZGF0YS5jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeSwgZGF0YS5hbHRpdHVkZUFjY3VyYWN5LCBkYXRhLmNhblByb3ZpZGVIZWFkaW5n
LCBkYXRhLmhlYWRpbmcsIGRhdGEuY2FuUHJvdmlkZVNwZWVkLCBkYXRhLnNwZWVkKTsKLQogICAg
IFZlY3RvcjxSZWZQdHI8V2ViUGFnZT4+IHdlYlBhZ2VDb3B5OwogICAgIGNvcHlUb1ZlY3Rvciht
X3BhZ2VTZXQsIHdlYlBhZ2VDb3B5KTsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiB3ZWJQYWdlQ29w
eSkgewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBv
c2l0aW9uLmdldCgpKTsKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShw
YWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKICAgICB9CiAjZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwog
I2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
CmluZGV4IGQxZjNjYjczNjAwMzFjZGU5ZDI0ZmJjNDVmMjlmNTBjYzc5MDZlNmIuLjRmNDQ3YWYw
YTM3NDY1NDM4ZjVmMjliMTc4ZjA3YjY2MjM3NzNlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR2VvbG9j
YXRpb247CitjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVXBkYXRpbmcoKSBjb25z
dCB7IHJldHVybiAhbV9wYWdlU2V0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gIW1faGlnaEFjY3VyYWN5UGFnZVNldC5pc0VtcHR5
KCk7IH0KIAotICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6RGF0YSYpOworICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYpOwogICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDI3MTU0ZjVhMzZlZTMwMzIxYmE1ZTFkOWUyNzJlODQwY2FjNzcx
ZTkuLjk3ZGEyODU2YmQyOWE2ZTA1Y2Y3NzBmNWNjMjllNzc2OWI2ZDQyOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgewotICAgIERp
ZENoYW5nZVBvc2l0aW9uKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSBwb3Np
dGlvbik7CisgICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
biBwb3NpdGlvbik7CiAgICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9y
TWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IDNiYzhkZmNiMTQwNmI3OWU4NzYwNGY1
MDkzNTM2OGE1OTQyZDQ3Y2UuLjg5MTMxM2NlOWZhYTc2M2M1MTU2OWNjZTlmY2I5ODVhNGI0MzI4
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsMTAgKzY0LDEwIEBA
IHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGVu
YWJsZWQpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI+KCktPnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UobV9wYWdlLCBlbmFi
bGVkKTsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxh
c3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcy4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2Vv
bG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDE5Nzc3MTExM2E2OWQ1
NDdiNjM5MTRiMzAzNzMyOTJmNDcxY2FmMDIuLmNmZThkNDI0ODU5ZDhmMTE3MGZhODllNzY5NDA2
MGI3ODIwZDM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsKIAotICAgIFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9s
b2NhdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
TWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaAppbmRl
eCA4MDk1ZDUzYzc4MmI0MTkxNmI1M2UwZjhkNmIxMzIxZmRkMzBhYjA1Li4wNDkwZmNmYjFkYjA0
YmY2YjAyNGU4ZTQwOTY3NTcwZjdjNWFjMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJv
dmlkZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogLSAo
dm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkOwogLSAodm9pZClnZW9sb2NhdGlv
bkF1dGhvcml6YXRpb25EZW5pZWQ7CiAKLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uKilwb3NpdGlvbjsKKy0gKHZvaWQpcG9zaXRpb25DaGFuZ2Vk
OihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpcG9zaXRpb247CiAtICh2b2lkKWVycm9y
T2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlOwogLSAodm9pZClyZXNldEdlb2xvY2F0
aW9uOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCmluZGV4IGFlZDk1
NjIxYzc4NTFkMzU3MTQyMGMwYzYyNTE3ZmFiMjUwNTM2MDYuLmQ5ZjAzM2E3ZDcyMGExNGUxMTMy
MTY3MjBmNmYwYjYzODRlYTEzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIu
bW0KQEAgLTE2NSwyOSArMTY1LDcgQEAgLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRp
b25NYW5hZ2VyICopbWFuYWdlciBkaWRDaGFuZ2VBdXRob3JpemF0aW9uU3RhdHUKIAogLSAodm9p
ZClzZW5kTG9jYXRpb246KENMTG9jYXRpb24gKiluZXdMb2NhdGlvbgogewotICAgIC8vIE5vcm1h
bGl6ZS4KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZSA9IHRydWU7Ci0gICAgYm9vbCBjYW5Q
cm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHRydWU7Ci0gICAgZG91YmxlIGFsdGl0dWRlID0gbmV3
TG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3kgPSBuZXdMb2Nh
dGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIGlmIChhbHRpdHVkZUFjY3VyYWN5IDwgMC4wKSB7
Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNlOwotICAgICAgICBjYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeSA9IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNw
ZWVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc3BlZWQgPSBuZXdMb2NhdGlvbi5zcGVlZDsKLSAgICBp
ZiAoc3BlZWQgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVTcGVlZCA9IGZhbHNlOwotCi0gICAg
Ym9vbCBjYW5Qcm92aWRlSGVhZGluZyA9IHRydWU7Ci0gICAgZG91YmxlIGhlYWRpbmcgPSBuZXdM
b2NhdGlvbi5jb3Vyc2U7Ci0gICAgaWYgKGhlYWRpbmcgPCAwLjApCi0gICAgICAgIGNhblByb3Zp
ZGVIZWFkaW5nID0gZmFsc2U7Ci0KLSAgICBkb3VibGUgdGltZXN0YW1wID0gW25ld0xvY2F0aW9u
LnRpbWVzdGFtcCB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdOwotICAgIFJlZlB0cjxHZW9sb2NhdGlv
blBvc2l0aW9uPiBnZW9sb2NhdGlvblBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKHRpbWVzdGFtcCwgbmV3TG9jYXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSwgbmV3TG9jYXRp
b24uY29vcmRpbmF0ZS5sb25naXR1ZGUsIG5ld0xvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSwg
Y2FuUHJvdmlkZUFsdGl0dWRlLCBhbHRpdHVkZSwgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ks
IGFsdGl0dWRlQWNjdXJhY3ksIGNhblByb3ZpZGVIZWFkaW5nLCBoZWFkaW5nLCBjYW5Qcm92aWRl
U3BlZWQsIHNwZWVkKTsKLSAgICBbX3Bvc2l0aW9uTGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOmdl
b2xvY2F0aW9uUG9zaXRpb24uZ2V0KCldOworICAgIFtfcG9zaXRpb25MaXN0ZW5lciBwb3NpdGlv
bkNoYW5nZWQ6R2VvbG9jYXRpb25Qb3NpdGlvbiB7IG5ld0xvY2F0aW9uIH1dOwogfQogCiAtICh2
b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0
ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDBk
NTNhZjAzODViYzQxODNhZjg2ODZiNmMzNzQzZGI1ZmM1YzE0OGEuLjFkMjgwYzFhY2Q1OTFlN2Mx
YWVjNjg5YWI3YTIzNDQ2ODNhYmI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTQ0LDcgKzQ0
LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24gKEludGVybmFsKQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9u
OihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsK
Ky0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlvbiYm
KWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiAvLyBDb3JlTG9jYXRpb24gcnVucyBp
biB0aGUgbWFpbiB0aHJlYWQuIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgbGl2ZXMgb24gdGhl
IFdlYlRocmVhZC4KQEAgLTM2MSw5ICszNjEsOSBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkRlbmllZAogICAgIH0pOwogfQogCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiopcG9zaXRpb24KKy0gKHZvaWQpcG9zaXRpb25DaGFu
Z2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpcG9zaXRpb24KIHsKLSAgICBSZXRh
aW5QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gd2ViUG9zaXRpb24gPSBhZG9wdE5TKFtbV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOnBv
c2l0aW9uXSk7CisgICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYlBvc2l0
aW9uID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2Vv
bG9jYXRpb25Qb3NpdGlvbjpXVEZNb3ZlKHBvc2l0aW9uKV0pOwogICAgIFdlYlRocmVhZFJ1bihe
ewogICAgICAgICBbX3Byb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDp3ZWJQb3NpdGlvbi5nZXQoKV07
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAzMzYwMjQ5MTBlYzE1MTg4
MmI2NGE4NmI5ODkwNTMwY2U5MjdlZmM4Li4yMGM0MzQzMTA3ODdhYmFkYjAyMjYwMzk1Yjc5MjA4
NzYzNzhiNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlIHsg
fQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGVy
bWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZSB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IDBjYjJiZTk5MWUxNzQ4OTkxMjQ5ZWRkMWJjOWZl
ZWY1NWFiZjNhODAuLjJlZjNkYjYyMzljMTk0NDVhMDc1MDgxNTMwZTgzYmNhNDAyNzFiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0
aW9uKQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLUdlb2xvY2F0aW9uUG9z
aXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9u
KCkKIHsKICAgICByZXR1cm4gY29yZShbW21fd2ViVmlldyBfZ2VvbG9jYXRpb25Qcm92aWRlcl0g
bGFzdFBvc2l0aW9uXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KaW5kZXggNDU2ZDRiYThiZGYwZTcx
NjQ0OTA3NTMyMWY5ZWRkNGYwODQ1ZGZhMC4uMzc0NTljNmI4NTg0N2M2MTM1YWE4NjFiNTE0YTEw
ZDY0YTg2YTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtMjYsMjQgKzI2LDI0IEBACiAjaW1w
b3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oIgotI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgotCiAjaW1wb3J0IDxX
ZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgor
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGlu
dGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgOiBOU09iamVjdAogewogQHB1
YmxpYwotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBfcG9zaXRpb247CisgICAgR2Vv
bG9jYXRpb25Qb3NpdGlvbiBfcG9zaXRpb247CiB9CiAKLS0gKGlkKWluaXRXaXRoQ29yZUdlb2xv
Y2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2Nh
dGlvblBvc2l0aW9uOworLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjooR2Vv
bG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsCiAKLS0gKGlkKWluaXRX
aXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYm
KWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCistIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlvblBv
c2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24KIHsK
ICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTU2LDkgKzU2LDEx
IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24KIAotR2Vv
bG9jYXRpb25Qb3NpdGlvbiogY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikK
K3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShXZWJHZW9sb2NhdGlvblBv
c2l0aW9uICpwb3NpdGlvbikKIHsKLSAgICByZXR1cm4gcG9zaXRpb24gPyBwb3NpdGlvbi0+X2lu
dGVybmFsLT5fcG9zaXRpb24uZ2V0KCkgOiAwOworICAgIGlmICghcG9zaXRpb24pCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHBvc2l0aW9uLT5faW50ZXJuYWwtPl9w
b3NpdGlvbjsKIH0KIAogLSAoaWQpaW5pdFdpdGhUaW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAg
bGF0aXR1ZGU6KGRvdWJsZSlsYXRpdHVkZSBsb25naXR1ZGU6KGRvdWJsZSlsb25naXR1ZGUgYWNj
dXJhY3k6KGRvdWJsZSlhY2N1cmFjeQpAQCAtNjYsMTEgKzY4LDExIEBAIC0gKGlkKWluaXRXaXRo
VGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIGxhdGl0dWRlOihkb3VibGUpbGF0aXR1ZGUgbG9u
Z2l0dWRlOihkCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgX2ludGVybmFsID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9u
SW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246R2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3kpXTsKKyAgICBfaW50ZXJuYWwgPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbCBh
bGxvY10gaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpHZW9sb2NhdGlvblBvc2l0aW9u
IHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9XTsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8
R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgorLSAoaWQpaW5p
dFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xv
Y2F0aW9uUG9zaXRpb24KIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2Vs
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCmluZGV4IGY1NGU2NmI4MWUxOTliNDQ0
MDk1ODA2ZDA0YjExMDNmMjZkYTUwOTIuLjI2YzMyYjEyNmRmMjQzMjVmZGNlOTliN2I4NmE4Yzc1
OTgyY2Q3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaApAQCAtMjQsMTAgKzI0
LDExIEBACiAgKi8KIAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2ltcG9y
dCA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHZW9s
b2NhdGlvblBvc2l0aW9uOwogfQogCi1XZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBjb3Jl
KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKik7CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24+IGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGJhMjg2YzhkOTc1OTcyODhkYjhlZDE4NWIyMDhm
YTk3ODMwMGQxMGUuLmJhM2YzNDFlZDFlZDcxZmU5YTUwZjNmYTQ1YWY0NTkxZjM5NDM3NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTY0LDE0ICs2NCwxNCBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQogICAgIHByb3ZpZGVyLT51bnJlZ2lz
dGVyV2ViVmlldyhtX3dlYlZpZXcuZ2V0KCkpOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAg
ICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJ
TEVEKG1fd2ViVmlldy0+Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQ09NUHRyPElXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbjsKICAgICBpZiAoRkFJTEVEKHByb3ZpZGVyLT5s
YXN0UG9zaXRpb24oJnBvc2l0aW9uKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBjb3JlKHBvc2l0aW9uLmdldCgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggN2IxYmY0ODdhYWM3MDMzNGUzNTE1ZDczNDFl
MjY2MGExN2RlMDE2Yi4uZjYyZjVjMGRlMTNhZjgzM2U2Y2I4NjdmNzMyZWY1NTk1ZmI5ODY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZp
bmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQotICAg
IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9u
KCkgZmluYWw7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCA0ZDYzMTg1NjExMDQ1ZDAzZjYzYzc2MDg5
NTRjOTk1NmM2M2ZhNWZlLi4wZDZiNzg0ZTA3NTAzMTA4YzAzODY3MDU4ZTE2YjM5NWNiZjhmZWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcApAQCAtODEsMTggKzgxLDE4IEBAIFVMT05HIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246
OlJlbGVhc2UoKQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRXaXRoVGlt
ZXN0YW1wKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVk
ZSwgZG91YmxlIGFjY3VyYWN5KQogewotICAgIG1fcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7Cisg
ICAgbV9wb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb24geyB0aW1lc3RhbXAsIGxhdGl0dWRl
LCBsb25naXR1ZGUsIGFjY3VyYWN5IH07CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUdlb2xvY2F0
aW9uUG9zaXRpb24qIGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3Rk
OjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0
aW9uKiBwb3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENPTVB0cjxXZWJHZW9sb2NhdGlv
blBvc2l0aW9uPiB3ZWJHZW9sb2NhdGlvblBvc2l0aW9uKFF1ZXJ5LCBwb3NpdGlvbik7CiAgICAg
aWYgKCF3ZWJHZW9sb2NhdGlvblBvc2l0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB3ZWJHZW9sb2NhdGlvblBvc2l0aW9u
LT5pbXBsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmgKaW5kZXggNzk4YWI4MDg3ZDljN2VmMGY4Y2QxMWFmNjM4OGFmMzk4ZWY4OTJj
Ny4uMGUwNjdjYjkxYjViN2VlMThmZWJjMzg4ZWRlNjVhYTI5ZWE1MGRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaApAQCAtNDgsMTMg
KzQ4LDEzIEBAIHB1YmxpYzoKICAgICAvLyBJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbgogICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbml0V2l0aFRpbWVzdGFtcChkb3VibGUg
dGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSk7CiAKLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gbV9wb3NpdGlvbi5nZXQoKTsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4mIGltcGwoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9wb3NpdGlvbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IG1fcG9zaXRpb247CiB9OwogCi1X
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9u
Kik7CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IGNvcmUoSVdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24qKTsKIAogI2VuZGlmIC8vIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b25faApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDA1YWRiZWM1MzNmZTkyMzMyMTMxZmRmMDkwZTMyNjY2NzNiYWU4NDcuLmUwMjIxZTViYTYzMzkz
OTRkNzMwMjdlNGIwNzUzZTFkNmFkYTkyMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0xMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlv
biBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKwogMjAxNy0xMC0xMCAgSm9hbm1hcmllIERp
Z2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFtBVEtdIEFSSUEgZm9ybSBy
b2xlIHNob3VsZCBiZSBtYXBwZWQgdG8gQVRLX1JPTEVfTEFORE1BUks7IG5vdCBBVEtfUk9MRV9G
T1JNCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGE2MTEw
ZDkxNjYxY2I1ZTZiZThjNDRhYTczN2Q1NzI4ZTA3Y2NhNWIuLjYzM2U0Nzc4MTlmNmJjNjYzMmVl
OTZlNDcxMTZjZTk5YjhjM2UwMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCkBAIC0xMjUsNyArMTI1LDcgQEAgQGVuZAogI2VuZGlmCiAKIEBpbnRlcmZhY2Ug
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAoSW50ZXJuYWwpCi0tIChpZClpbml0V2l0aEdlb2xvY2F0
aW9uUG9zaXRpb246KFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiljb3JlR2Vv
bG9jYXRpb25Qb3NpdGlvbjsKKy0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVu
ZAogCiBUZXN0UnVubmVyOjp+VGVzdFJ1bm5lcigpCkBAIC00NDksOCArNDQ5LDE2IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgICAgIC8vIFRlc3QgdGhlIGV4cG9zZWQgQVBJLgogICAg
ICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhU
aW1lc3RhbXA6Y3VycmVudFRpbWUoKSBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0
dWRlIGFjY3VyYWN5OmFjY3VyYWN5XTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGNvcmVH
ZW9sb2NhdGlvblBvc2l0aW9uID0gV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRl
KGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0Fs
dGl0dWRlLCBhbHRpdHVkZSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3Vy
YWN5LCBwcm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKLSAg
ICAgICAgcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRo
R2VvbG9jYXRpb25Qb3NpdGlvbjooV1RGTW92ZShjb3JlR2VvbG9jYXRpb25Qb3NpdGlvbikpXTsK
KyAgICAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBnZW9sb2NhdGlvblBvc2l0aW9u
IHsgY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kgfTsKKyAgICAg
ICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGUpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9u
LmFsdGl0dWRlID0gYWx0aXR1ZGU7CisgICAgICAgIGlmIChwcm92aWRlc0FsdGl0dWRlQWNjdXJh
Y3kpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBh
bHRpdHVkZUFjY3VyYWN5OworICAgICAgICBpZiAocHJvdmlkZXNIZWFkaW5nKQorICAgICAgICAg
ICAgZ2VvbG9jYXRpb25Qb3NpdGlvbi5oZWFkaW5nID0gaGVhZGluZzsKKyAgICAgICAgaWYgKHBy
b3ZpZGVzU3BlZWQpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLnNwZWVkID0gc3Bl
ZWQ7CisgICAgICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBp
bml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246KFdURk1vdmUoZ2VvbG9jYXRpb25Qb3NpdGlvbikp
XTsKICAgICB9CiAgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0
aW9uOnBvc2l0aW9uXTsKICAgICBbcG9zaXRpb24gcmVsZWFzZV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323422</attachid>
            <date>2017-10-11 09:37:10 -0700</date>
            <delta_ts>2017-10-11 10:42:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178148-20171011093709.patch</filename>
            <type>text/plain</type>
            <size>66978</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI0MmU2MjVjMmRlNzFi
YzhiNjE5NDcyMDAyMGM3MzMzZmQ1YmQ2Yy4uYjhjZGJiYzY4M2JmYWZlZDhhNjgzNzg0MThmNjMx
NjQ4OTYyNmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUzIEBACiAyMDE3LTEwLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW9kZXJuaXplIEdlb2xvY2F0
aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBN
b2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZToKKyAgICAgICAgLSBVc2Ugc3RkOjpvcHRpb25hbDw+
IGluc3RlYWQgb2Ygc2VwYXJhdGUgYm9vbGVhbiBtZW1iZXJzCisgICAgICAgIC0gTWFrZSBHZW9s
b2NhdGlvblBvc2l0aW9uIGEgc2ltcGxlIHN0cnVjdCB0aGF0IGNhbiBiZSBwYXNzZWQgdmlhIElQ
QworICAgICAgICAtIFJlcGxhY2UgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSB3aXRoIEdl
b2xvY2F0aW9uUG9zaXRpb24KKyAgICAgICAgLSBNb3ZlIGxvZ2ljIHRvIGNvbnN0cnVjdCBhIEdl
b2xvY2F0aW9uUG9zaXRpb24gZnJvbSBhIENMTG9jYXRpb24gb24gaU9TCisgICAgICAgICAgaW4g
b25lIHBsYWNlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjpDb29yZGluYXRlcyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGlu
YXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlczo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVzOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlczo6bG9uZ2l0dWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjphbHRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6YWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNj
dXJhY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmhlYWRpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OnNwZWVkIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUdlb3Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6Omxh
c3RQb3NpdGlvbik6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUG9z
aXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb246Okdlb2xvY2F0
aW9uUG9zaXRpb24pOgorICAgICAgICBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBvbmx5IG5l
ZWRlZCBieSBvdXIgSVBDIGRlY29kaW5nIGNvZGUuCisKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9z
L0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmg6CisKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCByZWFsbHkgZml4IHRoZSBidWls
ZCB3aXRoIGNlcnRhaW4gU0RLcy4KIAogICAgICAgICBGb2xsb3ctdXAgdG8gcjIyMzE1NCwgd2hp
Y2ggZml4ZWQgdGhlIHdyb25nIGxhbWJkYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjMyNjZkZmNiYjdmMjBiNTk5
Y2NmNGZkYjgwYjYwMTBlMmVhMjBhOC4uNjFhNjUwZjZhNmQxMWRlNzJmMDBlZjY2OTM0NTMwNTYz
MzM0NWU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNy0xMC0xMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlvbiBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgx
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
UG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjp0aW1lc3RhbXAgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpsYXRpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmxvbmdpdHVkZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6YWx0aXR1ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uOjphbHRpdHVkZUFjY3VyYWN5IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6aGVhZGluZyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uUG9zaXRpb246OnNwZWVkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y29yZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6
CisgICAgICAgIChXS0dlb2xvY2F0aW9uUG9zaXRpb25DcmVhdGVfYik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYktpdEdlb2xvY2F0aW9uUHJv
dmlkZXI6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tOgorICAgICAgICAoLVtXS0xl
Z2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDpdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50Ojps
YXN0UG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaDoKKwogMjAxNy0xMC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzEz
MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjM2MwNDM2ODg3NWJjMGM2Y2I2ZTky
MDllOTNiOTEwYjJiOTZmNTllLi5iNWExYzgyOTAyNTAzZDUzOTYxZjhjZDIwODdhMmQ0MDVjNzRl
ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm5p
emUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmg6Cisg
ICAgICAgICogTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tOgorICAg
ICAgICAoLVtXZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIHNlbmRMb2NhdGlvbjpd
KToKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAg
ICgtW19XZWJDb3JlTG9jYXRpb25VcGRhdGVUaHJlYWRpbmdQcm94eSBwb3NpdGlvbkNoYW5nZWQ6
XSk6CisKIDIwMTctMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IGEwMTQwNWI0YmNmOWQ3YjVkYTBhZjkwYjgzMmZjYjIzMzBj
NzU3ZjEuLmRmODc3Y2QwOWRkMmM2NGQ1OWEzODc4NTVkNmNjYzMyYWUxOTA5M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMC0xMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBHZW9sb2NhdGlv
biBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzgxNDgKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25D
bGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgaW5p
dFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAg
ICAoLVtXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGluaXRXaXRoVGltZXN0YW1wOmxhdGl0dWRlOmxv
bmdpdHVkZTphY2N1cmFjeTpdKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBp
bml0V2l0aEdlb2xvY2F0aW9uUG9zaXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDoKKwogMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFs
dWVzVG9WZWN0b3Igd2l0aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1h
cC52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA4NDI4ODVhZmE3NmYy
NjFkZTdhNDk0ZDQ3NDBkZjhkZjEwMjExNGVmLi5mNDRkOTU0ZjgyYzc5ZjI4NzZlODdkYWJlZDVk
NzkzZmQxMDY0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTctMTAtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBNb2Rlcm5pemUgR2VvbG9jYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OmluaXRXaXRoVGltZXN0YW1wKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Omlt
cGwgY29uc3QpOgorCiAyMDE3LTEwLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRHJvcCB1bnVzZWQgcGFyYW1ldGVycyBmb3IgQ29va2llc1N0cmF0ZWd5Ojpj
b29raWVzRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0Nvb3JkaW5hdGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuY3BwCmluZGV4IDg5ODFmYjU1ZTE1NzNkZGJkZTA1ZjhlM2FhMGVlMDIz
NWQxYjllNjcuLjljZWJkZmMwZjY1YThmYjgxMDI0M2UxMjdlZDc5Njc1ODQyZjUwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3Bw
CkBAIC0yOCwzMiArMjgsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRlKCkgY29uc3QKK0Nvb3JkaW5hdGVzOjpD
b29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYgcG9zaXRpb24pCisgICAgOiBtX3Bvc2l0
aW9uKFdURk1vdmUocG9zaXRpb24pKQogewotICAgIGlmICghbV9jYW5Qcm92aWRlQWx0aXR1ZGUp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGU7Cisg
ICAgQVNTRVJUKG1fcG9zaXRpb24uaXNWYWxpZCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fY2FuUHJvdmlk
ZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIG1faGVh
ZGluZzsKLX0KLQotc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpzcGVlZCgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICByZXR1cm4gbV9zcGVlZDsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29v
cmRpbmF0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0
ZXMuaAppbmRleCBjNTcxNGU3NWVjZjRjODZiYmVmOTEyZWVlMDYxMDNkMjVhMDYzODMyLi4yNzYz
NzFhM2Q1OTUxYmY3MmIzNTE2NTc2ODkyYzI3ZWIwMTIzOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0zMyw0OSArMzQsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5hdGVzPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDb29yZGluYXRlcz4gY3JlYXRlKGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBh
bHRpdHVkZUFjY3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJv
b2wgcHJvdmlkZXNTcGVlZCwgZG91YmxlIHNwZWVkKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENv
b3JkaW5hdGVzKGxhdGl0dWRlLCBsb25naXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRl
LCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBw
cm92aWRlc0hlYWRpbmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKSk7IH0KKyAgICBz
dGF0aWMgUmVmPENvb3JkaW5hdGVzPiBjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbiYmIHBvc2l0
aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZXMoV1RG
TW92ZShwb3NpdGlvbikpKTsKKyAgICB9CiAKICAgICBSZWY8Q29vcmRpbmF0ZXM+IGlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gQ29vcmRpbmF0ZXM6OmNyZWF0ZSht
X2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUsIG1fYWx0aXR1ZGUs
IG1fYWNjdXJhY3ksIG1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIG1fYWx0aXR1ZGVBY2N1
cmFjeSwgbV9jYW5Qcm92aWRlSGVhZGluZywgbV9oZWFkaW5nLCBtX2NhblByb3ZpZGVTcGVlZCwg
bV9zcGVlZCk7CisgICAgICAgIHJldHVybiBDb29yZGluYXRlczo6Y3JlYXRlKCBHZW9sb2NhdGlv
blBvc2l0aW9uIHsgbV9wb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9Ci0gICAgZG91YmxlIGxvbmdpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFs
dGl0dWRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9h
Y2N1cmFjeTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5KCkg
Y29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25zdDsKLSAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBkb3VibGUgbGF0aXR1ZGUo
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmxhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdp
dHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24ubG9uZ2l0dWRlOyB9CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5hbHRp
dHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24u
YWNjdXJhY3k7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb24uYWx0aXR1ZGVBY2N1cmFjeTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5oZWFk
aW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbi5zcGVlZDsgfQogICAgIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlcyhkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJs
ZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBt
X2xhdGl0dWRlKGxhdGl0dWRlKQotICAgICAgICAsIG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKLSAg
ICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJh
Y3kpCi0gICAgICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpCi0gICAg
ICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCi0gICAgICAgICwgbV9zcGVlZChzcGVlZCkKLSAgICAg
ICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShwcm92aWRlc0FsdGl0dWRlKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kocHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5KQotICAg
ICAgICAsIG1fY2FuUHJvdmlkZUhlYWRpbmcocHJvdmlkZXNIZWFkaW5nKQotICAgICAgICAsIG1f
Y2FuUHJvdmlkZVNwZWVkKHByb3ZpZGVzU3BlZWQpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNp
dCBDb29yZGluYXRlcyhHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwogCi0gICAgZG91YmxlIG1fbGF0
aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwot
ICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlQWNjdXJhY3k7Ci0g
ICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUgbV9zcGVlZDsKLSAgICAKLSAgICBib29s
IG1fY2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3Zp
ZGVTcGVlZDsKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uIG1fcG9zaXRpb247CiB9OwogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCBkZGNlMWM0ODRmZTFiY2U0YzAwNWFjMWQ2
MzEwMzdiOGIxNGM0ZWQxLi40Y2FkN2JjNzkwNmZkNzcyZTkyMjZhYjVmZjAzZWY3OTA0NTdlZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uLmNwcApAQCAtNTMsMTYgKzUzLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyIGZhaWxlZFRvU3Rh
cnRTZXJ2aWNlRXJyb3JNZXNzYWdlW10gPSAiRmFpbGVkIHRvIHN0YXJ0IEdlb2xvY2F0CiBzdGF0
aWMgY29uc3QgY2hhciBmcmFtZWxlc3NEb2N1bWVudEVycm9yTWVzc2FnZVtdID0gIkdlb2xvY2F0
aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMiOwogc3RhdGljIGNvbnN0
IGNoYXIgb3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNzYWdlW10gPSAiT3Jp
Z2luIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2UgR2VvbG9jYXRpb24gc2VydmljZSI7
CiAKLXN0YXRpYyBSZWZQdHI8R2VvcG9zaXRpb24+IGNyZWF0ZUdlb3Bvc2l0aW9uKEdlb2xvY2F0
aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3RhdGljIFJlZlB0cjxHZW9wb3NpdGlvbj4gY3JlYXRl
R2VvcG9zaXRpb24oc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiYmIHBvc2l0aW9u
KQogewogICAgIGlmICghcG9zaXRpb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGF1dG8gY29vcmRpbmF0ZXMgPSBDb29yZGluYXRlczo6Y3JlYXRlKHBvc2l0aW9uLT5sYXRp
dHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlQWx0aXR1
ZGUoKSwgcG9zaXRpb24tPmFsdGl0dWRlKCksIAotICAgICAgICBwb3NpdGlvbi0+YWNjdXJhY3ko
KSwgcG9zaXRpb24tPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCksIHBvc2l0aW9uLT5hbHRp
dHVkZUFjY3VyYWN5KCksCi0gICAgICAgIHBvc2l0aW9uLT5jYW5Qcm92aWRlSGVhZGluZygpLCBw
b3NpdGlvbi0+aGVhZGluZygpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZVNwZWVkKCksIHBvc2l0aW9u
LT5zcGVlZCgpKTsKLQotICAgIHJldHVybiBHZW9wb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29v
cmRpbmF0ZXMpLCBjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3Rh
bXAoKSkpOworICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAgPSBjb252ZXJ0U2Vjb25kc1RvRE9N
VGltZVN0YW1wKHBvc2l0aW9uLT50aW1lc3RhbXApOworICAgIHJldHVybiBHZW9wb3NpdGlvbjo6
Y3JlYXRlKENvb3JkaW5hdGVzOjpjcmVhdGUoV1RGTW92ZShwb3NpdGlvbi52YWx1ZSgpKSksIHRp
bWVzdGFtcCk7CiB9CiAKIHN0YXRpYyBSZWY8UG9zaXRpb25FcnJvcj4gY3JlYXRlUG9zaXRpb25F
cnJvcihHZW9sb2NhdGlvbkVycm9yJiBlcnJvcikKQEAgLTI5Niw3ICsyOTMsNyBAQCBHZW9wb3Np
dGlvbiogR2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbigpCiB7CiAgICAgUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fbGFzdFBvc2l0aW9uID0gY3JlYXRlR2VvcG9zaXRpb24o
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5sYXN0UG9zaXRpb24oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
bGllbnQuaAppbmRleCBmNTFmY2E5MmU5MTJkMTM4ZWY0Y2U2ZjFjYWU1ZmU5MzkwOGMzYWYwLi5m
NzQwOWIyMGQyMGI4ODhmMmZiZWI2NDI4ZjNiYjc3NDNhMjZlODcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNsaWVudC5oCkBA
IC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb247CkBAIC00Miw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBXZSBzaG91bGQgdXBkYXRlIFdlYktpdCB0byByZWZs
ZWN0IHRoaXMgaWYgYW5kIHdoZW4gdGhlIFYyIHNwZWNpZmljYXRpb24KICAgICAvLyBpcyBwdWJs
aXNoZWQuCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSA9IDA7
Ci0gICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7Cisg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3NpdGlv
bigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlv
biYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTRjZDA1NDY5N2Q3ZGIx
YWNiZmRiY2FkZjdmYjUyOGY2Y2UzMmI1OC4uNGY5MGQ4ZDI2OTNhMjBhYTI4Yzk2YTY5NzBjMzE2
YjVkMTg0YmI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2
b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6Y2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9j
YXRpb24mIGdlb2xvY2F0aW9uKQogICAgIG1fY2xpZW50LmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0
KGdlb2xvY2F0aW9uKTsKIH0KIAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9u
Q2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKK3ZvaWQgR2VvbG9jYXRpb25D
b250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxHZW9sb2NhdGlv
blBvc2l0aW9uPiYgcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsK
ICAgICBWZWN0b3I8UmVmPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOwpAQCAtMTIwLDEw
ICsxMjAsMTAgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoR2Vv
bG9jYXRpb25FcnJvciYgZXJyb3IpCiAgICAgICAgIG9ic2VydmVyLT5zZXRFcnJvcihlcnJvcik7
CiB9CiAKLUdlb2xvY2F0aW9uUG9zaXRpb24qIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6bGFzdFBv
c2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gR2VvbG9jYXRpb25D
b250cm9sbGVyOjpsYXN0UG9zaXRpb24oKQogewotICAgIGlmIChtX2xhc3RQb3NpdGlvbi5nZXQo
KSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOworICAgIGlmIChtX2xhc3RQ
b3NpdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLnZhbHVlKCk7CiAKICAgICBy
ZXR1cm4gbV9jbGllbnQubGFzdFBvc2l0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAppbmRl
eCBmZmJkYTQyM2JmZWFlZGRkMmU1YzQ1Nzk0NTEwYWQwNDY1MTdlNGNiLi5iNjVkNjBkNTQxZWM1
Yjk0NjRjZjk0ZWNiNDBlYWU4Yjg1MGRlNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmgKQEAgLTUz
LDEwICs1MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihHZW9sb2Nh
dGlvbiYpOwogICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24mKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9z
aXRpb24qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc2l0aW9uQ2hhbmdlZChjb25zdCBz
dGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3ImKTsKIAotICAgIEdlb2xvY2F0aW9u
UG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Q
b3NpdGlvbj4gbGFzdFBvc2l0aW9uKCk7CiAKICAgICBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIG9sZEFj
dGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGU6OkZsYWdzIG5ld0FjdGl2aXR5U3RhdGUpIG92ZXJy
aWRlOwogCi0gICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CiAK
ICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmPEdlb2xvY2F0aW9uPj4gT2JzZXJ2ZXJzU2V0OwogICAg
IC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFu
ZCB0aG9zZSBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IGQzNTQ4YjY1OGNjOWVkZTJhOGE2NzBk
MzA1NzdiMWRiMDM1ZGJjZDYuLjgwNTM0MTY0M2I1ZWYyYjE4NGJiYmIxOTBmMWQyNWRkOGU2ZTk1
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDg1ICsyNSw4OSBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPGNtYXRoPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCisjaWYgUExBVEZPUk0oSU9T
KQorT0JKQ19DTEFTUyBDTExvY2F0aW9uOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0
aW9uUG9zaXRpb24+IHsKK2NsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAs
IGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VvbG9jYXRpb25Qb3NpdGlvbih0aW1l
c3RhbXAsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7Ci0gICAgfQorICAgIEdlb2xv
Y2F0aW9uUG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGF0aWMgUmVmPEdlb2xvY2F0aW9u
UG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1
ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHBy
b3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKKyAgICBHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5KQorICAgICAgICA6IHRpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgICAgICwgbGF0aXR1
ZGUobGF0aXR1ZGUpCisgICAgICAgICwgbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBh
Y2N1cmFjeShhY2N1cmFjeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdl
b2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFj
eSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwg
YWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBwcm92aWRlc1NwZWVk
LCBzcGVlZCkpOwogICAgIH0KIAotICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVzdGFtcDsgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBHZW9sb2NhdGlvblBvc2l0aW9uKENMTG9jYXRpb24qKTsKKyNlbmRpZgogCi0gICAg
ZG91YmxlIGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQotICAgIGRvdWJs
ZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQotICAgIGRvdWJsZSBh
Y2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBkb3VibGUgYWx0aXR1
ZGUoKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNj
dXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KLSAgICBkb3VibGUg
aGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQotICAgIGRvdWJsZSBzcGVlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3BlZWQ7IH0KKyAgICBkb3VibGUgdGltZXN0YW1wIHsgc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwogCi0gICAgYm9vbCBjYW5Qcm92
aWRlQWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NhblByb3ZpZGVBbHRpdHVkZTsgfQotICAg
IGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2NhblBy
b3ZpZGVBbHRpdHVkZUFjY3VyYWN5OyB9Ci0gICAgYm9vbCBjYW5Qcm92aWRlSGVhZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBib29sIGNhblByb3ZpZGVT
cGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuUHJvdmlkZVNwZWVkOyB9CisgICAgZG91YmxlIGxh
dGl0dWRlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OworICAg
IGRvdWJsZSBsb25naXR1ZGUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpIH07CisgICAgZG91YmxlIGFjY3VyYWN5IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OwogCi1wcml2YXRlOgotICAgIEdlb2xvY2F0aW9uUG9zaXRpb24oZG91
YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3kpCi0gICAgICAgIDogbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICAgICAsIG1f
bGF0aXR1ZGUobGF0aXR1ZGUpCi0gICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQotICAg
ICAgICAsIG1fYWNjdXJhY3koYWNjdXJhY3kpCi0gICAgICAgICwgbV9hbHRpdHVkZSgwKQotICAg
ICAgICAsIG1fYWx0aXR1ZGVBY2N1cmFjeSgwKQotICAgICAgICAsIG1faGVhZGluZygwKQotICAg
ICAgICAsIG1fc3BlZWQoMCkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZShmYWxzZSkK
LSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KGZhbHNlKQotICAgICAgICAs
IG1fY2FuUHJvdmlkZUhlYWRpbmcoZmFsc2UpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlU3BlZWQo
ZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGU7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGhlYWRpbmc7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVk
OwogCi0gICAgR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0Fs
dGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBk
b3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFk
aW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICAgICAgOiBtX3RpbWVz
dGFtcCh0aW1lc3RhbXApCi0gICAgICAgICwgbV9sYXRpdHVkZShsYXRpdHVkZSkKLSAgICAgICAg
LCBtX2xvbmdpdHVkZShsb25naXR1ZGUpCi0gICAgICAgICwgbV9hY2N1cmFjeShhY2N1cmFjeSkK
LSAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQotICAgICAgICAsIG1fYWx0aXR1ZGVBY2N1
cmFjeShhbHRpdHVkZUFjY3VyYWN5KQotICAgICAgICAsIG1faGVhZGluZyhoZWFkaW5nKQotICAg
ICAgICAsIG1fc3BlZWQoc3BlZWQpCi0gICAgICAgICwgbV9jYW5Qcm92aWRlQWx0aXR1ZGUocHJv
dmlkZXNBbHRpdHVkZSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KHBy
b3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKLSAgICAgICAgLCBtX2NhblByb3ZpZGVIZWFkaW5nKHBy
b3ZpZGVzSGVhZGluZykKLSAgICAgICAgLCBtX2NhblByb3ZpZGVTcGVlZChwcm92aWRlc1NwZWVk
KQotICAgIHsKLSAgICB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBHZW9sb2NhdGlv
blBvc2l0aW9uJik7Cit9OwogCi0gICAgZG91YmxlIG1fdGltZXN0YW1wOwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR2VvbG9jYXRpb25Qb3NpdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCB0aW1lc3RhbXA7CisgICAgZW5jb2RlciA8
PCBsYXRpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGxvbmdpdHVkZTsKKyAgICBlbmNvZGVyIDw8IGFj
Y3VyYWN5OworICAgIGVuY29kZXIgPDwgYWx0aXR1ZGU7CisgICAgZW5jb2RlciA8PCBhbHRpdHVk
ZUFjY3VyYWN5OworICAgIGVuY29kZXIgPDwgaGVhZGluZzsKKyAgICBlbmNvZGVyIDw8IHNwZWVk
OworfQogCi0gICAgZG91YmxlIG1fbGF0aXR1ZGU7Ci0gICAgZG91YmxlIG1fbG9uZ2l0dWRlOwot
ICAgIGRvdWJsZSBtX2FjY3VyYWN5OwotICAgIGRvdWJsZSBtX2FsdGl0dWRlOwotICAgIGRvdWJs
ZSBtX2FsdGl0dWRlQWNjdXJhY3k7Ci0gICAgZG91YmxlIG1faGVhZGluZzsKLSAgICBkb3VibGUg
bV9zcGVlZDsKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEdlb2xvY2F0aW9uUG9zaXRp
b246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBHZW9sb2NhdGlvblBvc2l0aW9uJiBwb3NpdGlv
bikKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLnRpbWVzdGFtcCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmxhdGl0
dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9z
aXRpb24ubG9uZ2l0dWRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocG9zaXRpb24uYWNjdXJhY3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlvbi5hbHRpdHVkZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGlv
bi5oZWFkaW5nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocG9zaXRpb24uc3BlZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIG1f
Y2FuUHJvdmlkZUFsdGl0dWRlOwotICAgIGJvb2wgbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFj
eTsKLSAgICBib29sIG1fY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgYm9vbCBtX2NhblByb3ZpZGVT
cGVlZDsKLX07CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIEdlb2xvY2F0aW9u
UG9zaXRpb246OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiAhc3RkOjppc25hbih0aW1l
c3RhbXApICYmICFzdGQ6OmlzbmFuKGxhdGl0dWRlKSAmJiAhc3RkOjppc25hbihsb25naXR1ZGUp
ICYmICFzdGQ6OmlzbmFuKGFjY3VyYWN5KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3MvR2VvbG9j
YXRpb25Qb3NpdGlvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
aW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5N2U4NGM4YWYwYzhh
ODQzNDJiMjQ3NDYyMTE3YWVhMmZkODM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0KQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvblBvc2l0aW9uLmgi
CisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgPENvcmVMb2NhdGlvbi9DTExvY2F0aW9u
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25Qb3NpdGlvbjo6R2VvbG9j
YXRpb25Qb3NpdGlvbihDTExvY2F0aW9uKiBsb2NhdGlvbikKKyAgICA6IHRpbWVzdGFtcChsb2Nh
dGlvbi50aW1lc3RhbXAudGltZUludGVydmFsU2luY2UxOTcwKQorICAgICwgbGF0aXR1ZGUobG9j
YXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSkKKyAgICAsIGxvbmdpdHVkZShsb2NhdGlvbi5jb29y
ZGluYXRlLmxvbmdpdHVkZSkKKyAgICAsIGFjY3VyYWN5KGxvY2F0aW9uLmhvcml6b250YWxBY2N1
cmFjeSkKK3sKKyAgICBpZiAobG9jYXRpb24udmVydGljYWxBY2N1cmFjeSA+PSAwLjApIHsKKyAg
ICAgICAgYWx0aXR1ZGUgPSBsb2NhdGlvbi5hbHRpdHVkZTsKKyAgICAgICAgYWx0aXR1ZGVBY2N1
cmFjeSA9IGxvY2F0aW9uLnZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorICAgIGlmIChsb2NhdGlv
bi5zcGVlZCA+PSAwLjApCisgICAgICAgIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7CisgICAgaWYg
KGxvY2F0aW9uLmNvdXJzZSA+PSAwLjApCisgICAgICAgIGhlYWRpbmcgPSBsb2NhdGlvbi5jb3Vy
c2U7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGU5MmE4OWY3NmZlYjk4ZjI1MGYzYWFjNmFmNjBl
ZDI2MmFjZDlkYS4uZDM3NzAxMTVlMmYwOTZhMTZkY2Q1NThmOGJmN2U3NzYzNDM3MjBiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzU1MCw2ICszNTUwLDcgQEAKIAkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdu
b3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dn
aW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzNzYwOUNBMUY1NENDMTgwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzYwOUM4MUY1
NENDMTMwMDBDMTIyRCAvKiBFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJODM3NjVGOTUxREFD
NTIyRjAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VF
dmVudEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENF
MUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4
MzdBODAxMzFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEy
NzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAx
REMzRjU1MDAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMg
LyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFF
QzRBIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICov
OyB9OwpAQCAtMTE4NzMsNiArMTE4NzQsNyBAQAogCQk4Mzc2MDlDODFGNTRDQzEzMDAwQzEyMkQg
LyogRXJyb3JDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBFcnJvckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVG
OTMxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xv
Y2F0aW9uUG9zaXRpb25JT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9s
b2NhdGlvblBvc2l0aW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgz
N0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9
IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAv
KiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM3REZCMzQxRUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDM4LDYgKzIwNDQwLDE1IEBACiAJCQlwYXRo
ID0gYmVhY29uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJODM3OTY0Q0Mx
RjhEQjY3RDAwMjE4RUEwIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25JT1MubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IGlvczsKKwkJCXBhdGggPSAiTmV3IEdy
b3VwIjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTgzRkIzMzY1MUY1MDhB
MTcwMDk4NkU1NCAvKiBlbnRyaWVzYXBpICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTIxMzAxLDYgKzIxMzEyLDcgQEAKIAkJOTcxMTQ1RkYxNEVGMDA3OTAw
Njc0RkQ5IC8qIGdlb2xvY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk4Mzc5NjRDQzFGOERCNjdEMDAyMThFQTAgLyogaW9zICovLAogCQkJCTk3
NDZBRjExMTRGNERERTYwMDNFN0E3MiAvKiBDb29yZGluYXRlcy5jcHAgKi8sCiAJCQkJOTc0NkFG
MTExNEY0RERFNjAwM0U3QTcwIC8qIENvb3JkaW5hdGVzLmggKi8sCiAJCQkJOTc0NkFGMTIxNEY0
RERFNjAwM0U3QTcwIC8qIENvb3JkaW5hdGVzLmlkbCAqLywKQEAgLTMyMTU0LDYgKzMyMTY2LDcg
QEAKIAkJCQlDRDRCRTUyQTFDRTEzNkVGMDA5RDg3REEgLyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4Mzc5NjRDRjFGOERC
NjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTBGQjYyNTJFMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ1MDM2NjgxQkNERERDNDAwRTIwQkIzIC8qIEdlc3R1
cmVFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggYmMwMWVkYTM3YjEy
MjU4MWFhZjIxZTU3MDMyZGIyY2JiZGRiMjc0ZS4uMThkYWZkOWU3ZmNiZDRiYjMxNWI5ZTQ3M2Q3
ZTc3ZDBlZGE4ODU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNv
bnRyb2xsZXIpCiAgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKIH0KIAotdm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9u
PiYmIHBvc2l0aW9uKQordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKEdl
b2xvY2F0aW9uUG9zaXRpb24mJiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IFdU
Rk1vdmUocG9zaXRpb24pOwogICAgIGNsZWFyRXJyb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2EKIHsKICAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKICAgICBtX2Vy
cm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IG51bGxwdHI7
CisgICAgbV9sYXN0UG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgYXN5bmNVcGRhdGVDb250
cm9sbGVyKCk7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQoKQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6cmVzZXQoKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gbnVsbHB0cjsKKyAgICBtX2xhc3RQ
b3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBjbGVhckVycm9yKCk7CiAgICAgbV9wZXJtaXNz
aW9uU3RhdGUgPSBQZXJtaXNzaW9uU3RhdGVVbnNldDsKIH0KQEAgLTE1Niw5ICsxNTYsOSBAQCB2
b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTQzOAog
fQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Omxhc3RQb3Np
dGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6bGFzdFBvc2l0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9sYXN0UG9zaXRpb24uZ2V0
KCk7CisgICAgcmV0dXJuIG1fbGFzdFBvc2l0aW9uOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6YXN5bmNVcGRhdGVDb250cm9sbGVyKCkKQEAgLTE3Miw5ICsxNzIsOSBAQCB2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoKQogewogICAgIEFT
U0VSVChtX2NvbnRyb2xsZXIpOwogCi0gICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7Cisg
ICAgaWYgKG1fbGFzdFBvc2l0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9oYXNFcnJvcik7Ci0g
ICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFzdFBvc2l0aW9uLmdldCgp
KTsKKyAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlvbkNoYW5nZWQoKm1fbGFzdFBvc2l0aW9u
KTsKICAgICB9IGVsc2UgaWYgKG1faGFzRXJyb3IpIHsKICAgICAgICAgYXV0byBnZW9sb2NhdGlv
RXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRp
b25VbmF2YWlsYWJsZSwgbV9lcnJvck1lc3NhZ2UpOwogICAgICAgICBtX2NvbnRyb2xsZXItPmVy
cm9yT2NjdXJyZWQoZ2VvbG9jYXRpb0Vycm9yLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDg1ZmMwMzgw
NjE0ZjRjZGMzMjRiYWY1ZmExYTY1MjUxOTRhMzY2MGIuLmZjMWI1MWQ3ZjcxMGZjMzg2MjFlZGNj
NzZlNjA0ZmM3NmRhYTEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtMzIsNiArMzIsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDAsNyArNDEsNiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7Ci1jbGFzcyBHZW9sb2Nh
dGlvblBvc2l0aW9uOwogCiAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIGluIFdlYkNvcmUu
IEl0IHNob3VsZCBiZSBtb3ZlZCB0byBXZWJLaXQuCiAvLyBQcm92aWRlcyBhIG1vY2sgb2JqZWN0
IGZvciB0aGUgZ2VvbG9jYXRpb24gY2xpZW50LgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgc2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRy
b2xsZXIqKTsKIAotICAgIHZvaWQgc2V0UG9zaXRpb24oUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRp
b24+JiYpOworICAgIHZvaWQgc2V0UG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlvbiYmKTsKICAg
ICB2b2lkIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSk7CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51
bWJlck9mUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShi
b29sKSBvdmVycmlkZTsKLSAgICBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBv
dmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IGxhc3RQb3Np
dGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9u
Jikgb3ZlcnJpZGU7CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
RXJyb3IoKTsKIAogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwotICAg
IFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwogICAgIGJvb2wgbV9o
YXNFcnJvcjsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAgICAgVGltZXIgbV9jb250cm9s
bGVyVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCmluZGV4IGJiZjlmYTU0Y2EzYzgzNjNkZGU1NTBiMzhjYjE3ZmY4OGFmYTlkZjMuLjNm
MTU1OGI3NTJiZWY4YzkyYjQxNjk2ZmQ0NmEwYzA4MWI1YmJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zMCwzNCArMzAsMTUg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdl
b2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3Vi
bGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0
dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBw
cm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCi17Ci0gICAgbV9kYXRhLnRpbWVzdGFtcCA9IHRp
bWVzdGFtcDsKLSAgICBtX2RhdGEubGF0aXR1ZGUgPSBsYXRpdHVkZTsKLSAgICBtX2RhdGEubG9u
Z2l0dWRlID0gbG9uZ2l0dWRlOwotICAgIG1fZGF0YS5hY2N1cmFjeSA9IGFjY3VyYWN5OwotICAg
IG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGUgPSBwcm92aWRlc0FsdGl0dWRlOwotICAgIG1fZGF0
YS5hbHRpdHVkZSA9IGFsdGl0dWRlOwotICAgIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1
cmFjeSA9IHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeTsKLSAgICBtX2RhdGEuYWx0aXR1ZGVBY2N1
cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7Ci0gICAgbV9kYXRhLmNhblByb3ZpZGVIZWFkaW5nID0g
cHJvdmlkZXNIZWFkaW5nOwotICAgIG1fZGF0YS5oZWFkaW5nID0gaGVhZGluZzsKLSAgICBtX2Rh
dGEuY2FuUHJvdmlkZVNwZWVkID0gcHJvdmlkZXNTcGVlZDsKLSAgICBtX2RhdGEuc3BlZWQgPSBz
cGVlZDsKLX0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCitSZWY8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBn
ZW9sb2NhdGlvblBvc2l0aW9uKQogeworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24oV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkpOwogfQogCi12b2lk
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OkRhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgSVBDOjpTaW1wbGVBcmd1bWVudENvZGVyPFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OkRhdGE+OjplbmNvZGUoZW5jb2RlciwgKnRoaXMpOwotfQotCi1ib29sIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIERh
dGEmIGRhdGEpCitXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bigpCiB7Ci0gICAgcmV0dXJuIElQQzo6U2ltcGxlQXJndW1lbnRDb2RlcjxXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpEYXRhPjo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uaAppbmRleCAxZGQ3OTg5YmNjMDNkNDAwMDBkY2Q5Y2MyNjk0Y2JhYmNmZmU0NjAxLi40MThh
YzM2MzE0N2U0NDA5ZTQyZGZmYzFhZDgxYjE0YjFjNTI4ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFdlYkdlb2xvY2F0aW9uUG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9HZW9sb2NhdGlvblBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM4LDU2ICszOSwyOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okdlb2xvY2F0aW9uUG9zaXRpb24+IHsKIHB1Ymxp
YzoKLSAgICBzdHJ1Y3QgRGF0YSB7Ci0gICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgRGF0YSYp
OwotCi0gICAgICAgIGRvdWJsZSB0aW1lc3RhbXA7Ci0gICAgICAgIGRvdWJsZSBsYXRpdHVkZTsK
LSAgICAgICAgZG91YmxlIGxvbmdpdHVkZTsKLSAgICAgICAgZG91YmxlIGFjY3VyYWN5OwotCi0g
ICAgICAgIGRvdWJsZSBhbHRpdHVkZTsKLSAgICAgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7
Ci0gICAgICAgIGRvdWJsZSBoZWFkaW5nOwotICAgICAgICBkb3VibGUgc3BlZWQ7Ci0KLSAgICAg
ICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGU7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0
dWRlQWNjdXJhY3k7Ci0gICAgICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmc7Ci0gICAgICAgIGJv
b2wgY2FuUHJvdmlkZVNwZWVkOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IGNyZWF0ZShkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBk
b3VibGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0
aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29s
IHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24odGltZXN0YW1wLCBsYXRpdHVkZSwgbG9u
Z2l0dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0
aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5n
LCBwcm92aWRlc1NwZWVkLCBzcGVlZCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24+IGNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpOwog
CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpOwogCi0gICAgZG91YmxlIHRp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS50aW1lc3RhbXA7IH0KLSAgICBkb3VibGUg
bGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubGF0aXR1ZGU7IH0KLSAgICBkb3VibGUg
bG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmxvbmdpdHVkZTsgfQotICAgIGRvdWJs
ZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hY2N1cmFjeTsgfQorICAgIGRvdWJs
ZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi50aW1lc3RhbXA7IH0K
KyAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5sYXRp
dHVkZTsgfQorICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3Np
dGlvbi5sb25naXR1ZGU7IH0KKyAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBt
X2NvcmVQb3NpdGlvbi5hY2N1cmFjeTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRp
dHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZVBvc2l0aW9uLmFsdGl0dWRlOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2Nv
cmVQb3NpdGlvbi5hbHRpdHVkZUFjY3VyYWN5OyB9CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvcmVQb3NpdGlvbi5oZWFkaW5nOyB9CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9jb3JlUG9zaXRp
b24uc3BlZWQ7IH0KIAotICAgIGJvb2wgY2FuUHJvdmlkZUFsdGl0dWRlKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmNhblByb3ZpZGVBbHRpdHVkZTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5hbHRpdHVkZTsgfQotCi0gICAgYm9vbCBjYW5Qcm92aWRlQWx0
aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVB
Y2N1cmFjeTsgfQotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmFsdGl0dWRlQWNjdXJhY3k7IH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZUhlYWRpbmco
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuY2FuUHJvdmlkZUhlYWRpbmc7IH0KLSAgICBkb3VibGUg
aGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5oZWFkaW5nOyB9Ci0KLSAgICBib29sIGNh
blByb3ZpZGVTcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5jYW5Qcm92aWRlU3BlZWQ7IH0K
LSAgICBkb3VibGUgc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc3BlZWQ7IH0KLQotICAg
IGNvbnN0IERhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBX
ZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiBjb3JlUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NvcmVQb3NpdGlvbjsgfQogCiBwcml2YXRlOgotICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBi
b29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJv
b2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBk
b3VibGUgc3BlZWQpOworICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uUG9zaXRpb24oV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGdlb2xvY2F0aW9uUG9zaXRpb24pCisgICAgICAgIDog
bV9jb3JlUG9zaXRpb24oV1RGTW92ZShnZW9sb2NhdGlvblBvc2l0aW9uKSkKKyAgICB7CisgICAg
fQogCi0gICAgRGF0YSBtX2RhdGE7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiBt
X2NvcmVQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAK
aW5kZXggNTdmYmRjZmQzZWU2ZTk5OWQyZDVkM2IxZDAzNTk1MjIwYWZkYzRlZC4uMzI0MWQ3Mjdk
M2M1NzE2Mjk1NjNiMWExOTdiYjkyNTM3Y2RmMmE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC00Myw2
ICs0MywxNiBAQCBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9u
Q3JlYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYQogCiBXS0dlb2xvY2F0aW9uUG9zaXRp
b25SZWYgV0tHZW9sb2NhdGlvblBvc2l0aW9uQ3JlYXRlX2IoZG91YmxlIHRpbWVzdGFtcCwgZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJv
dmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3Vi
bGUgaGVhZGluZywgYm9vbCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCiB7Ci0gICAgYXV0
byBwb3NpdGlvbiA9IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZSh0aW1lc3RhbXAsIGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRpdHVkZSwg
cHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBhbHRpdHVkZUFjY3VyYWN5LCBwcm92aWRlc0hlYWRp
bmcsIGhlYWRpbmcsIHByb3ZpZGVzU3BlZWQsIHNwZWVkKTsKKyAgICBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uIGNvcmVQb3NpdGlvbiB7IHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVk
ZSwgYWNjdXJhY3kgfTsKKyAgICBpZiAocHJvdmlkZXNBbHRpdHVkZSkKKyAgICAgICAgY29yZVBv
c2l0aW9uLmFsdGl0dWRlID0gYWx0aXR1ZGU7CisgICAgaWYgKHByb3ZpZGVzQWx0aXR1ZGVBY2N1
cmFjeSkKKyAgICAgICAgY29yZVBvc2l0aW9uLmFsdGl0dWRlQWNjdXJhY3kgPSBhbHRpdHVkZUFj
Y3VyYWN5OworICAgIGlmIChwcm92aWRlc0hlYWRpbmcpCisgICAgICAgIGNvcmVQb3NpdGlvbi5o
ZWFkaW5nID0gaGVhZGluZzsKKyAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAgICAgY29yZVBv
c2l0aW9uLnNwZWVkID0gc3BlZWQ7CisKKyAgICBhdXRvIHBvc2l0aW9uID0gV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAgICAgcmV0dXJuIHRv
QVBJKCZwb3NpdGlvbi5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA4
ZWVmYmVjYzc0Y2NjYjE3NDA5YWNmYTE3MjhjOWJiOTMwOTI2YmZhLi42ZjgxOWRmMTQ3NTc2ZWZl
NTk1Yjg5N2MwZGIyZGRjMzM0N2YxOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtMzks
MjkgKzM5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKXBvc2l0aW9uV2l0aExvY2F0aW9uOihDTExvY2F0
aW9uICopbG9jYXRpb24KICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgYm9vbCBjYW5Qcm92aWRlQWx0aXR1ZGUgPSB0cnVlOwotICAgIGJvb2wgY2FuUHJvdmlk
ZUFsdGl0dWRlQWNjdXJhY3kgPSB0cnVlOwotICAgIGRvdWJsZSBhbHRpdHVkZSA9IGxvY2F0aW9u
LmFsdGl0dWRlOwotICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5ID0gbG9jYXRpb24udmVydGlj
YWxBY2N1cmFjeTsKLSAgICBpZiAoYWx0aXR1ZGVBY2N1cmFjeSA8IDAuMCkgewotICAgICAgICBj
YW5Qcm92aWRlQWx0aXR1ZGUgPSBmYWxzZTsKLSAgICAgICAgY2FuUHJvdmlkZUFsdGl0dWRlQWNj
dXJhY3kgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGNhblByb3ZpZGVTcGVlZCA9IHRydWU7
Ci0gICAgZG91YmxlIHNwZWVkID0gbG9jYXRpb24uc3BlZWQ7Ci0gICAgaWYgKHNwZWVkIDwgMC4w
KQotICAgICAgICBjYW5Qcm92aWRlU3BlZWQgPSBmYWxzZTsKLQotICAgIGJvb2wgY2FuUHJvdmlk
ZUhlYWRpbmcgPSB0cnVlOwotICAgIGRvdWJsZSBoZWFkaW5nID0gbG9jYXRpb24uY291cnNlOwot
ICAgIGlmIChoZWFkaW5nIDwgMC4wKQotICAgICAgICBjYW5Qcm92aWRlSGVhZGluZyA9IGZhbHNl
OwotCi0gICAgQ0xMb2NhdGlvbkNvb3JkaW5hdGUyRCBjb29yZGluYXRlID0gbG9jYXRpb24uY29v
cmRpbmF0ZTsKLSAgICBkb3VibGUgdGltZXN0YW1wID0gbG9jYXRpb24udGltZXN0YW1wLnRpbWVJ
bnRlcnZhbFNpbmNlMTk3MDsKLQotICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjpjcmVhdGUodGltZXN0YW1wLCBjb29yZGluYXRlLmxhdGl0dWRlLCBjb29yZGluYXRl
LmxvbmdpdHVkZSwgbG9jYXRpb24uaG9yaXpvbnRhbEFjY3VyYWN5LCBjYW5Qcm92aWRlQWx0aXR1
ZGUsIGFsdGl0dWRlLCBjYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFj
eSwgY2FuUHJvdmlkZUhlYWRpbmcsIGhlYWRpbmcsIGNhblByb3ZpZGVTcGVlZCwgc3BlZWQpLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbd3JhcHBlcihXZWJHZW9sb2NhdGlv
blBvc2l0aW9uOjpjcmVhdGUoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiB7IGxvY2F0aW9u
IH0pLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25Qcm92aWRlci5jcHAKaW5kZXggZGI3N2YzODkwYzU1ZDM2NjE4NjI2YTNlYmNlNWRh
ZTk2ZWM0ZTBlMi4uMDA3ZDExMWJhZDA3YjAzMGNiOWE4MGEzN2FhY2M5NWIyNWY5M2M0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRp
b25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKQEAgLTgxLDcgKzgxLDEwIEBAIHZvaWQgV2ViS2l0
R2VvbG9jYXRpb25Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKCkKIAogdm9pZCBXZWJLaXRHZW9sb2Nh
dGlvblByb3ZpZGVyOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQoaW50IHRpbWVzdGFtcCwgZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3kpCiB7Ci0gICAgUmVmUHRyPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKHRp
bWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIHRydWUsIGFsdGl0dWRlLCB0
cnVlLCBhbHRpdHVkZUFjY3VyYWN5LCBmYWxzZSwgMCwgZmFsc2UsIDApOworICAgIFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24gY29yZVBvc2l0aW9uIHsgc3RhdGljX2Nhc3Q8ZG91YmxlPih0
aW1lc3RhbXApLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9OworICAgIGNvcmVQb3Np
dGlvbi5hbHRpdHVkZSA9IGFsdGl0dWRlOworICAgIGNvcmVQb3NpdGlvbi5hbHRpdHVkZUFjY3Vy
YWN5ID0gYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICBSZWZQdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gcG9zaXRpb24gPSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoV1RGTW92ZShjb3Jl
UG9zaXRpb24pKTsKICAgICBtX2dlb2xvY2F0aW9uTWFuYWdlci0+cHJvdmlkZXJEaWRDaGFuZ2VQ
b3NpdGlvbihwb3NpdGlvbi5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA4N2IyOTY4NmJi
ZTU2ZmZlMzRlZTczNDljMWY4YTkwYmY2OGEyMDE5Li41MmIwMTFmNWRiYWM2Y2Q2YjcwNzNiODIw
NTQ2ZmI2MjZlMjFhNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFu
YWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkwLDcgKzkxLDcgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlv
bihXZWJHZW9sb2NhdGlvblBvc2l0aW8KICAgICBpZiAoIXByb2Nlc3NQb29sKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdl
czo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpEaWRDaGFuZ2VQb3NpdGlvbihwb3NpdGlvbi0+ZGF0
YSgpKSk7CisgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5jb3JlUG9z
aXRpb24oKSkpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92
aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJv
dmlkZXJJT1MubW0KaW5kZXggYzM3YjMzMTQxM2ZiM2UyYWYzNmFjMjAwNmMxZTM5Mjg1NGY3NDdh
YS4uODkyZGVlMTNlMTY5M2I2OGM3YzMxNTZiMzI0ZDI2ZWY4MTg1MTRlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCkBAIC03NCwxMSArNzQsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJV2lu
ZG93Kik7CiB9OwogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBr
aXQoV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24pCi17Ci0gICAgcmV0dXJu
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShwb3NpdGlvbi0+dGltZXN0YW1wKCksIHBv
c2l0aW9uLT5sYXRpdHVkZSgpLCBwb3NpdGlvbi0+bG9uZ2l0dWRlKCksIHBvc2l0aW9uLT5hY2N1
cmFjeSgpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZUFsdGl0dWRlKCksIHBvc2l0aW9uLT5hbHRpdHVk
ZSgpLCBwb3NpdGlvbi0+Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3koKSwgcG9zaXRpb24tPmFs
dGl0dWRlQWNjdXJhY3koKSwgcG9zaXRpb24tPmNhblByb3ZpZGVIZWFkaW5nKCksIHBvc2l0aW9u
LT5oZWFkaW5nKCksIHBvc2l0aW9uLT5jYW5Qcm92aWRlU3BlZWQoKSwgcG9zaXRpb24tPnNwZWVk
KCkpOwotfQotCiBzdHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW47CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IGZyYW1lOwpA
QCAtMzA0LDEwICsyOTksMTAgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25EZW5p
ZWQKICAgICBbX2xpc3RlbmVyIGdlb2xvY2F0aW9uQXV0aG9yaXphdGlvbkRlbmllZF07CiB9CiAK
LS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uICop
Y29yZVBvc2l0aW9uCistICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbiYmKWNvcmVQb3NpdGlvbgogewogICAgIEFTU0VSVChfbGlzdGVuZXIpOwotICAg
IGF1dG8gcG9zaXRpb24gPSBraXQoY29yZVBvc2l0aW9uKTsKKyAgICBhdXRvIHBvc2l0aW9uID0g
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29yZVBvc2l0aW9uKSk7CiAg
ICAgW19saXN0ZW5lciBwb3NpdGlvbkNoYW5nZWQ6d3JhcHBlcihwb3NpdGlvbi5nZXQoKSldOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGQzNmU2OGQ1YTg2NTUyNjgyZjE2
MzI2OTVlMWNiOTYyNTgzZDc3NDQuLjk1Njc1MTgwYzQzYTBjMTY0ZWIyYTUwNGJjZjAxMDMyY2Y4
Nzc1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC05MSwxOSArOTEsMTcgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2Uo
V2ViUGFnZSYgcGFnZSwgYm9vbCBlbmEKICAgICAgICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpT
ZXRFbmFibGVIaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5U2hvdWxkQmVFbmFibGVkKSwgMCk7CiB9
CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpEYXRhJiBkYXRhKQordm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IEdlb2xvY2F0aW9uUG9zaXRpb24mIHBvc2l0
aW9uKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25Q
b3NpdGlvbj4gcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUoZGF0YS50aW1l
c3RhbXAsIGRhdGEubGF0aXR1ZGUsIGRhdGEubG9uZ2l0dWRlLCBkYXRhLmFjY3VyYWN5LCBkYXRh
LmNhblByb3ZpZGVBbHRpdHVkZSwgZGF0YS5hbHRpdHVkZSwgZGF0YS5jYW5Qcm92aWRlQWx0aXR1
ZGVBY2N1cmFjeSwgZGF0YS5hbHRpdHVkZUFjY3VyYWN5LCBkYXRhLmNhblByb3ZpZGVIZWFkaW5n
LCBkYXRhLmhlYWRpbmcsIGRhdGEuY2FuUHJvdmlkZVNwZWVkLCBkYXRhLnNwZWVkKTsKLQogICAg
IFZlY3RvcjxSZWZQdHI8V2ViUGFnZT4+IHdlYlBhZ2VDb3B5OwogICAgIGNvcHlUb1ZlY3Rvciht
X3BhZ2VTZXQsIHdlYlBhZ2VDb3B5KTsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiB3ZWJQYWdlQ29w
eSkgewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAgIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBv
c2l0aW9uLmdldCgpKTsKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShw
YWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uKTsKICAgICB9CiAjZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwog
I2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
CmluZGV4IGQxZjNjYjczNjAwMzFjZGU5ZDI0ZmJjNDVmMjlmNTBjYzc5MDZlNmIuLjRmNDQ3YWYw
YTM3NDY1NDM4ZjVmMjliMTc4ZjA3YjY2MjM3NzNlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR2VvbG9j
YXRpb247CitjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVXBkYXRpbmcoKSBjb25z
dCB7IHJldHVybiAhbV9wYWdlU2V0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaXNIaWdoQWNjdXJh
Y3lFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gIW1faGlnaEFjY3VyYWN5UGFnZVNldC5pc0VtcHR5
KCk7IH0KIAotICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6RGF0YSYpOworICAgIHZvaWQgZGlkQ2hhbmdlUG9zaXRpb24oY29uc3QgV2ViQ29y
ZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiYpOwogICAgIHZvaWQgZGlkRmFpbFRvRGV0ZXJtaW5lUG9z
aXRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogI2lmIFBMQVRGT1JNKElPUykKICAg
ICB2b2lkIHJlc2V0UGVybWlzc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDI3MTU0ZjVhMzZlZTMwMzIxYmE1ZTFkOWUyNzJlODQwY2FjNzcx
ZTkuLjk3ZGEyODU2YmQyOWE2ZTA1Y2Y3NzBmNWNjMjllNzc2OWI2ZDQyOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgewotICAgIERp
ZENoYW5nZVBvc2l0aW9uKFdlYktpdDo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6RGF0YSBwb3Np
dGlvbik7CisgICAgRGlkQ2hhbmdlUG9zaXRpb24oV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlv
biBwb3NpdGlvbik7CiAgICAgRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oU3RyaW5nIGVycm9y
TWVzc2FnZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJlc2V0UGVybWlzc2lvbnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IDNiYzhkZmNiMTQwNmI3OWU4NzYwNGY1
MDkzNTM2OGE1OTQyZDQ3Y2UuLjg5MTMxM2NlOWZhYTc2M2M1MTU2OWNjZTlmY2I5ODVhNGI0MzI4
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApAQCAtNjQsMTAgKzY0LDEwIEBA
IHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGVu
YWJsZWQpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJHZW9sb2Nh
dGlvbk1hbmFnZXI+KCktPnNldEVuYWJsZUhpZ2hBY2N1cmFjeUZvclBhZ2UobV9wYWdlLCBlbmFi
bGVkKTsKIH0KIAotR2VvbG9jYXRpb25Qb3NpdGlvbiogV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxh
c3RQb3NpdGlvbigpCitzdGQ6Om9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xv
Y2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcy4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihHZW9sb2NhdGlvbiYgZ2Vv
bG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDE5Nzc3MTExM2E2OWQ1
NDdiNjM5MTRiMzAzNzMyOTJmNDcxY2FmMDIuLmNmZThkNDI0ODU5ZDhmMTE3MGZhODllNzY5NDA2
MGI3ODIwZDM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSBvdmVycmlkZTsKIAotICAgIFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9uKCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9s
b2NhdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
TWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaAppbmRl
eCA4MDk1ZDUzYzc4MmI0MTkxNmI1M2UwZjhkNmIxMzIxZmRkMzBhYjA1Li4wNDkwZmNmYjFkYjA0
YmY2YjAyNGU4ZTQwOTY3NTcwZjdjNWFjMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJv
dmlkZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogLSAo
dm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVkOwogLSAodm9pZClnZW9sb2NhdGlv
bkF1dGhvcml6YXRpb25EZW5pZWQ7CiAKLS0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJDb3Jl
OjpHZW9sb2NhdGlvblBvc2l0aW9uKilwb3NpdGlvbjsKKy0gKHZvaWQpcG9zaXRpb25DaGFuZ2Vk
OihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpcG9zaXRpb247CiAtICh2b2lkKWVycm9y
T2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlOwogLSAodm9pZClyZXNldEdlb2xvY2F0
aW9uOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tCmluZGV4IGFlZDk1
NjIxYzc4NTFkMzU3MTQyMGMwYzYyNTE3ZmFiMjUwNTM2MDYuLmQ5ZjAzM2E3ZDcyMGExNGUxMTMy
MTY3MjBmNmYwYjYzODRlYTEzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L01pc2MvV2ViR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIu
bW0KQEAgLTE2NSwyOSArMTY1LDcgQEAgLSAodm9pZClsb2NhdGlvbk1hbmFnZXI6KENMTG9jYXRp
b25NYW5hZ2VyICopbWFuYWdlciBkaWRDaGFuZ2VBdXRob3JpemF0aW9uU3RhdHUKIAogLSAodm9p
ZClzZW5kTG9jYXRpb246KENMTG9jYXRpb24gKiluZXdMb2NhdGlvbgogewotICAgIC8vIE5vcm1h
bGl6ZS4KLSAgICBib29sIGNhblByb3ZpZGVBbHRpdHVkZSA9IHRydWU7Ci0gICAgYm9vbCBjYW5Q
cm92aWRlQWx0aXR1ZGVBY2N1cmFjeSA9IHRydWU7Ci0gICAgZG91YmxlIGFsdGl0dWRlID0gbmV3
TG9jYXRpb24uYWx0aXR1ZGU7Ci0gICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3kgPSBuZXdMb2Nh
dGlvbi52ZXJ0aWNhbEFjY3VyYWN5OwotICAgIGlmIChhbHRpdHVkZUFjY3VyYWN5IDwgMC4wKSB7
Ci0gICAgICAgIGNhblByb3ZpZGVBbHRpdHVkZSA9IGZhbHNlOwotICAgICAgICBjYW5Qcm92aWRl
QWx0aXR1ZGVBY2N1cmFjeSA9IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgY2FuUHJvdmlkZVNw
ZWVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc3BlZWQgPSBuZXdMb2NhdGlvbi5zcGVlZDsKLSAgICBp
ZiAoc3BlZWQgPCAwLjApCi0gICAgICAgIGNhblByb3ZpZGVTcGVlZCA9IGZhbHNlOwotCi0gICAg
Ym9vbCBjYW5Qcm92aWRlSGVhZGluZyA9IHRydWU7Ci0gICAgZG91YmxlIGhlYWRpbmcgPSBuZXdM
b2NhdGlvbi5jb3Vyc2U7Ci0gICAgaWYgKGhlYWRpbmcgPCAwLjApCi0gICAgICAgIGNhblByb3Zp
ZGVIZWFkaW5nID0gZmFsc2U7Ci0KLSAgICBkb3VibGUgdGltZXN0YW1wID0gW25ld0xvY2F0aW9u
LnRpbWVzdGFtcCB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdOwotICAgIFJlZlB0cjxHZW9sb2NhdGlv
blBvc2l0aW9uPiBnZW9sb2NhdGlvblBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3Jl
YXRlKHRpbWVzdGFtcCwgbmV3TG9jYXRpb24uY29vcmRpbmF0ZS5sYXRpdHVkZSwgbmV3TG9jYXRp
b24uY29vcmRpbmF0ZS5sb25naXR1ZGUsIG5ld0xvY2F0aW9uLmhvcml6b250YWxBY2N1cmFjeSwg
Y2FuUHJvdmlkZUFsdGl0dWRlLCBhbHRpdHVkZSwgY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ks
IGFsdGl0dWRlQWNjdXJhY3ksIGNhblByb3ZpZGVIZWFkaW5nLCBoZWFkaW5nLCBjYW5Qcm92aWRl
U3BlZWQsIHNwZWVkKTsKLSAgICBbX3Bvc2l0aW9uTGlzdGVuZXIgcG9zaXRpb25DaGFuZ2VkOmdl
b2xvY2F0aW9uUG9zaXRpb24uZ2V0KCldOworICAgIFtfcG9zaXRpb25MaXN0ZW5lciBwb3NpdGlv
bkNoYW5nZWQ6R2VvbG9jYXRpb25Qb3NpdGlvbiB7IG5ld0xvY2F0aW9uIH1dOwogfQogCiAtICh2
b2lkKWxvY2F0aW9uTWFuYWdlcjooQ0xMb2NhdGlvbk1hbmFnZXIgKiltYW5hZ2VyIGRpZFVwZGF0
ZUxvY2F0aW9uczooTlNBcnJheSAqKWxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDBk
NTNhZjAzODViYzQxODNhZjg2ODZiNmMzNzQzZGI1ZmM1YzE0OGEuLjFkMjgwYzFhY2Q1OTFlN2Mx
YWVjNjg5YWI3YTIzNDQ2ODNhYmI2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL01pc2MvV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KQEAgLTQ0LDcgKzQ0
LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24gKEludGVybmFsKQotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9u
OihSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjsK
Ky0gKGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooR2VvbG9jYXRpb25Qb3NpdGlvbiYm
KWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiAvLyBDb3JlTG9jYXRpb24gcnVucyBp
biB0aGUgbWFpbiB0aHJlYWQuIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MgbGl2ZXMgb24gdGhl
IFdlYlRocmVhZC4KQEAgLTM2MSw5ICszNjEsOSBAQCAtICh2b2lkKWdlb2xvY2F0aW9uQXV0aG9y
aXphdGlvbkRlbmllZAogICAgIH0pOwogfQogCi0tICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2Vi
Q29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiopcG9zaXRpb24KKy0gKHZvaWQpcG9zaXRpb25DaGFu
Z2VkOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpcG9zaXRpb24KIHsKLSAgICBSZXRh
aW5QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gd2ViUG9zaXRpb24gPSBhZG9wdE5TKFtbV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOnBv
c2l0aW9uXSk7CisgICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYlBvc2l0
aW9uID0gYWRvcHROUyhbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2Vv
bG9jYXRpb25Qb3NpdGlvbjpXVEZNb3ZlKHBvc2l0aW9uKV0pOwogICAgIFdlYlRocmVhZFJ1bihe
ewogICAgICAgICBbX3Byb3ZpZGVyIHBvc2l0aW9uQ2hhbmdlZDp3ZWJQb3NpdGlvbi5nZXQoKV07
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAzMzYwMjQ5MTBlYzE1MTg4
MmI2NGE4NmI5ODkwNTMwY2U5MjdlZmM4Li4yMGM0MzQzMTA3ODdhYmFkYjAyMjYwMzk1Yjc5MjA4
NzYzNzhiNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlIHsg
fQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRp
b24oKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24+IGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0UGVybWlz
c2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsUGVy
bWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24mKSBvdmVycmlkZSB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IDBjYjJiZTk5MWUxNzQ4OTkxMjQ5ZWRkMWJjOWZl
ZWY1NWFiZjNhODAuLjJlZjNkYjYyMzljMTk0NDVhMDc1MDgxNTMwZTgzYmNhNDAyNzFiZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0
aW9uKQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLUdlb2xvY2F0aW9uUG9z
aXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQorc3RkOjpvcHRpb25h
bDxHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9u
KCkKIHsKICAgICByZXR1cm4gY29yZShbW21fd2ViVmlldyBfZ2VvbG9jYXRpb25Qcm92aWRlcl0g
bGFzdFBvc2l0aW9uXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KaW5kZXggNDU2ZDRiYThiZGYwZTcx
NjQ0OTA3NTMyMWY5ZWRkNGYwODQ1ZGZhMC4uMzc0NTljNmI4NTg0N2M2MTM1YWE4NjFiNTE0YTEw
ZDY0YTg2YTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQpAQCAtMjYsMjQgKzI2LDI0IEBACiAjaW1w
b3J0ICJXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgiCiAKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9u
UG9zaXRpb25JbnRlcm5hbC5oIgotI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgotCiAjaW1wb3J0IDxX
ZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgor
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGlu
dGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwgOiBOU09iamVjdAogewogQHB1
YmxpYwotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBfcG9zaXRpb247CisgICAgR2Vv
bG9jYXRpb25Qb3NpdGlvbiBfcG9zaXRpb247CiB9CiAKLS0gKGlkKWluaXRXaXRoQ29yZUdlb2xv
Y2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYmKWNvcmVHZW9sb2Nh
dGlvblBvc2l0aW9uOworLSAoaWQpaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjooR2Vv
bG9jYXRpb25Qb3NpdGlvbiYmKWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsCiAKLS0gKGlkKWluaXRX
aXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246KFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiYm
KWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uCistIChpZClpbml0V2l0aENvcmVHZW9sb2NhdGlvblBv
c2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xvY2F0aW9uUG9zaXRpb24KIHsK
ICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTU2LDkgKzU2LDEx
IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24KIAotR2Vv
bG9jYXRpb25Qb3NpdGlvbiogY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikK
K3N0ZDo6b3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbj4gY29yZShXZWJHZW9sb2NhdGlvblBv
c2l0aW9uICpwb3NpdGlvbikKIHsKLSAgICByZXR1cm4gcG9zaXRpb24gPyBwb3NpdGlvbi0+X2lu
dGVybmFsLT5fcG9zaXRpb24uZ2V0KCkgOiAwOworICAgIGlmICghcG9zaXRpb24pCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHBvc2l0aW9uLT5faW50ZXJuYWwtPl9w
b3NpdGlvbjsKIH0KIAogLSAoaWQpaW5pdFdpdGhUaW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAg
bGF0aXR1ZGU6KGRvdWJsZSlsYXRpdHVkZSBsb25naXR1ZGU6KGRvdWJsZSlsb25naXR1ZGUgYWNj
dXJhY3k6KGRvdWJsZSlhY2N1cmFjeQpAQCAtNjYsMTEgKzY4LDExIEBAIC0gKGlkKWluaXRXaXRo
VGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIGxhdGl0dWRlOihkb3VibGUpbGF0aXR1ZGUgbG9u
Z2l0dWRlOihkCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgX2ludGVybmFsID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9u
SW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZUdlb2xvY2F0aW9uUG9zaXRpb246R2VvbG9jYXRp
b25Qb3NpdGlvbjo6Y3JlYXRlKHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJh
Y3kpXTsKKyAgICBfaW50ZXJuYWwgPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbCBh
bGxvY10gaW5pdFdpdGhDb3JlR2VvbG9jYXRpb25Qb3NpdGlvbjpHZW9sb2NhdGlvblBvc2l0aW9u
IHsgdGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSB9XTsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihSZWZQdHI8
R2VvbG9jYXRpb25Qb3NpdGlvbj4mJiljb3JlR2VvbG9jYXRpb25Qb3NpdGlvbgorLSAoaWQpaW5p
dFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xv
Y2F0aW9uUG9zaXRpb24KIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2Vs
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oCmluZGV4IGY1NGU2NmI4MWUxOTliNDQ0
MDk1ODA2ZDA0YjExMDNmMjZkYTUwOTIuLjI2YzMyYjEyNmRmMjQzMjVmZGNlOTliN2I4NmE4Yzc1
OTgyY2Q3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaApAQCAtMjQsMTAgKzI0
LDExIEBACiAgKi8KIAogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2ltcG9y
dCA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHZW9s
b2NhdGlvblBvc2l0aW9uOwogfQogCi1XZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBjb3Jl
KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKik7CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdlb2xv
Y2F0aW9uUG9zaXRpb24+IGNvcmUoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IGJhMjg2YzhkOTc1OTcyODhkYjhlZDE4NWIyMDhm
YTk3ODMwMGQxMGUuLmJhM2YzNDFlZDFlZDcxZmU5YTUwZjNmYTQ1YWY0NTkxZjM5NDM3NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTY0LDE0ICs2NCwxNCBAQCB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQogICAgIHByb3ZpZGVyLT51bnJlZ2lz
dGVyV2ViVmlldyhtX3dlYlZpZXcuZ2V0KCkpOwogfQogCi1HZW9sb2NhdGlvblBvc2l0aW9uKiBX
ZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKK3N0ZDo6b3B0aW9uYWw8R2VvbG9j
YXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25DbGllbnQ6Omxhc3RQb3NpdGlvbigpCiB7CiAg
ICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcjsKICAgICBpZiAoRkFJ
TEVEKG1fd2ViVmlldy0+Z2VvbG9jYXRpb25Qcm92aWRlcigmcHJvdmlkZXIpKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQ09NUHRyPElXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbjsKICAgICBpZiAoRkFJTEVEKHByb3ZpZGVyLT5s
YXN0UG9zaXRpb24oJnBvc2l0aW9uKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBjb3JlKHBvc2l0aW9uLmdldCgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggN2IxYmY0ODdhYWM3MDMzNGUzNTE1ZDczNDFl
MjY2MGExN2RlMDE2Yi4uZjYyZjVjMGRlMTNhZjgzM2U2Y2I4NjdmNzMyZWY1NTk1ZmI5ODY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpIGZp
bmFsOwogICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpIGZpbmFsIHsgfQotICAg
IFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4gbGFzdFBvc2l0aW9u
KCkgZmluYWw7CiAKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0
aW9uJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpH
ZW9sb2NhdGlvbiYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAppbmRleCA0ZDYzMTg1NjExMDQ1ZDAzZjYzYzc2MDg5
NTRjOTk1NmM2M2ZhNWZlLi4wZDZiNzg0ZTA3NTAzMTA4YzAzODY3MDU4ZTE2YjM5NWNiZjhmZWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcApAQCAtODEsMTggKzgxLDE4IEBAIFVMT05HIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246
OlJlbGVhc2UoKQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmluaXRXaXRoVGlt
ZXN0YW1wKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVk
ZSwgZG91YmxlIGFjY3VyYWN5KQogewotICAgIG1fcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUodGltZXN0YW1wLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7Cisg
ICAgbV9wb3NpdGlvbiA9IEdlb2xvY2F0aW9uUG9zaXRpb24geyB0aW1lc3RhbXAsIGxhdGl0dWRl
LCBsb25naXR1ZGUsIGFjY3VyYWN5IH07CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUdlb2xvY2F0
aW9uUG9zaXRpb24qIGNvcmUoSVdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQorc3Rk
OjpvcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0aW9uPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0
aW9uKiBwb3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENPTVB0cjxXZWJHZW9sb2NhdGlv
blBvc2l0aW9uPiB3ZWJHZW9sb2NhdGlvblBvc2l0aW9uKFF1ZXJ5LCBwb3NpdGlvbik7CiAgICAg
aWYgKCF3ZWJHZW9sb2NhdGlvblBvc2l0aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB3ZWJHZW9sb2NhdGlvblBvc2l0aW9u
LT5pbXBsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmgKaW5kZXggNzk4YWI4MDg3ZDljN2VmMGY4Y2QxMWFmNjM4OGFmMzk4ZWY4OTJj
Ny4uNmNkMTVjODljYmI5MDE3NGY0MzA4YTUzZjcyYjYxMzVmY2JjMDNlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaApAQCAtMjcsMTAg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9u
OwotfTsKKyNpbmNsdWRlIDxXZWJDb3JlL0dlb2xvY2F0aW9uUG9zaXRpb24uaD4KIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiA6IHB1YmxpYyBJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiB7
CiBwdWJsaWM6CkBAIC00OCwxMyArNDUsMTMgQEAgcHVibGljOgogICAgIC8vIElXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluaXRX
aXRoVGltZXN0YW1wKGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxv
bmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKIAotICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24qIGltcGwoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLmdldCgpOyB9CisgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiYgaW1wbCgpIGNv
bnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KIAogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNv
dW50IHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uPiBtX3Bv
c2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbj4g
bV9wb3NpdGlvbjsKIH07CiAKLVdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGNvcmUoSVdl
Ykdlb2xvY2F0aW9uUG9zaXRpb24qKTsKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2VvbG9jYXRp
b25Qb3NpdGlvbj4gY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiopOwogCiAjZW5kaWYgLy8g
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMDVhZGJlYzUzM2ZlOTIzMzIxMzFmZGYwOTBlMzI2NjY3M2Jh
ZTg0Ny4uZTAyMjFlNWJhNjMzOTM5NGQ3MzAyN2U0YjA3NTNlMWQ2YWRhOTIzMyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEwLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
TW9kZXJuaXplIEdlb2xvY2F0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgorCiAyMDE3
LTEwLTEwICBKb2FubWFyaWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBB
WDogW0FUS10gQVJJQSBmb3JtIHJvbGUgc2hvdWxkIGJlIG1hcHBlZCB0byBBVEtfUk9MRV9MQU5E
TUFSSzsgbm90IEFUS19ST0xFX0ZPUk0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0KaW5kZXggYTYxMTBkOTE2NjFjYjVlNmJlOGM0NGFhNzM3ZDU3MjhlMDdjY2E1Yi4u
NjMzZTQ3NzgxOWY2YmM2NjMyZWU5NmU0NzExNmNlOTliOGMzZTAxMyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEyNSw3ICsxMjUsNyBAQCBAZW5kCiAj
ZW5kaWYKIAogQGludGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvc2l0aW9uIChJbnRlcm5hbCkKLS0g
KGlkKWluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooUmVmUHRyPFdlYkNvcmU6Okdlb2xvY2F0
aW9uUG9zaXRpb24+KWNvcmVHZW9sb2NhdGlvblBvc2l0aW9uOworLSAoaWQpaW5pdFdpdGhHZW9s
b2NhdGlvblBvc2l0aW9uOihXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uJiYpY29yZUdlb2xv
Y2F0aW9uUG9zaXRpb247CiBAZW5kCiAKIFRlc3RSdW5uZXI6On5UZXN0UnVubmVyKCkKQEAgLTQ0
OSw4ICs0NDksMTYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICAgICAgLy8gVGVzdCB0
aGUgZXhwb3NlZCBBUEkuCiAgICAgICAgIHBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFtcDpjdXJyZW50VGltZSgpIGxhdGl0dWRlOmxhdGl0
dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNjdXJhY3ldOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIGF1dG8gY29yZUdlb2xvY2F0aW9uUG9zaXRpb24gPSBXZWJDb3JlOjpHZW9sb2Nh
dGlvblBvc2l0aW9uOjpjcmVhdGUoY3VycmVudFRpbWUoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwg
YWNjdXJhY3ksIHByb3ZpZGVzQWx0aXR1ZGUsIGFsdGl0dWRlLCBwcm92aWRlc0FsdGl0dWRlQWNj
dXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIHByb3ZpZGVzSGVhZGluZywgaGVhZGluZywgcHJvdmlk
ZXNTcGVlZCwgc3BlZWQpOwotICAgICAgICBwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbiBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvblBvc2l0aW9uOihXVEZNb3ZlKGNvcmVHZW9s
b2NhdGlvblBvc2l0aW9uKSldOworICAgICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
IGdlb2xvY2F0aW9uUG9zaXRpb24geyBjdXJyZW50VGltZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRl
LCBhY2N1cmFjeSB9OworICAgICAgICBpZiAocHJvdmlkZXNBbHRpdHVkZSkKKyAgICAgICAgICAg
IGdlb2xvY2F0aW9uUG9zaXRpb24uYWx0aXR1ZGUgPSBhbHRpdHVkZTsKKyAgICAgICAgaWYgKHBy
b3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAgICAgIGdlb2xvY2F0aW9uUG9zaXRpb24u
YWx0aXR1ZGVBY2N1cmFjeSA9IGFsdGl0dWRlQWNjdXJhY3k7CisgICAgICAgIGlmIChwcm92aWRl
c0hlYWRpbmcpCisgICAgICAgICAgICBnZW9sb2NhdGlvblBvc2l0aW9uLmhlYWRpbmcgPSBoZWFk
aW5nOworICAgICAgICBpZiAocHJvdmlkZXNTcGVlZCkKKyAgICAgICAgICAgIGdlb2xvY2F0aW9u
UG9zaXRpb24uc3BlZWQgPSBzcGVlZDsKKyAgICAgICAgcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoR2VvbG9jYXRpb25Qb3NpdGlvbjooV1RGTW92ZShn
ZW9sb2NhdGlvblBvc2l0aW9uKSldOwogICAgIH0KICAgICBbW01vY2tHZW9sb2NhdGlvblByb3Zp
ZGVyIHNoYXJlZF0gc2V0UG9zaXRpb246cG9zaXRpb25dOwogICAgIFtwb3NpdGlvbiByZWxlYXNl
XTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>