<?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>208263</bug_id>
          
          <creation_ts>2020-02-26 14:23:16 -0800</creation_ts>
          <short_desc>AXIsolatedObject support for table cells.</short_desc>
          <delta_ts>2020-02-26 18:32:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1623179</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-26 14:23:16 -0800</bug_when>
    <thetext>AXIsolatedObject support for table cells.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623183</commentid>
    <comment_count>1</comment_count>
      <attachid>391783</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-26 14:31:42 -0800</bug_when>
    <thetext>Created attachment 391783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623202</commentid>
    <comment_count>2</comment_count>
      <attachid>391783</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-02-26 15:00:57 -0800</bug_when>
    <thetext>Comment on attachment 391783
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityARIAGridCell.h:41
&gt; +    // Returnss the start location and row span of the cell.

spelling/: Returnss

&gt; Source/WebCore/accessibility/AccessibilityObject.h:176
&gt; +    // Returnss the start location and row span of the cell.

spelling Returnss

&gt; Source/WebCore/accessibility/AccessibilityObjectInterface.h:557
&gt; +    // Returnss the start location and row span of the cell.

spelling

&gt; Source/WebCore/accessibility/AccessibilityTableCell.h:48
&gt; +    // Returnss the start location and row span of the cell.

spelling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623205</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-02-26 15:09:36 -0800</bug_when>
    <thetext>build failures look unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623206</commentid>
    <comment_count>4</comment_count>
      <attachid>391783</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-02-26 15:09:49 -0800</bug_when>
    <thetext>Comment on attachment 391783
Patch

approved pending spelling changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623250</commentid>
    <comment_count>5</comment_count>
      <attachid>391798</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-26 16:09:22 -0800</bug_when>
    <thetext>Created attachment 391798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623287</commentid>
    <comment_count>6</comment_count>
      <attachid>391812</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-26 17:02:29 -0800</bug_when>
    <thetext>Created attachment 391812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623330</commentid>
    <comment_count>7</comment_count>
      <attachid>391812</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 18:31:40 -0800</bug_when>
    <thetext>Comment on attachment 391812
Patch

Clearing flags on attachment: 391812

Committed r257548: &lt;https://trac.webkit.org/changeset/257548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623331</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 18:31:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623332</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-26 18:32:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/59831471&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391783</attachid>
            <date>2020-02-26 14:31:42 -0800</date>
            <delta_ts>2020-02-26 16:09:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208263-20200226173141.patch</filename>
            <type>text/plain</type>
            <size>34136</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JhZGRjN2U1NTczYzQ4
ZGQzODMzOTc0MzRiOGUxOTMxMGQzOWU3MS4uNDgyOWYxMTcwZGVjOTI4YmE0NWUyYWYzMzUyYWRk
Nzg1NGVhOWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAyLTI2ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBWElzb2xhdGVk
T2JqZWN0IHN1cHBvcnQgZm9yIHRhYmxlIGNlbGxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAtIEV4cG9zZWQgdGhlIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgaW50ZXJmYWNlIHRocm91
Z2ggQVhDb3JlT2JqZWN0LgorICAgICAgICAtIFRoaXMgd2F5IHRoZXJlIGlzIG5vIG5lZWQgdG8g
ZG93bmNhc3QgaW4gY2xpZW50IGNvZGUgYW5kIHRoZSBzYW1lCisgICAgICAgIHBsYXRmb3JtIHdy
YXBwZXIgY29kZSB3b3JrcyBmb3IgQWNjZXNzaWJpbGl0eU9iamVjdHMgYW5kCisgICAgICAgIEFY
SXNvbGF0ZWRPYmplY3RzLgorICAgICAgICAtIENvbXBsZXRlZCBjYWNoaW5nIG9mIHRhYmxlIGNl
bGwgcHJvcGVydGllcyBpbiBBWElzb2xhdGVkT2JqZWN0LgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNv
bHVtbkluZGV4UmFuZ2UgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzQ29sdW1uSGVh
ZGVyQ2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
Ojppc1Jvd0hlYWRlckNlbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGxJblNhbWVDb2xHcm91cCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3Bw
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldENvbHVtblNwYW4pOgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFJvd1NwYW4pOgorICAgICAgICAod2Vi
a2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFBvc2l0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRz
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlSb3dSYW5nZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5Q29sdW1uUmFuZ2VdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnBhaXJBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisKIDIwMjAtMDItMjYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYSXNvbGF0ZWRPYmplY3Qgc3VwcG9ydCBmb3IgdGFibGUg
Y29sdW1uIG9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAppbmRleCA2YzRhZjE1ODk3YmM5ODcw
YjRjMDFjNGExMDZhYTdlMTYwZDE2YWViLi42MzljNDYwMWU1ZjdiOTQ5NzA0YmE4ODM0N2M3MmRl
NjU5YjdiNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTYzLDExICs2MywxMiBAQCBBY2Nl
c3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFRhYmxlKCkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYg
cm93UmFuZ2UpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKIHsKKyAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZSB7IDAsIDEgfTsKICAgICBBWENvcmVPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByb3dSYW5nZTsKIAogICAgIGlmIChpczxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgZ290
IGEgdGFibGUgcm93LCB1c2UgaXRzIEFQSS4KQEAgLTc3LDcgKzc4LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+JiByb3cKICAgICAgICAgLy8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5k
ZXggZm9yIHRoZSBjZWxsIGluIGl0LgogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKICAgICAg
ICAgaWYgKCFjb2x1bW5Db3VudCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJl
dHVybiByb3dSYW5nZTsKIAogICAgICAgICBjb25zdCBhdXRvJiBzaWJsaW5ncyA9IHBhcmVudC0+
Y2hpbGRyZW4oKTsKICAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXplID0gc2libGluZ3Muc2l6
ZSgpOwpAQCAtOTIsMTUgKzkzLDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6
cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93CiAgICAgLy8g
QVJJQSAxLjEsIGFyaWEtcm93c3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9yIGNlbGxzIGFu
ZCBncmlkY2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQgaW4gYSBuYXRpdmUgdGFibGUuCiAg
ICAgLy8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBoZXJlLgogICAgIHJv
d1JhbmdlLnNlY29uZCA9IGF4Um93U3BhbldpdGhSb3dJbmRleChyb3dSYW5nZS5maXJzdCk7CisK
KyAgICByZXR1cm4gcm93UmFuZ2U7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uc3QKIHsK
ICAgICBpbnQgcm93U3BhbiA9IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbigpOwog
ICAgIGlmIChyb3dTcGFuID09IC0xKSB7Ci0gICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IHJhbmdlOwotICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJh
bmdlKHJhbmdlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFu
Z2Uuc2Vjb25kKSwgMSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpyb3dJbmRleFJhbmdlKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChyYW5nZS5zZWNv
bmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CiAgICAgfQogCiAgICAgQVhDb3JlT2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKQEAgLTEzMiwyMSArMTM0LDIyIEBA
IHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRl
eCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAgICAgcmV0dXJuIHJvd1NwYW47CiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKCkg
Y29uc3QKIHsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZSB7
IDAsIDEgfTsKICAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOwogICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBj
b2x1bW5SYW5nZTsKIAogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50
KQogICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZSgpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7CiAKICAgICBjb25zdCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOwogICAg
IHVuc2lnbmVkIGNoaWxkcmVuU2l6ZSA9IHNpYmxpbmdzLnNpemUoKTsKICAgICB1bnNpZ25lZCBp
bmRleFdpdGhTcGFuID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hpbGRyZW5T
aXplOyArK2spIHsKLSAgICAgICAgYXV0byBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOworICAg
ICAgICBhdXRvKiBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOwogICAgICAgICBpZiAoY2hpbGQg
PT0gdGhpcykgewogICAgICAgICAgICAgY29sdW1uUmFuZ2UuZmlyc3QgPSBpbmRleFdpdGhTcGFu
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTgsMTIgKzE2MSwxMyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4mCiAgICAgLy8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBo
ZXJlLgogICAgIGludCBjb2x1bW5TcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1
bW5TcGFuKCk7CiAgICAgaWYgKGNvbHVtblNwYW4gPT0gLTEpIHsKLSAgICAgICAgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gcmFuZ2U7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNvbHVtbkluZGV4UmFuZ2UocmFuZ2UpOworICAgICAgICBhdXRvIHJhbmdlID0gQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpOwogICAgICAgICBjb2x1bW5TcGFu
ID0gcmFuZ2Uuc2Vjb25kOwogICAgIH0KIAogICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IHN0ZDo6
bWF4KGNvbHVtblNwYW4sIDEpOworCisgICAgcmV0dXJuIGNvbHVtblJhbmdlOwogfQogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91
cCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCmluZGV4IGU0MWEyNzBmZGYzNDU1ZDE0ZjNiOWIwYWJm
ZDZhODY5M2Q2YWUzNGYuLjM2M2M5NmI1YTRhNTY1NzZkNDYzMmNkMWUzOWIxNzE1YmY5MWQ2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC0zNiwxMiArMzYsMTMgQEAgY2xhc3MgQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbCBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw+IGNyZWF0ZShS
ZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7
Ci0gICAgCi0gICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBv
ZiBjZWxsCi0gICAgdm9pZCByb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+JiByb3dSYW5nZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0
IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiBjZWxsCi0gICAgdm9pZCBjb2x1bW5JbmRleFJh
bmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgCisKK3Byb3RlY3RlZDoKKyAgICAvLyBSZXR1cm5zcyB0aGUgc3RhcnQgbG9j
YXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICAvLyBSZXR1cm5z
IHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCisgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwo
UmVuZGVyT2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggYmQ0OWQzZjAwOGViNjM3M2RiOGQ1Y2Q0M2Q1YjQy
OTNjM2UxMDkwYS4uMzVjZTMzM2FmMjhiMjhkNmM3YTEzMTNkZTFjZGU5MDJjOWVlMTc1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKQEAgLTE3MSwxMyArMTcxLDIxIEBAIHB1YmxpYzoKICAgICBpbnQgYXhDb2x1bW5Db3VudCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIFRhYmxlIGNlbGwgc3VwcG9ydC4KKyAg
ICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAvLyBSZXR1cm5zcyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxs
LgorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB7IDAsIDEgfTsgfQorICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0
IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KKyAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4geyAwLCAxIH07IH0KKyAgICBpbnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIC0xOyB9CisgICAgaW50IGF4Um93SW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAtMTsgfQorCiAgICAgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdW5zaWduZWQgY29sdW1uSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CiAgICAgQVhDb3JlT2JqZWN0KiBjb2x1bW5IZWFkZXIoKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CiAKLSAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzRmllbGRzZXQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FSSUFUcmVlR3JpZFJvdygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDE3MDlmY2Zm
NjNjMWIxYWFhY2JlNTNkZTZhY2MyYTcwMmVkOTEwMDMuLjUyMDI5ODhjZTYyZTExMzQ2NDkzODRj
OTM4YTg1MGUwZjM0OWJlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC01NTIsNiArNTUy
LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBheENvbHVtbkNvdW50KCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgaW50IGF4Um93Q291bnQoKSBjb25zdCA9IDA7CiAKKyAgICAvLyBUYWJs
ZSBjZWxsIHN1cHBvcnQuCisgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgPSAw
OworICAgIC8vIFJldHVybnNzIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhl
IGNlbGwuCisgICAgdmlydHVhbCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRl
eFJhbmdlKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFu
ZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBp
bnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBheFJvd0luZGV4
KCkgY29uc3QgPSAwOworCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCA9IDA7
CiAKICAgICAvLyBUYWJsZSBjb2x1bW4gc3VwcG9ydC4KQEAgLTU1OSw4ICs1NjgsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjb2x1bW5JbmRleCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIEFYQ29yZU9iamVjdCogY29sdW1uSGVhZGVyKCkgPSAwOwogCi0gICAgdmlydHVhbCBi
b29sIGlzVGFibGVDZWxsKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBib29sIGlzRmllbGRz
ZXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4
IDFiY2U4ODY5MjdmNjMxMTkxMTRiMjdhMzZjZTEzZWY3Y2Y4ZGZlZmUuLmQzMzM4NGZmNzg3ZTI5
OTMzNDY5YjFiMGI0MzdjZjYyOGJlNDg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTYzNywxOSArNjM3LDE2IEBA
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgICAgICBBU1NFUlQoaXM8QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbD4oKmNoaWxkKSk7CiAgICAgICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw+KCpjaGlsZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJh
bmdlOwotICAgICAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7
Ci0gICAgICAgICAgICBhdXRvJiB0YWJsZUNlbGxDaGlsZCA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw+KCpjaGlsZCk7Ci0gICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC5jb2x1bW5J
bmRleFJhbmdlKGNvbHVtblJhbmdlKTsKLSAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLnJvd0lu
ZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGF1dG8gY29s
dW1uUmFuZ2UgPSBjaGlsZC0+Y29sdW1uSW5kZXhSYW5nZSgpOworICAgICAgICAgICAgYXV0byBy
b3dSYW5nZSA9IGNoaWxkLT5yb3dJbmRleFJhbmdlKCk7CisKICAgICAgICAgICAgIGlmICgoY29s
dW1uID49IGNvbHVtblJhbmdlLmZpcnN0ICYmIGNvbHVtbiA8IChjb2x1bW5SYW5nZS5maXJzdCAr
IGNvbHVtblJhbmdlLnNlY29uZCkpCiAgICAgICAgICAgICAgICAgJiYgKHJvdyA+PSByb3dSYW5n
ZS5maXJzdCAmJiByb3cgPCAocm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gJnRhYmxlQ2VsbENoaWxkOworICAgICAgICAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihjaGlsZCk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5k
ZXggMDEzMjdkMmJiMGM2YzFiNDUzNzUzZTZjMzJkYjkyMjJhMTVlZWViMC4uY2I2ZjJkZTJkOGYy
NDBmMzAxNDU1YzA2ZjFlMDE2YjI0ZDMxNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0xNjUsOCAr
MTY1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc0NvbHVtbkhlYWRlckNlbGwo
KSBjb25zdAogICAgICAgICBpZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChwYXJlbnROb2RlLT5oYXNUYWdO
YW1lKHRhYmxlVGFnKSB8fCBwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkgewotICAg
ICAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0gICAgICAg
ICAgICByb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKKyAgICAgICAgICAgIGF1dG8gcm93UmFuZ2Ug
PSByb3dJbmRleFJhbmdlKCk7CiAgICAgICAgICAgICBpZiAoIXJvd1JhbmdlLmZpcnN0KQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTkwLDggKzE4OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNSb3dIZWFkZXJD
ZWxsKCkgY29uc3QKICAgICAvLyBDaGVja2luZyB0YWJsZVRhZyBhbGxvd3MgdG8gY2hlY2sgdGhl
IGNhc2Ugb2YgZGlyZWN0IHJvdyBwbGFjZW1lbnQgaW4gdGhlIHRhYmxlIGFuZCBsZXRzIHN0b3Ag
dGhlIGxvb3AgYXQgdGhlIHRhYmxlIGxldmVsLgogICAgIGZvciAoTm9kZSogcGFyZW50Tm9kZSA9
IG5vZGUoKTsgcGFyZW50Tm9kZTsgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUtPnBhcmVudE5vZGUo
KSkgewogICAgICAgICBpZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgcGFy
ZW50Tm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgcGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0
YWJsZVRhZykpIHsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNv
bFJhbmdlOwotICAgICAgICAgICAgY29sdW1uSW5kZXhSYW5nZShjb2xSYW5nZSk7CisgICAgICAg
ICAgICBhdXRvIGNvbFJhbmdlID0gY29sdW1uSW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgaWYg
KCFjb2xSYW5nZS5maXJzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIyMiwxMiArMjIwLDkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjppc1RhYmxlQ2VsbEluU2FtZVJvd0dyb3VwKEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwqIG8KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbEluU2FtZUNv
bEdyb3VwKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbCkKIHsKLSAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJhbmdlKGNv
bFJhbmdlKTsKLSAgICAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBvdGhlckNv
bFJhbmdlOwotICAgIHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZShvdGhlckNvbFJhbmdlKTsK
LSAgICAKKyAgICBhdXRvIGNvbFJhbmdlID0gY29sdW1uSW5kZXhSYW5nZSgpOworICAgIGF1dG8g
b3RoZXJDb2xSYW5nZSA9IHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZSgpOworCiAgICAgaWYg
KGNvbFJhbmdlLmZpcnN0IDw9IChvdGhlckNvbFJhbmdlLmZpcnN0ICsgb3RoZXJDb2xSYW5nZS5z
ZWNvbmQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTUs
MjEgKzI1MCwxNSBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKAogICAgIC8vIElmIHRoZSBoZWFk
ZXJzIGF0dHJpYnV0ZSByZXR1cm5lZCB2YWxpZCB2YWx1ZXMsIHRoZW4gZG8gbm90IGZ1cnRoZXIg
c2VhcmNoIGZvciBjb2x1bW4gaGVhZGVycy4KICAgICBpZiAoIWhlYWRlcnMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gaGVhZGVyczsKLSAgICAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiByb3dSYW5nZTsKLSAgICByb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKLSAgICAKLSAg
ICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRl
eFJhbmdlKGNvbFJhbmdlKTsKLSAgICAKKworICAgIGF1dG8gcm93UmFuZ2UgPSByb3dJbmRleFJh
bmdlKCk7CisgICAgYXV0byBjb2xSYW5nZSA9IGNvbHVtbkluZGV4UmFuZ2UoKTsKKwogICAgIGZv
ciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwgcm93UmFuZ2UuZmlyc3Q7IHJvdysrKSB7CiAgICAg
ICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbCA9IHBhcmVudC0+Y2VsbEZvckNv
bHVtbkFuZFJvdyhjb2xSYW5nZS5maXJzdCwgcm93KTsKICAgICAgICAgaWYgKCF0YWJsZUNlbGwg
fHwgdGFibGVDZWxsID09IHRoaXMgfHwgaGVhZGVycy5jb250YWlucyh0YWJsZUNlbGwpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gY2hpbGRSb3dSYW5nZTsKLSAgICAgICAgdGFibGVDZWxsLT5yb3dJbmRleFJhbmdlKGNoaWxk
Um93UmFuZ2UpOwotICAgICAgICAgICAgCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHNjb3Bl
ID0gdGFibGVDZWxsLT5nZXRBdHRyaWJ1dGUoc2NvcGVBdHRyKTsKICAgICAgICAgaWYgKHNjb3Bl
ID09ICJjb2xncm91cCIgJiYgaXNUYWJsZUNlbGxJblNhbWVDb2xHcm91cCh0YWJsZUNlbGwpKQog
ICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVDZWxsKTsKQEAgLTI4NywxMSArMjc2LDgg
QEAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6cm93SGVhZGVycygpCiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVy
biBoZWFkZXJzOwogCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7
Ci0gICAgcm93SW5kZXhSYW5nZShyb3dSYW5nZSk7Ci0KLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJhbmdlKGNvbFJhbmdlKTsKKyAg
ICBhdXRvIHJvd1JhbmdlID0gcm93SW5kZXhSYW5nZSgpOworICAgIGF1dG8gY29sUmFuZ2UgPSBj
b2x1bW5JbmRleFJhbmdlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGNvbHVtbiA9IDA7IGNvbHVt
biA8IGNvbFJhbmdlLmZpcnN0OyBjb2x1bW4rKykgewogICAgICAgICBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsKiB0YWJsZUNlbGwgPSBwYXJlbnQtPmNlbGxGb3JDb2x1bW5BbmRSb3coY29sdW1uLCBy
b3dSYW5nZS5maXJzdCk7CkBAIC0zMTYsMTEgKzMwMiwxMiBAQCBBY2Nlc3NpYmlsaXR5VGFibGVS
b3cqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdygpIGNvbnN0CiAgICAgcmV0dXJu
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+JiByb3dSYW5nZSkgY29uc3QKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25zdAogeworICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgMCwgMSB9OwogICAgIGlmICghaXM8
UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAorICAg
ICAgICByZXR1cm4gcm93UmFuZ2U7CisKICAgICBSZW5kZXJUYWJsZUNlbGwmIHJlbmRlckNlbGwg
PSBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCptX3JlbmRlcmVyKTsKIAogICAgIC8vIEFSSUEg
MS4xJ3MgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBmb3IgY2VsbHMgYW5kIGdy
aWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZApAQCAtMzMyLDEzICszMTksMTYgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+JiByb3dSYW4KICAgICAKICAgICBpZiAoQWNjZXNzaWJpbGl0eVRhYmxlUm93
KiBwYXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKSkKICAgICAgICAgcm93UmFuZ2UuZmlyc3Qg
PSBwYXJlbnRSb3ctPnJvd0luZGV4KCk7CisKKyAgICByZXR1cm4gcm93UmFuZ2U7CiB9CiAgICAg
Ci12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKSBjb25zdAorc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgp
IGNvbnN0CiB7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2Ug
eyAwLCAxIH07CiAgICAgaWYgKCFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCisgICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKKwogICAgIGNv
bnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm1f
cmVuZGVyZXIpOwogICAgIGNvbHVtblJhbmdlLmZpcnN0ID0gY2VsbC50YWJsZSgpLT5jb2xUb0Vm
ZkNvbChjZWxsLmNvbCgpKTsKIApAQCAtMzQ3LDkgKzMzNywxMSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4mIGNvbAogICAgIC8vIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUgY29sc3Bh
biwgZXhwb3NlIHRoZSBBUklBIHZhbHVlLgogICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IGF4Q29s
dW1uU3BhbigpOwogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtblJhbmdlLnNlY29uZCkg
IT0gLTEpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwogCiAg
ICAgY29sdW1uUmFuZ2Uuc2Vjb25kID0gY2VsbC50YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLmNv
bCgpICsgY2VsbC5jb2xTcGFuKCkpIC0gY29sdW1uUmFuZ2UuZmlyc3Q7CisKKyAgICByZXR1cm4g
Y29sdW1uUmFuZ2U7CiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjp0aXRsZVVJRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCmluZGV4IGZhMzYxYzY5
NmU4ZTZhZjAwNmI1YjhlYzg2NzBkZGUyNjk3MTRiYmEuLjE1ZTRjMTE3NDExMWIwNzAxZjFlOGNi
N2FiYzJmZmQ2M2I0ZjA5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCkBAIC0zOSwyMiArMzksMjIgQEAgY2xhc3Mg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNyZWF0
ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVDZWxsKCk7
Ci0gICAgCisKICAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c1RhYmxlSGVhZGVyQ2VsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5IZWFkZXJDZWxsKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1Jvd0hlYWRlckNlbGwoKSBjb25zdDsKLSAgICAKLSAgICAvLyBm
aWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0
dWFsIHZvaWQgcm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93
UmFuZ2UpIGNvbnN0OwotICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29s
dW1uIHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29uc3Q7CisKKyAgICAvLyBS
ZXR1cm5zcyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgorICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4g
b2YgdGhlIGNlbGwuCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uSW5k
ZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNvbHVtbkhlYWRlcnMoKSBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3Igcm93SGVhZGVycygpIG92ZXJyaWRlOwogCi0gICAgaW50IGF4Q29sdW1uSW5kZXgoKSBj
b25zdDsKLSAgICBpbnQgYXhSb3dJbmRleCgpIGNvbnN0OworICAgIGludCBheENvbHVtbkluZGV4
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGF4Um93SW5kZXgoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBpbnQgYXhDb2x1bW5TcGFuKCkgY29uc3Q7CiAgICAgaW50IGF4Um93U3BhbigpIGNvbnN0
OwogICAgIHZvaWQgc2V0QVhDb2xJbmRleEZyb21Sb3coaW50IGluZGV4KSB7IG1fYXhDb2xJbmRl
eEZyb21Sb3cgPSBpbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggNzliZjA1ZmZhZGQxZDg0ODlhMTMzYTM1
MzgwOTdlNGFiZWY5Y2FiOS4uY2Y0MjU3ODM4OTc1MTU0NTI5OTI1MmMwNWE4MzdiNzFkYWVjZDBm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIAogICAgIHZvaWQgYWRkQ2hpbGRyZW4o
KSBvdmVycmlkZTsKLSAgICAKLSAgICBpbnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0OwotICAgIGlu
dCBheFJvd0luZGV4KCkgY29uc3Q7Ci0gICAgCisKKyAgICBpbnQgYXhDb2x1bW5JbmRleCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGludCBheFJvd0luZGV4KCkgY29uc3Qgb3ZlcnJpZGU7CisKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVSb3coUmVuZGVyT2JqZWN0
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbC5jcHAKaW5kZXgg
ZWQxOTI1YjJhNTM5NDA5N2YwODJmNmJhNWMwZjI5Mzg3NzQ2NTNiYS4uMjg5ZDNhNzAxNWRmODhm
N2RhZDYyZTgxODZmMDgxMTBkNDU1NmNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRhYmxlQ2VsbC5jcHAKQEAgLTg1LDEwICs4NSw3IEBAIGdpbnQgd2Via2l0QWNjZXNzaWJs
ZVRhYmxlQ2VsbEdldENvbHVtblNwYW4oQXRrVGFibGVDZWxsKiBjZWxsKQogICAgIGlmICghaXM8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oYXhPYmplY3QpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwotICAgIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpheE9iamVjdCkuY29sdW1uSW5kZXhSYW5nZShj
b2x1bW5SYW5nZSk7Ci0KLSAgICByZXR1cm4gY29sdW1uUmFuZ2Uuc2Vjb25kOworICAgIHJldHVy
biBheE9iamVjdC0+Y29sdW1uSW5kZXhSYW5nZSgpLnNlY29uZDsKIH0KIAogZ2ludCB3ZWJraXRB
Y2Nlc3NpYmxlVGFibGVDZWxsR2V0Um93U3BhbihBdGtUYWJsZUNlbGwqIGNlbGwpCkBAIC0xMDAs
MTAgKzk3LDcgQEAgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlVGFibGVDZWxsR2V0Um93U3BhbihBdGtU
YWJsZUNlbGwqIGNlbGwpCiAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihheE9i
amVjdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gcm93UmFuZ2U7Ci0gICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmF4
T2JqZWN0KS5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKLQotICAgIHJldHVybiByb3dSYW5nZS5z
ZWNvbmQ7CisgICAgcmV0dXJuIGF4T2JqZWN0LT5yb3dJbmRleFJhbmdlKCkuc2Vjb25kOwogfQog
CiBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVDZWxsR2V0UG9zaXRpb24oQXRrVGFibGVD
ZWxsKiBjZWxsLCBnaW50KiByb3csIGdpbnQqIGNvbHVtbikKQEAgLTExNSwyMyArMTA5LDE4IEBA
IGdib29sZWFuIHdlYmtpdEFjY2Vzc2libGVUYWJsZUNlbGxHZXRQb3NpdGlvbihBdGtUYWJsZUNl
bGwqIGNlbGwsIGdpbnQqIHJvdywgZ2luCiAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPihheE9iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJvd1JhbmdlOwogICAgIGlmIChyb3cpIHsKICAgICAg
ICAgLy8gYXJpYS1yb3dpbmRleCBpcyAxLWJhc2VkLgotICAgICAgICBpbnQgcm93SW5kZXggPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqYXhPYmplY3QpLmF4Um93SW5kZXgoKSAt
IDE7Ci0gICAgICAgIGlmIChyb3dJbmRleCA8PSAtMSkgewotICAgICAgICAgICAgZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmF4T2JqZWN0KS5yb3dJbmRleFJhbmdlKGNvbHVtblJv
d1JhbmdlKTsKLSAgICAgICAgICAgIHJvd0luZGV4ID0gY29sdW1uUm93UmFuZ2UuZmlyc3Q7Ci0g
ICAgICAgIH0KKyAgICAgICAgaW50IHJvd0luZGV4ID0gYXhPYmplY3QtPmF4Um93SW5kZXgoKSAt
IDE7CisgICAgICAgIGlmIChyb3dJbmRleCA8PSAtMSkKKyAgICAgICAgICAgIHJvd0luZGV4ID0g
YXhPYmplY3QtPnJvd0luZGV4UmFuZ2UoKS5maXJzdDsKICAgICAgICAgKnJvdyA9IHJvd0luZGV4
OwogICAgIH0KICAgICBpZiAoY29sdW1uKSB7CiAgICAgICAgIC8vIGFyaWEtY29saW5kZXggaXMg
MS1iYXNlZC4KLSAgICAgICAgaW50IGNvbHVtbkluZGV4ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbD4oKmF4T2JqZWN0KS5heENvbHVtbkluZGV4KCkgLSAxOwotICAgICAgICBpZiAo
Y29sdW1uSW5kZXggPD0gLTEpIHsKLSAgICAgICAgICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw+KCpheE9iamVjdCkuY29sdW1uSW5kZXhSYW5nZShjb2x1bW5Sb3dSYW5nZSk7Ci0g
ICAgICAgICAgICBjb2x1bW5JbmRleCA9IGNvbHVtblJvd1JhbmdlLmZpcnN0OwotICAgICAgICB9
CisgICAgICAgIGludCBjb2x1bW5JbmRleCA9IGF4T2JqZWN0LT5heENvbHVtbkluZGV4KCkgLSAx
OworICAgICAgICBpZiAoY29sdW1uSW5kZXggPD0gLTEpCisgICAgICAgICAgICBjb2x1bW5JbmRl
eCA9IGF4T2JqZWN0LT5jb2x1bW5JbmRleFJhbmdlKCkuZmlyc3Q7CiAgICAgICAgICpjb2x1bW4g
PSBjb2x1bW5JbmRleDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggMGIzYjI2NzIzMzliYjFkZWVmOTE5ZjQ4MzE3NDliNDgxNzllODFmNC4uODA2
MzZjN2MwZWI0M2ZlMzY2MGM4MzQ1MDgzMWRmM2ExZWZmMzNiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTEyMjYsMTAgKzEyMjYsOCBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcg
KnN0cmluZykKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICAvLyBHZXQgdGhlIHJvdyBh
bmQgY29sdW1uIHJhbmdlLCBzbyB3ZSBjYW4gdXNlIHRoZW0gdG8gZmluZCB0aGUgaGVhZGVycy4K
LSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKLSAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKLSAgICB0YWJsZUNlbGwtPnJvd0lu
ZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgIHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1
bW5SYW5nZSk7CisgICAgYXV0byByb3dSYW5nZSA9IHRhYmxlQ2VsbC0+cm93SW5kZXhSYW5nZSgp
OworICAgIGF1dG8gY29sdW1uUmFuZ2UgPSB0YWJsZUNlbGwtPmNvbHVtbkluZGV4UmFuZ2UoKTsK
IAogICAgIGF1dG8gcm93SGVhZGVycyA9IHRhYmxlLT5yb3dIZWFkZXJzKCk7CiAgICAgYXV0byBj
b2x1bW5IZWFkZXJzID0gdGFibGUtPmNvbHVtbkhlYWRlcnMoKTsKQEAgLTEyNTAsOCArMTI0OCw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVz
dWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIGZvciAoY29uc3QgYXV0byYgcm93SGVhZGVyIDog
cm93SGVhZGVycykgewogICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpy
b3dIZWFkZXIpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IHJvd0hlYWRlclJhbmdlOwotICAgICAgICBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGVDZWxsPigqcm93SGVhZGVyKS5yb3dJbmRleFJhbmdlKHJvd0hlYWRlclJhbmdlKTsK
KyAgICAgICAgYXV0byByb3dIZWFkZXJSYW5nZSA9IHJvd0hlYWRlci0+cm93SW5kZXhSYW5nZSgp
OwogICAgICAgICBpZiAocm93UmFuZ2VJbmRleCA+PSByb3dIZWFkZXJSYW5nZS5maXJzdCAmJiBy
b3dSYW5nZUluZGV4IDwgcm93SGVhZGVyUmFuZ2UuZmlyc3QgKyByb3dIZWFkZXJSYW5nZS5zZWNv
bmQpIHsKICAgICAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBl
ciA9IHJvd0hlYWRlci0+d3JhcHBlcigpKQogICAgICAgICAgICAgICAgIFtoZWFkZXJzIGFkZE9i
amVjdDp3cmFwcGVyXTsKQEAgLTEzNjQsOSArMTM2MSw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0
cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQog
ICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbCA9IFtzZWxmIHRhYmxlQ2VsbFBh
cmVudF07CiAgICAgaWYgKCF0YWJsZUNlbGwpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShO
U05vdEZvdW5kLCAwKTsKLSAgICAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBy
b3dSYW5nZTsKLSAgICB0YWJsZUNlbGwtPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOworCisgICAg
YXV0byByb3dSYW5nZSA9IHRhYmxlQ2VsbC0+cm93SW5kZXhSYW5nZSgpOwogICAgIHJldHVybiBO
U01ha2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93UmFuZ2Uuc2Vjb25kKTsKIH0KIApAQCAtMTM3
OCw5ICsxMzc0LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxl
U3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCogdGFibGVDZWxsID0gW3NlbGYgdGFibGVDZWxsUGFyZW50XTsKICAgICBpZiAoIXRhYmxl
Q2VsbCkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwotICAgIAot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwotICAgIHRhYmxl
Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CisKKyAgICBhdXRvIGNvbHVtblJh
bmdlID0gdGFibGVDZWxsLT5jb2x1bW5JbmRleFJhbmdlKCk7CiAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKGNvbHVtblJhbmdlLmZpcnN0LCBjb2x1bW5SYW5nZS5zZWNvbmQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGE2YjAxMGEzZTg3MGRmZmYzOTQ5OWZjNjEwODU4MzMy
OGYzYTk1ZTEuLmQ0OTQ2ZDVhM2FjZmNjMTY5NzI4ZGZiYWU0ZTE5ZDk1OTVmNDE5YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xMTQsNyArMTE0LDYgQEAgdm9pZCBBWElzb2xh
dGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRlRGF0YShBWENvcmVPYmplY3QmIG9iamVjdCwg
Ym9vbCBpc1Jvb3QKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3RlZE9w
dGlvbkFjdGl2ZSwgb2JqZWN0LmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSk7CiAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU2xpZGVyLCBvYmplY3QuaXNTbGlkZXIoKSk7CiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU3R5bGVGb3JtYXRHcm91cCwgb2JqZWN0Lmlz
U3R5bGVGb3JtYXRHcm91cCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNU
YWJsZUNlbGwsIG9iamVjdC5pc1RhYmxlQ2VsbCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SXNUYWJsZVJvdywgb2JqZWN0LmlzVGFibGVSb3coKSk7CiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OklzVGV4dENvbnRyb2wsIG9iamVjdC5pc1RleHRDb250cm9sKCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RyZWUsIG9iamVjdC5pc1RyZWUo
KSk7CkBAIC0yMzYsNiArMjM1LDE2IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6
ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBvYmplY3QsIGJvb2wgaXNSb290CiAgICAgICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBWFJvd0NvdW50LCBvYmplY3QuYXhSb3dDb3Vu
dCgpKTsKICAgICB9CiAKKyAgICBpZiAob2JqZWN0LmlzVGFibGVDZWxsKCkpIHsKKyAgICAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGVDZWxsLCBvYmplY3QuaXNUYWJsZUNl
bGwoKSk7CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5JbmRleFJh
bmdlLCBvYmplY3QuY29sdW1uSW5kZXhSYW5nZSgpKTsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OlJvd0luZGV4UmFuZ2UsIG9iamVjdC5yb3dJbmRleFJhbmdlKCkpOworICAg
ICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sdW1uSGVhZGVy
cywgb2JqZWN0LmNvbHVtbkhlYWRlcnMoKSk7CisgICAgICAgIHNldE9iamVjdFZlY3RvclByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpSb3dIZWFkZXJzLCBvYmplY3Qucm93SGVhZGVycygpKTsKKyAg
ICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uSW5kZXgsIG9iamVjdC5h
eENvbHVtbkluZGV4KCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhS
b3dJbmRleCwgb2JqZWN0LmF4Um93SW5kZXgoKSk7CisgICAgfQorCiAgICAgaWYgKG9iamVjdC5p
c1RhYmxlQ29sdW1uKCkpIHsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
VGFibGVDb2x1bW4sIG9iamVjdC5pc1RhYmxlQ29sdW1uKCkpOwogICAgICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6Q29sdW1uSW5kZXgsIG9iamVjdC5jb2x1bW5JbmRleCgpKTsKQEAg
LTc0Miw2ICs3NTEsMTYgQEAgT3B0aW9uU2V0PFQ+IEFYSXNvbGF0ZWRPYmplY3Q6Om9wdGlvblNl
dEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICApOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RkOjpwYWlyPFQsIFQ+IEFYSXNvbGF0ZWRPYmplY3Q6OnBh
aXJBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit7Cisg
ICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChwcm9wZXJ0eU5hbWUpOworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKHZhbHVlLAorICAgICAgICBbXSAoc3RkOjpwYWlyPFQsIFQ+JiB0
eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSAoYXV0byYpIHsg
cmV0dXJuIHN0ZDo6cGFpcjxULCBUPigwLCAxKTsgfQorICAgICk7Cit9CisKIHVpbnQ2NF90IEFY
SXNvbGF0ZWRPYmplY3Q6OnVpbnQ2NEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHBy
b3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggZTdmMmE1ZWI2ZmFhNWU0
YjFjY2NhNDQ5YTNkNjllMzIzMzY1MzY2MS4uNTE2YmU2ZjhkYzBlNTk0YzZkMDg2MTM3OWMxNjQ2
OTJkNTJhODBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtOTksNyArOTksOSBAQCBw
cml2YXRlOgogICAgICAgICBBUklBUm9sZUF0dHJpYnV0ZSwKICAgICAgICAgQVJJQU93bnNFbGVt
ZW50cywKICAgICAgICAgQVhDb2x1bW5Db3VudCwKKyAgICAgICAgQVhDb2x1bW5JbmRleCwKICAg
ICAgICAgQVhSb3dDb3VudCwKKyAgICAgICAgQVhSb3dJbmRleCwKICAgICAgICAgQmxvY2txdW90
ZUxldmVsLAogICAgICAgICBCb3VuZGluZ0JveFJlY3QsCiAgICAgICAgIENhbkhhdmVTZWxlY3Rl
ZENoaWxkcmVuLApAQCAtMTIzLDYgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvbHVtbkhl
YWRlciwKICAgICAgICAgQ29sdW1uSGVhZGVycywKICAgICAgICAgQ29sdW1uSW5kZXgsCisgICAg
ICAgIENvbHVtbkluZGV4UmFuZ2UsCiAgICAgICAgIENvbXB1dGVkTGFiZWwsCiAgICAgICAgIENv
bXB1dGVkUm9sZVN0cmluZywKICAgICAgICAgQ3VycmVudFN0YXRlLApAQCAtMjg0LDYgKzI4Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFJvd3MsCiAgICAgICAgIFJvd0NvdW50LAogICAgICAgICBS
b3dIZWFkZXJzLAorICAgICAgICBSb3dJbmRleFJhbmdlLAogICAgICAgICBTZWxlY3RlZENoaWxk
cmVuLAogICAgICAgICBTZWxlY3RlZFJhZGlvQnV0dG9uLAogICAgICAgICBTZWxlY3RlZFRhYkl0
ZW0sCkBAIC0zMzAsOCArMzM0LDggQEAgcHJpdmF0ZToKICAgICAgICAgQWNjZXNzaWJpbGl0eVRl
eHRTb3VyY2UgdGV4dFNvdXJjZTsKICAgICAgICAgVmVjdG9yPEFYSUQ+IHRleHRFbGVtZW50czsK
ICAgICB9OwotICAgIAotICAgIHVzaW5nIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCA9IFZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9h
dCwgdWludDY0X3QsIENvbG9yLCBVUkwsIExheW91dFJlY3QsIEZsb2F0UmVjdCwgQVhJRCwgSW50
UG9pbnQsIE9wdGlvblNldDxTcGVha0FzPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRy
ZWVUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1h
dGhNdWx0aXNjcmlwdFBhaXI+LCBWZWN0b3I8U3RyaW5nPj47CisKKyAgICB1c2luZyBBdHRyaWJ1
dGVWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGlu
dCwgdW5zaWduZWQsIGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBDb2xvciwgVVJMLCBMYXlvdXRS
ZWN0LCBGbG9hdFJlY3QsIEFYSUQsIEludFBvaW50LCBPcHRpb25TZXQ8U3BlYWtBcz4sIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJl
ZVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTWF0
aE11bHRpc2NyaXB0UGFpcj4sIFZlY3RvcjxTdHJpbmc+PjsKICAgICB2b2lkIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lLCBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQmJiwgYm9vbCBzaG91bGRSZW1v
dmUgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwg
QVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZSwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CkBAIC0zNTAsNiAr
MzU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHJlY3RBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VmVjdG9yPFQ+IHZlY3RvckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBPcHRpb25TZXQ8VD4gb3B0aW9uU2V0QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0ZDo6
cGFpcjxULCBUPiBwYWlyQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAg
ICAgdm9pZCBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CiAgICAgdm9pZCBzZXRNYXRoc2NyaXB0
cyhBWFByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0Jik7CkBAIC00MDAsNiArNDA1LDE1IEBAIHBy
aXZhdGU6CiAgICAgaW50IGF4Q29sdW1uQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBp
bnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QVhDb2x1bW5Db3VudCk7IH0KICAgICBp
bnQgYXhSb3dDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpBWFJvd0NvdW50KTsgfQogCisgICAgLy8gVGFibGUgY2VsbCBzdXBw
b3J0LgorICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGVDZWxsKTsgfQorICAgIC8vIFJl
dHVybnNzIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCisgICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHBhaXJBdHRyaWJ1dGVWYWx1ZTx1bnNpZ25lZD4oQVhQcm9wZXJ0eU5hbWU6
OlJvd0luZGV4UmFuZ2UpOyB9CisgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5k
IGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYWlyQXR0cmli
dXRlVmFsdWU8dW5zaWduZWQ+KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5JbmRleFJhbmdlKTsgfQor
ICAgIGludCBheENvbHVtbkluZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uSW5kZXgpOyB9CisgICAgaW50IGF4Um93
SW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6QVhSb3dJbmRleCk7IH0KKwogICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJs
ZVJvdyk7IH0KIAogICAgIC8vIFRhYmxlIGNvbHVtbiBzdXBwb3J0LgpAQCAtNDA3LDcgKzQyMSw2
IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgY29sdW1uSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB1bnNpZ25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2x1bW5JbmRl
eCk7IH0KICAgICBBWENvcmVPYmplY3QqIGNvbHVtbkhlYWRlcigpIG92ZXJyaWRlIHsgcmV0dXJu
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2x1bW5IZWFkZXIpOyB9CiAK
LSAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCk7IH0KICAgICBib29sIGlzRmll
bGRzZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzRmllbGRzZXQpOyB9CiAgICAgYm9vbCBpc0dyb3VwKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0dyb3VwKTsg
fQogICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQVJJQVRyZWVHcmlkUm93KTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAzODQ5OTQ5YmY2MzNm
NGE0MzZkZjA0MGE3ODUyNDE0OGE0NTU0MGJiLi42NTdlM2Y3MDBiOGJhYjg0M2I1YTUwNWY5M2Fj
ZDE5OTYxMzcxYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpA
QCAtMjc1OCwyOSArMjc1OCwyOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
PigqYmFja2luZ09iamVjdCkpIHsKLSAgICAgICAgYXV0byYgY2VsbCA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw+KCpiYWNraW5nT2JqZWN0KTsKKyAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAg
ICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKLSAgICAgICAgICAg
IGNlbGwucm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CisgICAgICAgICAgICBhdXRvIHJvd1Jhbmdl
ID0gYmFja2luZ09iamVjdC0+cm93SW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgcmV0dXJuIFtO
U1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJvd1JhbmdlLmZpcnN0LCByb3dSYW5n
ZS5zZWNvbmQpXTsKICAgICAgICAgfQorCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsK
LSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwot
ICAgICAgICAgICAgY2VsbC5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKKyAgICAgICAg
ICAgIGF1dG8gY29sdW1uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5jb2x1bW5JbmRleFJhbmdlKCk7
CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uo
Y29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCldOwogICAgICAgICB9CisKICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlD
b2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGNlbGwuY29sdW1uSGVhZGVycygpKTsKKyAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7CiAKICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dI
ZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGNlbGwucm93SGVhZGVycygpKTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7CiAKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhB
dHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIEAoY2VsbC5heENvbHVtbkluZGV4KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YXhDb2x1bW5JbmRleCgpKTsKIAog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUFSSUFSb3dJbmRleEF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gQChjZWxsLmF4Um93
SW5kZXgoKSk7CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5heFJvd0luZGV4
KCkpOwogICAgIH0KIAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391798</attachid>
            <date>2020-02-26 16:09:22 -0800</date>
            <delta_ts>2020-02-26 17:02:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208263-20200226190921.patch</filename>
            <type>text/plain</type>
            <size>34131</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JhZGRjN2U1NTczYzQ4
ZGQzODMzOTc0MzRiOGUxOTMxMGQzOWU3MS4uOGQ0OGNlZTU2NTBlMDFhZWNkMzJmODc1ZGJiYzA5
NThlMTMxNDEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAyLTI2ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBWElzb2xhdGVk
T2JqZWN0IHN1cHBvcnQgZm9yIHRhYmxlIGNlbGxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRmxlaXphY2guCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAtIEV4cG9zZWQgdGhlIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgaW50ZXJmYWNlIHRocm91
Z2ggQVhDb3JlT2JqZWN0LgorICAgICAgICAtIFRoaXMgd2F5IHRoZXJlIGlzIG5vIG5lZWQgdG8g
ZG93bmNhc3QgaW4gY2xpZW50IGNvZGUgYW5kIHRoZSBzYW1lCisgICAgICAgIHBsYXRmb3JtIHdy
YXBwZXIgY29kZSB3b3JrcyBmb3IgQWNjZXNzaWJpbGl0eU9iamVjdHMgYW5kCisgICAgICAgIEFY
SXNvbGF0ZWRPYmplY3RzLgorICAgICAgICAtIENvbXBsZXRlZCBjYWNoaW5nIG9mIHRhYmxlIGNl
bGwgcHJvcGVydGllcyBpbiBBWElzb2xhdGVkT2JqZWN0LgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNv
bHVtbkluZGV4UmFuZ2UgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzQ29sdW1uSGVh
ZGVyQ2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
Ojppc1Jvd0hlYWRlckNlbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGxJblNhbWVDb2xHcm91cCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3Bw
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldENvbHVtblNwYW4pOgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFJvd1NwYW4pOgorICAgICAgICAod2Vi
a2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFBvc2l0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRz
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlSb3dSYW5nZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5Q29sdW1uUmFuZ2VdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnBhaXJBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisKIDIwMjAtMDItMjYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYSXNvbGF0ZWRPYmplY3Qgc3VwcG9ydCBmb3IgdGFibGUg
Y29sdW1uIG9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAppbmRleCA2YzRhZjE1ODk3YmM5ODcw
YjRjMDFjNGExMDZhYTdlMTYwZDE2YWViLi42MzljNDYwMWU1ZjdiOTQ5NzA0YmE4ODM0N2M3MmRl
NjU5YjdiNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTYzLDExICs2MywxMiBAQCBBY2Nl
c3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFRhYmxlKCkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYg
cm93UmFuZ2UpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKIHsKKyAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZSB7IDAsIDEgfTsKICAgICBBWENvcmVPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByb3dSYW5nZTsKIAogICAgIGlmIChpczxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgZ290
IGEgdGFibGUgcm93LCB1c2UgaXRzIEFQSS4KQEAgLTc3LDcgKzc4LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+JiByb3cKICAgICAgICAgLy8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5k
ZXggZm9yIHRoZSBjZWxsIGluIGl0LgogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKICAgICAg
ICAgaWYgKCFjb2x1bW5Db3VudCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJl
dHVybiByb3dSYW5nZTsKIAogICAgICAgICBjb25zdCBhdXRvJiBzaWJsaW5ncyA9IHBhcmVudC0+
Y2hpbGRyZW4oKTsKICAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXplID0gc2libGluZ3Muc2l6
ZSgpOwpAQCAtOTIsMTUgKzkzLDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6
cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93CiAgICAgLy8g
QVJJQSAxLjEsIGFyaWEtcm93c3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9yIGNlbGxzIGFu
ZCBncmlkY2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQgaW4gYSBuYXRpdmUgdGFibGUuCiAg
ICAgLy8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBoZXJlLgogICAgIHJv
d1JhbmdlLnNlY29uZCA9IGF4Um93U3BhbldpdGhSb3dJbmRleChyb3dSYW5nZS5maXJzdCk7CisK
KyAgICByZXR1cm4gcm93UmFuZ2U7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uc3QKIHsK
ICAgICBpbnQgcm93U3BhbiA9IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbigpOwog
ICAgIGlmIChyb3dTcGFuID09IC0xKSB7Ci0gICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IHJhbmdlOwotICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJh
bmdlKHJhbmdlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFu
Z2Uuc2Vjb25kKSwgMSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpyb3dJbmRleFJhbmdlKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChyYW5nZS5zZWNv
bmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CiAgICAgfQogCiAgICAgQVhDb3JlT2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKQEAgLTEzMiwyMSArMTM0LDIyIEBA
IHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRl
eCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAgICAgcmV0dXJuIHJvd1NwYW47CiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKCkg
Y29uc3QKIHsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZSB7
IDAsIDEgfTsKICAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOwogICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBj
b2x1bW5SYW5nZTsKIAogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50
KQogICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZSgpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7CiAKICAgICBjb25zdCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOwogICAg
IHVuc2lnbmVkIGNoaWxkcmVuU2l6ZSA9IHNpYmxpbmdzLnNpemUoKTsKICAgICB1bnNpZ25lZCBp
bmRleFdpdGhTcGFuID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hpbGRyZW5T
aXplOyArK2spIHsKLSAgICAgICAgYXV0byBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOworICAg
ICAgICBhdXRvKiBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOwogICAgICAgICBpZiAoY2hpbGQg
PT0gdGhpcykgewogICAgICAgICAgICAgY29sdW1uUmFuZ2UuZmlyc3QgPSBpbmRleFdpdGhTcGFu
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTgsMTIgKzE2MSwxMyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4mCiAgICAgLy8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBo
ZXJlLgogICAgIGludCBjb2x1bW5TcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1
bW5TcGFuKCk7CiAgICAgaWYgKGNvbHVtblNwYW4gPT0gLTEpIHsKLSAgICAgICAgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gcmFuZ2U7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNvbHVtbkluZGV4UmFuZ2UocmFuZ2UpOworICAgICAgICBhdXRvIHJhbmdlID0gQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpOwogICAgICAgICBjb2x1bW5TcGFu
ID0gcmFuZ2Uuc2Vjb25kOwogICAgIH0KIAogICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IHN0ZDo6
bWF4KGNvbHVtblNwYW4sIDEpOworCisgICAgcmV0dXJuIGNvbHVtblJhbmdlOwogfQogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91
cCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCmluZGV4IGU0MWEyNzBmZGYzNDU1ZDE0ZjNiOWIwYWJm
ZDZhODY5M2Q2YWUzNGYuLmU3ZmFlOTI5NmQ5MDMxMzY0N2Q1MTg2MjUxNzk0ZGY4ZDVhMDFmNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC0zNiwxMiArMzYsMTMgQEAgY2xhc3MgQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbCBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw+IGNyZWF0ZShS
ZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7
Ci0gICAgCi0gICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBv
ZiBjZWxsCi0gICAgdm9pZCByb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+JiByb3dSYW5nZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0
IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiBjZWxsCi0gICAgdm9pZCBjb2x1bW5JbmRleFJh
bmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgCisKK3Byb3RlY3RlZDoKKyAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2Nh
dGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIC8vIFJldHVybnMg
dGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KKyAgICBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbChS
ZW5kZXJPYmplY3QqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBiZDQ5ZDNmMDA4ZWI2MzczZGI4ZDVjZDQzZDViNDI5
M2MzZTEwOTBhLi42YjE1ZGUyOGMzNjExYThlZmFkNzQyZGZmZmYwOTg0NTczNTM0MGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aApAQCAtMTcxLDEzICsxNzEsMjEgQEAgcHVibGljOgogICAgIGludCBheENvbHVtbkNvdW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCisgICAgLy8gVGFibGUgY2VsbCBzdXBwb3J0LgorICAg
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4K
KyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4geyAwLCAxIH07IH0KKyAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBs
b2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCisgICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gY29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHsgMCwgMSB9OyB9CisgICAgaW50IGF4Q29sdW1uSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAtMTsgfQorICAgIGludCBheFJvd0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
LTE7IH0KKwogICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNvbHVtbkluZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQogICAgIEFYQ29yZU9iamVjdCogY29sdW1uSGVhZGVyKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCAxNzA5ZmNmZjYz
YzFiMWFhYWNiZTUzZGU2YWNjMmE3MDJlZDkxMDAzLi4yMDRjOThhZTU1OGYwODliNDhhODIyOWY3
M2MxNGQwYTEzNzE3NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtNTUyLDYgKzU1Miwx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgYXhDb2x1bW5Db3VudCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGludCBheFJvd0NvdW50KCkgY29uc3QgPSAwOwogCisgICAgLy8gVGFibGUg
Y2VsbCBzdXBwb3J0LgorICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0ID0gMDsK
KyAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNl
bGwuCisgICAgdmlydHVhbCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJh
bmdlKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBj
b2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQg
YXhDb2x1bW5JbmRleCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBheFJvd0luZGV4KCkg
Y29uc3QgPSAwOworCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCA9IDA7CiAK
ICAgICAvLyBUYWJsZSBjb2x1bW4gc3VwcG9ydC4KQEAgLTU1OSw4ICs1NjgsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjb2x1bW5JbmRleCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogY29sdW1uSGVhZGVyKCkgPSAwOwogCi0gICAgdmlydHVhbCBib29s
IGlzVGFibGVDZWxsKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBib29sIGlzRmllbGRzZXQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDFi
Y2U4ODY5MjdmNjMxMTkxMTRiMjdhMzZjZTEzZWY3Y2Y4ZGZlZmUuLmQzMzM4NGZmNzg3ZTI5OTMz
NDY5YjFiMGI0MzdjZjYyOGJlNDg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTYzNywxOSArNjM3LDE2IEBAIEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgICAgICBBU1NFUlQoaXM8QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbD4oKmNoaWxkKSk7CiAgICAgICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw+KCpjaGlsZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdl
OwotICAgICAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0g
ICAgICAgICAgICBhdXRvJiB0YWJsZUNlbGxDaGlsZCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw+KCpjaGlsZCk7Ci0gICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC5jb2x1bW5JbmRl
eFJhbmdlKGNvbHVtblJhbmdlKTsKLSAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLnJvd0luZGV4
UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGF1dG8gY29sdW1u
UmFuZ2UgPSBjaGlsZC0+Y29sdW1uSW5kZXhSYW5nZSgpOworICAgICAgICAgICAgYXV0byByb3dS
YW5nZSA9IGNoaWxkLT5yb3dJbmRleFJhbmdlKCk7CisKICAgICAgICAgICAgIGlmICgoY29sdW1u
ID49IGNvbHVtblJhbmdlLmZpcnN0ICYmIGNvbHVtbiA8IChjb2x1bW5SYW5nZS5maXJzdCArIGNv
bHVtblJhbmdlLnNlY29uZCkpCiAgICAgICAgICAgICAgICAgJiYgKHJvdyA+PSByb3dSYW5nZS5m
aXJzdCAmJiByb3cgPCAocm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gJnRhYmxlQ2VsbENoaWxkOworICAgICAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihjaGlsZCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXgg
MDEzMjdkMmJiMGM2YzFiNDUzNzUzZTZjMzJkYjkyMjJhMTVlZWViMC4uY2I2ZjJkZTJkOGYyNDBm
MzAxNDU1YzA2ZjFlMDE2YjI0ZDMxNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0xNjUsOCArMTY1
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc0NvbHVtbkhlYWRlckNlbGwoKSBj
b25zdAogICAgICAgICBpZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChwYXJlbnROb2RlLT5oYXNUYWdOYW1l
KHRhYmxlVGFnKSB8fCBwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkgewotICAgICAg
ICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0gICAgICAgICAg
ICByb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKKyAgICAgICAgICAgIGF1dG8gcm93UmFuZ2UgPSBy
b3dJbmRleFJhbmdlKCk7CiAgICAgICAgICAgICBpZiAoIXJvd1JhbmdlLmZpcnN0KQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkw
LDggKzE4OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNSb3dIZWFkZXJDZWxs
KCkgY29uc3QKICAgICAvLyBDaGVja2luZyB0YWJsZVRhZyBhbGxvd3MgdG8gY2hlY2sgdGhlIGNh
c2Ugb2YgZGlyZWN0IHJvdyBwbGFjZW1lbnQgaW4gdGhlIHRhYmxlIGFuZCBsZXRzIHN0b3AgdGhl
IGxvb3AgYXQgdGhlIHRhYmxlIGxldmVsLgogICAgIGZvciAoTm9kZSogcGFyZW50Tm9kZSA9IG5v
ZGUoKTsgcGFyZW50Tm9kZTsgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUtPnBhcmVudE5vZGUoKSkg
ewogICAgICAgICBpZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgcGFyZW50
Tm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgcGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0YWJs
ZVRhZykpIHsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbFJh
bmdlOwotICAgICAgICAgICAgY29sdW1uSW5kZXhSYW5nZShjb2xSYW5nZSk7CisgICAgICAgICAg
ICBhdXRvIGNvbFJhbmdlID0gY29sdW1uSW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgaWYgKCFj
b2xSYW5nZS5maXJzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIyMiwxMiArMjIwLDkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjppc1RhYmxlQ2VsbEluU2FtZVJvd0dyb3VwKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IG8KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbEluU2FtZUNvbEdy
b3VwKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbCkKIHsKLSAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJhbmdlKGNvbFJh
bmdlKTsKLSAgICAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBvdGhlckNvbFJh
bmdlOwotICAgIHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZShvdGhlckNvbFJhbmdlKTsKLSAg
ICAKKyAgICBhdXRvIGNvbFJhbmdlID0gY29sdW1uSW5kZXhSYW5nZSgpOworICAgIGF1dG8gb3Ro
ZXJDb2xSYW5nZSA9IHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZSgpOworCiAgICAgaWYgKGNv
bFJhbmdlLmZpcnN0IDw9IChvdGhlckNvbFJhbmdlLmZpcnN0ICsgb3RoZXJDb2xSYW5nZS5zZWNv
bmQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTUsMjEg
KzI1MCwxNSBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKAogICAgIC8vIElmIHRoZSBoZWFkZXJz
IGF0dHJpYnV0ZSByZXR1cm5lZCB2YWxpZCB2YWx1ZXMsIHRoZW4gZG8gbm90IGZ1cnRoZXIgc2Vh
cmNoIGZvciBjb2x1bW4gaGVhZGVycy4KICAgICBpZiAoIWhlYWRlcnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gaGVhZGVyczsKLSAgICAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiByb3dSYW5nZTsKLSAgICByb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKLSAgICAKLSAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJh
bmdlKGNvbFJhbmdlKTsKLSAgICAKKworICAgIGF1dG8gcm93UmFuZ2UgPSByb3dJbmRleFJhbmdl
KCk7CisgICAgYXV0byBjb2xSYW5nZSA9IGNvbHVtbkluZGV4UmFuZ2UoKTsKKwogICAgIGZvciAo
dW5zaWduZWQgcm93ID0gMDsgcm93IDwgcm93UmFuZ2UuZmlyc3Q7IHJvdysrKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbCA9IHBhcmVudC0+Y2VsbEZvckNvbHVt
bkFuZFJvdyhjb2xSYW5nZS5maXJzdCwgcm93KTsKICAgICAgICAgaWYgKCF0YWJsZUNlbGwgfHwg
dGFibGVDZWxsID09IHRoaXMgfHwgaGVhZGVycy5jb250YWlucyh0YWJsZUNlbGwpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
Y2hpbGRSb3dSYW5nZTsKLSAgICAgICAgdGFibGVDZWxsLT5yb3dJbmRleFJhbmdlKGNoaWxkUm93
UmFuZ2UpOwotICAgICAgICAgICAgCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHNjb3BlID0g
dGFibGVDZWxsLT5nZXRBdHRyaWJ1dGUoc2NvcGVBdHRyKTsKICAgICAgICAgaWYgKHNjb3BlID09
ICJjb2xncm91cCIgJiYgaXNUYWJsZUNlbGxJblNhbWVDb2xHcm91cCh0YWJsZUNlbGwpKQogICAg
ICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVDZWxsKTsKQEAgLTI4NywxMSArMjc2LDggQEAg
QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6cm93SGVhZGVycygpCiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBo
ZWFkZXJzOwogCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0g
ICAgcm93SW5kZXhSYW5nZShyb3dSYW5nZSk7Ci0KLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJhbmdlKGNvbFJhbmdlKTsKKyAgICBh
dXRvIHJvd1JhbmdlID0gcm93SW5kZXhSYW5nZSgpOworICAgIGF1dG8gY29sUmFuZ2UgPSBjb2x1
bW5JbmRleFJhbmdlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGNvbHVtbiA9IDA7IGNvbHVtbiA8
IGNvbFJhbmdlLmZpcnN0OyBjb2x1bW4rKykgewogICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsKiB0YWJsZUNlbGwgPSBwYXJlbnQtPmNlbGxGb3JDb2x1bW5BbmRSb3coY29sdW1uLCByb3dS
YW5nZS5maXJzdCk7CkBAIC0zMTYsMTEgKzMwMiwxMiBAQCBBY2Nlc3NpYmlsaXR5VGFibGVSb3cq
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKIH0KIAotdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+JiByb3dSYW5nZSkgY29uc3QKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25zdAogeworICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgMCwgMSB9OwogICAgIGlmICghaXM8UmVu
ZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAorICAgICAg
ICByZXR1cm4gcm93UmFuZ2U7CisKICAgICBSZW5kZXJUYWJsZUNlbGwmIHJlbmRlckNlbGwgPSBk
b3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCptX3JlbmRlcmVyKTsKIAogICAgIC8vIEFSSUEgMS4x
J3MgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRj
ZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZApAQCAtMzMyLDEzICszMTksMTYgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+JiByb3dSYW4KICAgICAKICAgICBpZiAoQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBw
YXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKSkKICAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBw
YXJlbnRSb3ctPnJvd0luZGV4KCk7CisKKyAgICByZXR1cm4gcm93UmFuZ2U7CiB9CiAgICAgCi12
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKSBjb25zdAorc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpIGNv
bnN0CiB7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2UgeyAw
LCAxIH07CiAgICAgaWYgKCFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQotICAgICAg
ICByZXR1cm47Ci0gICAgCisgICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKKwogICAgIGNvbnN0
IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm1fcmVu
ZGVyZXIpOwogICAgIGNvbHVtblJhbmdlLmZpcnN0ID0gY2VsbC50YWJsZSgpLT5jb2xUb0VmZkNv
bChjZWxsLmNvbCgpKTsKIApAQCAtMzQ3LDkgKzMzNywxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4m
IGNvbAogICAgIC8vIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUgY29sc3Bhbiwg
ZXhwb3NlIHRoZSBBUklBIHZhbHVlLgogICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IGF4Q29sdW1u
U3BhbigpOwogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtblJhbmdlLnNlY29uZCkgIT0g
LTEpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwogCiAgICAg
Y29sdW1uUmFuZ2Uuc2Vjb25kID0gY2VsbC50YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLmNvbCgp
ICsgY2VsbC5jb2xTcGFuKCkpIC0gY29sdW1uUmFuZ2UuZmlyc3Q7CisKKyAgICByZXR1cm4gY29s
dW1uUmFuZ2U7CiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjp0aXRsZVVJRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCmluZGV4IGZhMzYxYzY5NmU4
ZTZhZjAwNmI1YjhlYzg2NzBkZGUyNjk3MTRiYmEuLjc2NzViYjdjNTE4ZTc3MWJiMTMxNzkyZTUw
MjY1ZjEzM2M0ODBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCkBAIC0zOSwyMiArMzksMjIgQEAgY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNyZWF0ZShS
ZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVDZWxsKCk7Ci0g
ICAgCisKICAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1Rh
YmxlSGVhZGVyQ2VsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5IZWFkZXJDZWxsKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1Jvd0hlYWRlckNlbGwoKSBjb25zdDsKLSAgICAKLSAgICAvLyBmaWxs
cyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFs
IHZvaWQgcm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFu
Z2UpIGNvbnN0OwotICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1u
IHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29uc3Q7CisKKyAgICAvLyBSZXR1
cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCisgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0
aGUgY2VsbC4KKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJh
bmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
Y29sdW1uSGVhZGVycygpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciByb3dIZWFkZXJzKCkgb3ZlcnJpZGU7CiAKLSAgICBpbnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0
OwotICAgIGludCBheFJvd0luZGV4KCkgY29uc3Q7CisgICAgaW50IGF4Q29sdW1uSW5kZXgoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBpbnQgYXhSb3dJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGludCBheENvbHVtblNwYW4oKSBjb25zdDsKICAgICBpbnQgYXhSb3dTcGFuKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRBWENvbEluZGV4RnJvbVJvdyhpbnQgaW5kZXgpIHsgbV9heENvbEluZGV4RnJv
bVJvdyA9IGluZGV4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCA3OWJmMDVmZmFkZDFkODQ4OWExMzNhMzUzODA5
N2U0YWJlZjljYWI5Li5jZjQyNTc4Mzg5NzUxNTQ1Mjk5MjUyYzA1YTgzN2I3MWRhZWNkMGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlUm93LmgKQEAgLTUxLDEwICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRDaGls
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgCiAgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92
ZXJyaWRlOwotICAgIAotICAgIGludCBheENvbHVtbkluZGV4KCkgY29uc3Q7Ci0gICAgaW50IGF4
Um93SW5kZXgoKSBjb25zdDsKLSAgICAKKworICAgIGludCBheENvbHVtbkluZGV4KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgaW50IGF4Um93SW5kZXgoKSBjb25zdCBvdmVycmlkZTsKKwogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhSZW5kZXJPYmplY3QqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcAppbmRleCBlZDE5
MjViMmE1Mzk0MDk3ZjA4MmY2YmE1YzBmMjkzODc3NDY1M2JhLi4yODlkM2E3MDE1ZGY4OGY3ZGFk
NjJlODE4NmYwODExMGQ0NTU2Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGFibGVDZWxsLmNwcApAQCAtODUsMTAgKzg1LDcgQEAgZ2ludCB3ZWJraXRBY2Nlc3NpYmxlVGFi
bGVDZWxsR2V0Q29sdW1uU3BhbihBdGtUYWJsZUNlbGwqIGNlbGwpCiAgICAgaWYgKCFpczxBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsPihheE9iamVjdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7Ci0gICAgZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmF4T2JqZWN0KS5jb2x1bW5JbmRleFJhbmdlKGNvbHVt
blJhbmdlKTsKLQotICAgIHJldHVybiBjb2x1bW5SYW5nZS5zZWNvbmQ7CisgICAgcmV0dXJuIGF4
T2JqZWN0LT5jb2x1bW5JbmRleFJhbmdlKCkuc2Vjb25kOwogfQogCiBnaW50IHdlYmtpdEFjY2Vz
c2libGVUYWJsZUNlbGxHZXRSb3dTcGFuKEF0a1RhYmxlQ2VsbCogY2VsbCkKQEAgLTEwMCwxMCAr
OTcsNyBAQCBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUNlbGxHZXRSb3dTcGFuKEF0a1RhYmxl
Q2VsbCogY2VsbCkKICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KGF4T2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiByb3dSYW5nZTsKLSAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqYXhPYmpl
Y3QpLnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotCi0gICAgcmV0dXJuIHJvd1JhbmdlLnNlY29u
ZDsKKyAgICByZXR1cm4gYXhPYmplY3QtPnJvd0luZGV4UmFuZ2UoKS5zZWNvbmQ7CiB9CiAKIGdi
b29sZWFuIHdlYmtpdEFjY2Vzc2libGVUYWJsZUNlbGxHZXRQb3NpdGlvbihBdGtUYWJsZUNlbGwq
IGNlbGwsIGdpbnQqIHJvdywgZ2ludCogY29sdW1uKQpAQCAtMTE1LDIzICsxMDksMTggQEAgZ2Jv
b2xlYW4gd2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFBvc2l0aW9uKEF0a1RhYmxlQ2VsbCog
Y2VsbCwgZ2ludCogcm93LCBnaW4KICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+
KGF4T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gY29sdW1uUm93UmFuZ2U7CiAgICAgaWYgKHJvdykgewogICAgICAgICAv
LyBhcmlhLXJvd2luZGV4IGlzIDEtYmFzZWQuCi0gICAgICAgIGludCByb3dJbmRleCA9IGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpheE9iamVjdCkuYXhSb3dJbmRleCgpIC0gMTsK
LSAgICAgICAgaWYgKHJvd0luZGV4IDw9IC0xKSB7Ci0gICAgICAgICAgICBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsPigqYXhPYmplY3QpLnJvd0luZGV4UmFuZ2UoY29sdW1uUm93UmFu
Z2UpOwotICAgICAgICAgICAgcm93SW5kZXggPSBjb2x1bW5Sb3dSYW5nZS5maXJzdDsKLSAgICAg
ICAgfQorICAgICAgICBpbnQgcm93SW5kZXggPSBheE9iamVjdC0+YXhSb3dJbmRleCgpIC0gMTsK
KyAgICAgICAgaWYgKHJvd0luZGV4IDw9IC0xKQorICAgICAgICAgICAgcm93SW5kZXggPSBheE9i
amVjdC0+cm93SW5kZXhSYW5nZSgpLmZpcnN0OwogICAgICAgICAqcm93ID0gcm93SW5kZXg7CiAg
ICAgfQogICAgIGlmIChjb2x1bW4pIHsKICAgICAgICAgLy8gYXJpYS1jb2xpbmRleCBpcyAxLWJh
c2VkLgotICAgICAgICBpbnQgY29sdW1uSW5kZXggPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsPigqYXhPYmplY3QpLmF4Q29sdW1uSW5kZXgoKSAtIDE7Ci0gICAgICAgIGlmIChjb2x1
bW5JbmRleCA8PSAtMSkgewotICAgICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4oKmF4T2JqZWN0KS5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJvd1JhbmdlKTsKLSAgICAg
ICAgICAgIGNvbHVtbkluZGV4ID0gY29sdW1uUm93UmFuZ2UuZmlyc3Q7Ci0gICAgICAgIH0KKyAg
ICAgICAgaW50IGNvbHVtbkluZGV4ID0gYXhPYmplY3QtPmF4Q29sdW1uSW5kZXgoKSAtIDE7Cisg
ICAgICAgIGlmIChjb2x1bW5JbmRleCA8PSAtMSkKKyAgICAgICAgICAgIGNvbHVtbkluZGV4ID0g
YXhPYmplY3QtPmNvbHVtbkluZGV4UmFuZ2UoKS5maXJzdDsKICAgICAgICAgKmNvbHVtbiA9IGNv
bHVtbkluZGV4OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQppbmRleCAwYjNiMjY3MjMzOWJiMWRlZWY5MTlmNDgzMTc0OWI0ODE3OWU4MWY0Li44MDYzNmM3
YzBlYjQzZmUzNjYwYzgzNDUwODMxZGYzYTFlZmYzM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTIyNiwxMCArMTIyNiw4IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3Ry
aW5nKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIC8vIEdldCB0aGUgcm93IGFuZCBj
b2x1bW4gcmFuZ2UsIHNvIHdlIGNhbiB1c2UgdGhlbSB0byBmaW5kIHRoZSBoZWFkZXJzLgotICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwotICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwotICAgIHRhYmxlQ2VsbC0+cm93SW5kZXhS
YW5nZShyb3dSYW5nZSk7Ci0gICAgdGFibGVDZWxsLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJh
bmdlKTsKKyAgICBhdXRvIHJvd1JhbmdlID0gdGFibGVDZWxsLT5yb3dJbmRleFJhbmdlKCk7Cisg
ICAgYXV0byBjb2x1bW5SYW5nZSA9IHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZSgpOwogCiAg
ICAgYXV0byByb3dIZWFkZXJzID0gdGFibGUtPnJvd0hlYWRlcnMoKTsKICAgICBhdXRvIGNvbHVt
bkhlYWRlcnMgPSB0YWJsZS0+Y29sdW1uSGVhZGVycygpOwpAQCAtMTI1MCw4ICsxMjQ4LDcgQEAg
c3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQs
IE5TU3RyaW5nICpzdHJpbmcpCiAgICAgZm9yIChjb25zdCBhdXRvJiByb3dIZWFkZXIgOiByb3dI
ZWFkZXJzKSB7CiAgICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKnJvd0hl
YWRlcikpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gcm93SGVhZGVyUmFuZ2U7Ci0gICAgICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw+KCpyb3dIZWFkZXIpLnJvd0luZGV4UmFuZ2Uocm93SGVhZGVyUmFuZ2UpOworICAg
ICAgICBhdXRvIHJvd0hlYWRlclJhbmdlID0gcm93SGVhZGVyLT5yb3dJbmRleFJhbmdlKCk7CiAg
ICAgICAgIGlmIChyb3dSYW5nZUluZGV4ID49IHJvd0hlYWRlclJhbmdlLmZpcnN0ICYmIHJvd1Jh
bmdlSW5kZXggPCByb3dIZWFkZXJSYW5nZS5maXJzdCArIHJvd0hlYWRlclJhbmdlLnNlY29uZCkg
ewogICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0g
cm93SGVhZGVyLT53cmFwcGVyKCkpCiAgICAgICAgICAgICAgICAgW2hlYWRlcnMgYWRkT2JqZWN0
OndyYXBwZXJdOwpAQCAtMTM2NCw5ICsxMzYxLDggQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5n
VG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiAgICAg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogdGFibGVDZWxsID0gW3NlbGYgdGFibGVDZWxsUGFyZW50
XTsKICAgICBpZiAoIXRhYmxlQ2VsbCkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90
Rm91bmQsIDApOwotICAgIAotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1Jh
bmdlOwotICAgIHRhYmxlQ2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CisKKyAgICBhdXRv
IHJvd1JhbmdlID0gdGFibGVDZWxsLT5yb3dJbmRleFJhbmdlKCk7CiAgICAgcmV0dXJuIE5TTWFr
ZVJhbmdlKHJvd1JhbmdlLmZpcnN0LCByb3dSYW5nZS5zZWNvbmQpOwogfQogCkBAIC0xMzc4LDkg
KzEzNzQsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJp
bmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
KiB0YWJsZUNlbGwgPSBbc2VsZiB0YWJsZUNlbGxQYXJlbnRdOwogICAgIGlmICghdGFibGVDZWxs
KQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7Ci0gICAgCi0gICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7Ci0gICAgdGFibGVDZWxs
LT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKKworICAgIGF1dG8gY29sdW1uUmFuZ2Ug
PSB0YWJsZUNlbGwtPmNvbHVtbkluZGV4UmFuZ2UoKTsKICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
Y29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5jcHAKaW5kZXggYTZiMDEwYTNlODcwZGZmZjM5NDk5ZmM2MTA4NTgzMzI4ZjNh
OTVlMS4uZDQ5NDZkNWEzYWNmY2MxNjk3MjhkZmJhZTRlMTlkOTU5NWY0MTlhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTExNCw3ICsxMTQsNiBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBib29s
IGlzUm9vdAogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1NlbGVjdGVkT3B0aW9u
QWN0aXZlLCBvYmplY3QuaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpKTsKICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNTbGlkZXIsIG9iamVjdC5pc1NsaWRlcigpKTsKICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTdHlsZUZvcm1hdEdyb3VwLCBvYmplY3QuaXNTdHls
ZUZvcm1hdEdyb3VwKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxl
Q2VsbCwgb2JqZWN0LmlzVGFibGVDZWxsKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc1RhYmxlUm93LCBvYmplY3QuaXNUYWJsZVJvdygpKTsKICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SXNUZXh0Q29udHJvbCwgb2JqZWN0LmlzVGV4dENvbnRyb2woKSk7CiAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzVHJlZSwgb2JqZWN0LmlzVHJlZSgpKTsK
QEAgLTIzNiw2ICsyMzUsMTYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0
cmlidXRlRGF0YShBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QKICAgICAgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFYUm93Q291bnQsIG9iamVjdC5heFJvd0NvdW50KCkp
OwogICAgIH0KIAorICAgIGlmIChvYmplY3QuaXNUYWJsZUNlbGwoKSkgeworICAgICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZUNlbGwsIG9iamVjdC5pc1RhYmxlQ2VsbCgp
KTsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkluZGV4UmFuZ2Us
IG9iamVjdC5jb2x1bW5JbmRleFJhbmdlKCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6Um93SW5kZXhSYW5nZSwgb2JqZWN0LnJvd0luZGV4UmFuZ2UoKSk7CisgICAgICAg
IHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5IZWFkZXJzLCBv
YmplY3QuY29sdW1uSGVhZGVycygpKTsKKyAgICAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OlJvd0hlYWRlcnMsIG9iamVjdC5yb3dIZWFkZXJzKCkpOworICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhDb2x1bW5JbmRleCwgb2JqZWN0LmF4Q29s
dW1uSW5kZXgoKSk7CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBWFJvd0lu
ZGV4LCBvYmplY3QuYXhSb3dJbmRleCgpKTsKKyAgICB9CisKICAgICBpZiAob2JqZWN0LmlzVGFi
bGVDb2x1bW4oKSkgewogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNUYWJs
ZUNvbHVtbiwgb2JqZWN0LmlzVGFibGVDb2x1bW4oKSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpDb2x1bW5JbmRleCwgb2JqZWN0LmNvbHVtbkluZGV4KCkpOwpAQCAtNzQy
LDYgKzc1MSwxNiBAQCBPcHRpb25TZXQ8VD4gQVhJc29sYXRlZE9iamVjdDo6b3B0aW9uU2V0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogICAgICk7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitzdGQ6OnBhaXI8VCwgVD4gQVhJc29sYXRlZE9iamVjdDo6cGFpckF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKK3sKKyAgICBh
dXRvIHZhbHVlID0gbV9hdHRyaWJ1dGVNYXAuZ2V0KHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtdIChzdGQ6OnBhaXI8VCwgVD4mIHR5cGVk
VmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdIChhdXRvJikgeyByZXR1
cm4gc3RkOjpwYWlyPFQsIFQ+KDAsIDEpOyB9CisgICAgKTsKK30KKwogdWludDY0X3QgQVhJc29s
YXRlZE9iamVjdDo6dWludDY0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0ZU1hcC5nZXQocHJvcGVy
dHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBlN2YyYTVlYjZmYWE1ZTRiMWNj
Y2E0NDlhM2Q2OWUzMjMzNjUzNjYxLi41YTAzZmQwZTcwMTlhMGIwNTE3ZWFhMWNkMzUyYTlkMjEx
NDhlZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC05OSw3ICs5OSw5IEBAIHByaXZh
dGU6CiAgICAgICAgIEFSSUFSb2xlQXR0cmlidXRlLAogICAgICAgICBBUklBT3duc0VsZW1lbnRz
LAogICAgICAgICBBWENvbHVtbkNvdW50LAorICAgICAgICBBWENvbHVtbkluZGV4LAogICAgICAg
ICBBWFJvd0NvdW50LAorICAgICAgICBBWFJvd0luZGV4LAogICAgICAgICBCbG9ja3F1b3RlTGV2
ZWwsCiAgICAgICAgIEJvdW5kaW5nQm94UmVjdCwKICAgICAgICAgQ2FuSGF2ZVNlbGVjdGVkQ2hp
bGRyZW4sCkBAIC0xMjMsNiArMTI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ29sdW1uSGVhZGVy
LAogICAgICAgICBDb2x1bW5IZWFkZXJzLAogICAgICAgICBDb2x1bW5JbmRleCwKKyAgICAgICAg
Q29sdW1uSW5kZXhSYW5nZSwKICAgICAgICAgQ29tcHV0ZWRMYWJlbCwKICAgICAgICAgQ29tcHV0
ZWRSb2xlU3RyaW5nLAogICAgICAgICBDdXJyZW50U3RhdGUsCkBAIC0yODQsNiArMjg3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgUm93cywKICAgICAgICAgUm93Q291bnQsCiAgICAgICAgIFJvd0hl
YWRlcnMsCisgICAgICAgIFJvd0luZGV4UmFuZ2UsCiAgICAgICAgIFNlbGVjdGVkQ2hpbGRyZW4s
CiAgICAgICAgIFNlbGVjdGVkUmFkaW9CdXR0b24sCiAgICAgICAgIFNlbGVjdGVkVGFiSXRlbSwK
QEAgLTMzMCw4ICszMzQsOCBAQCBwcml2YXRlOgogICAgICAgICBBY2Nlc3NpYmlsaXR5VGV4dFNv
dXJjZSB0ZXh0U291cmNlOwogICAgICAgICBWZWN0b3I8QVhJRD4gdGV4dEVsZW1lbnRzOwogICAg
IH07Ci0gICAgCi0gICAgdXNpbmcgQXR0cmlidXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6
Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1
aW50NjRfdCwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRSZWN0LCBBWElELCBJbnRQb2lu
dCwgT3B0aW9uU2V0PFNwZWFrQXM+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZVRl
eHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlTWF0aE11
bHRpc2NyaXB0UGFpcj4sIFZlY3RvcjxTdHJpbmc+PjsKKworICAgIHVzaW5nIEF0dHJpYnV0ZVZh
bHVlVmFyaWFudCA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFN0cmluZywgYm9vbCwgaW50LCB1
bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIENvbG9yLCBVUkwsIExheW91dFJlY3Qs
IEZsb2F0UmVjdCwgQVhJRCwgSW50UG9pbnQsIE9wdGlvblNldDxTcGVha0FzPiwgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlVGV4
dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVs
dGlzY3JpcHRQYWlyPiwgVmVjdG9yPFN0cmluZz4+OwogICAgIHZvaWQgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWUsIEF0dHJpYnV0ZVZhbHVlVmFyaWFudCYmLCBib29sIHNob3VsZFJlbW92ZSA9
IGZhbHNlKTsKICAgICB2b2lkIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lLCBBWENv
cmVPYmplY3QqKTsKICAgICB2b2lkIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlO
YW1lLCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTM1MCw2ICszNTQs
NyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgcmVjdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0
b3I8VD4gdmVjdG9yQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IE9wdGlvblNldDxUPiBvcHRpb25TZXRBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RkOjpwYWly
PFQsIFQ+IHBhaXJBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAgICB2
b2lkIGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lLCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICB2b2lkIHNldE1hdGhzY3JpcHRzKEFY
UHJvcGVydHlOYW1lLCBBWENvcmVPYmplY3QmKTsKQEAgLTQwMCw2ICs0MDUsMTUgQEAgcHJpdmF0
ZToKICAgICBpbnQgYXhDb2x1bW5Db3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBWENvbHVtbkNvdW50KTsgfQogICAgIGludCBh
eFJvd0NvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OkFYUm93Q291bnQpOyB9CiAKKyAgICAvLyBUYWJsZSBjZWxsIHN1cHBvcnQu
CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZUNlbGwpOyB9CisgICAgLy8gUmV0dXJu
cyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgorICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBwYWlyQXR0cmlidXRlVmFsdWU8dW5zaWduZWQ+KEFYUHJvcGVydHlOYW1lOjpSb3dJ
bmRleFJhbmdlKTsgfQorICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1
bW4gc3BhbiBvZiB0aGUgY2VsbC4KKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBj
b2x1bW5JbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFpckF0dHJpYnV0ZVZh
bHVlPHVuc2lnbmVkPihBWFByb3BlcnR5TmFtZTo6Q29sdW1uSW5kZXhSYW5nZSk7IH0KKyAgICBp
bnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpBWENvbHVtbkluZGV4KTsgfQorICAgIGludCBheFJvd0luZGV4
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OkFYUm93SW5kZXgpOyB9CisKICAgICBib29sIGlzVGFibGVSb3coKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGVSb3cp
OyB9CiAKICAgICAvLyBUYWJsZSBjb2x1bW4gc3VwcG9ydC4KQEAgLTQwNyw3ICs0MjEsNiBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIGNvbHVtbkluZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29sdW1uSW5kZXgpOyB9
CiAgICAgQVhDb3JlT2JqZWN0KiBjb2x1bW5IZWFkZXIoKSBvdmVycmlkZSB7IHJldHVybiBvYmpl
Y3RBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29sdW1uSGVhZGVyKTsgfQogCi0gICAg
Ym9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZUNlbGwpOyB9CiAgICAgYm9vbCBpc0ZpZWxkc2V0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc0ZpZWxkc2V0KTsgfQogICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNHcm91cCk7IH0KICAg
ICBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0FSSUFUcmVlR3JpZFJvdyk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMzg0OTk0OWJmNjMzZjRhNDM2
ZGYwNDBhNzg1MjQxNDhhNDU1NDBiYi4uNjU3ZTNmNzAwYjhiYWI4NDNiNWE1MDVmOTNhY2QxOTk2
MTM3MWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTI3
NTgsMjkgKzI3NTgsMjggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmJh
Y2tpbmdPYmplY3QpKSB7Ci0gICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGVDZWxsPigqYmFja2luZ09iamVjdCk7CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlz
VGFibGVDZWxsKCkpIHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXSkgewotICAgICAgICAgICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0gICAgICAgICAgICBjZWxs
LnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOworICAgICAgICAgICAgYXV0byByb3dSYW5nZSA9IGJh
Y2tpbmdPYmplY3QtPnJvd0luZGV4UmFuZ2UoKTsKICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93UmFuZ2Uuc2Vj
b25kKV07CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAg
ICAgICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKLSAgICAg
ICAgICAgIGNlbGwuY29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7CisgICAgICAgICAgICBh
dXRvIGNvbHVtblJhbmdlID0gYmFja2luZ09iamVjdC0+Y29sdW1uSW5kZXhSYW5nZSgpOwogICAg
ICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKGNvbHVt
blJhbmdlLmZpcnN0LCBjb2x1bW5SYW5nZS5zZWNvbmQpXTsKICAgICAgICAgfQorCiAgICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1u
SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShjZWxsLmNvbHVtbkhlYWRlcnMoKSk7CisgICAgICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShiYWNraW5nT2JqZWN0LT5jb2x1bW5IZWFkZXJzKCkpOwogCiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVy
VUlFbGVtZW50c0F0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShjZWxsLnJvd0hlYWRlcnMoKSk7CisgICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShiYWNraW5nT2JqZWN0LT5yb3dIZWFkZXJzKCkpOwogCiAgICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmli
dXRlXSkKLSAgICAgICAgICAgIHJldHVybiBAKGNlbGwuYXhDb2x1bW5JbmRleCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPmF4Q29sdW1uSW5kZXgoKSk7CiAKICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklB
Um93SW5kZXhBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIEAoY2VsbC5heFJvd0luZGV4
KCkpOworICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YXhSb3dJbmRleCgpKTsK
ICAgICB9CiAKICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUcmVlKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391812</attachid>
            <date>2020-02-26 17:02:29 -0800</date>
            <delta_ts>2020-02-26 18:31:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208263-20200226200228.patch</filename>
            <type>text/plain</type>
            <size>37385</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JhZGRjN2U1NTczYzQ4
ZGQzODMzOTc0MzRiOGUxOTMxMGQzOWU3MS4uOGQ0OGNlZTU2NTBlMDFhZWNkMzJmODc1ZGJiYzA5
NThlMTMxNDEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAyLTI2ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBWElzb2xhdGVk
T2JqZWN0IHN1cHBvcnQgZm9yIHRhYmxlIGNlbGxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRmxlaXphY2guCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAtIEV4cG9zZWQgdGhlIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgaW50ZXJmYWNlIHRocm91
Z2ggQVhDb3JlT2JqZWN0LgorICAgICAgICAtIFRoaXMgd2F5IHRoZXJlIGlzIG5vIG5lZWQgdG8g
ZG93bmNhc3QgaW4gY2xpZW50IGNvZGUgYW5kIHRoZSBzYW1lCisgICAgICAgIHBsYXRmb3JtIHdy
YXBwZXIgY29kZSB3b3JrcyBmb3IgQWNjZXNzaWJpbGl0eU9iamVjdHMgYW5kCisgICAgICAgIEFY
SXNvbGF0ZWRPYmplY3RzLgorICAgICAgICAtIENvbXBsZXRlZCBjYWNoaW5nIG9mIHRhYmxlIGNl
bGwgcHJvcGVydGllcyBpbiBBWElzb2xhdGVkT2JqZWN0LgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmNv
bHVtbkluZGV4UmFuZ2UgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzQ29sdW1uSGVh
ZGVyQ2VsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
Ojppc1Jvd0hlYWRlckNlbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGxJblNhbWVDb2xHcm91cCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3Bw
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldENvbHVtblNwYW4pOgorICAg
ICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFJvd1NwYW4pOgorICAgICAgICAod2Vi
a2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFBvc2l0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRz
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlSb3dSYW5nZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBh
Y2Nlc3NpYmlsaXR5Q29sdW1uUmFuZ2VdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OnBhaXJBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisKIDIwMjAtMDItMjYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYSXNvbGF0ZWRPYmplY3Qgc3VwcG9ydCBmb3IgdGFibGUg
Y29sdW1uIG9iamVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAppbmRleCA2YzRhZjE1ODk3YmM5ODcw
YjRjMDFjNGExMDZhYTdlMTYwZDE2YWViLi42MzljNDYwMWU1ZjdiOTQ5NzA0YmE4ODM0N2M3MmRl
NjU5YjdiNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTYzLDExICs2MywxMiBAQCBBY2Nl
c3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFRhYmxlKCkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYg
cm93UmFuZ2UpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKIHsKKyAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZSB7IDAsIDEgfTsKICAgICBBWENvcmVPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogICAgIGlmICghcGFyZW50KQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiByb3dSYW5nZTsKIAogICAgIGlmIChpczxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgZ290
IGEgdGFibGUgcm93LCB1c2UgaXRzIEFQSS4KQEAgLTc3LDcgKzc4LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+JiByb3cKICAgICAgICAgLy8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5k
ZXggZm9yIHRoZSBjZWxsIGluIGl0LgogICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKICAgICAg
ICAgaWYgKCFjb2x1bW5Db3VudCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJl
dHVybiByb3dSYW5nZTsKIAogICAgICAgICBjb25zdCBhdXRvJiBzaWJsaW5ncyA9IHBhcmVudC0+
Y2hpbGRyZW4oKTsKICAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXplID0gc2libGluZ3Muc2l6
ZSgpOwpAQCAtOTIsMTUgKzkzLDE2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6
cm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93CiAgICAgLy8g
QVJJQSAxLjEsIGFyaWEtcm93c3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9yIGNlbGxzIGFu
ZCBncmlkY2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQgaW4gYSBuYXRpdmUgdGFibGUuCiAg
ICAgLy8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBoZXJlLgogICAgIHJv
d1JhbmdlLnNlY29uZCA9IGF4Um93U3BhbldpdGhSb3dJbmRleChyb3dSYW5nZS5maXJzdCk7CisK
KyAgICByZXR1cm4gcm93UmFuZ2U7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uc3QKIHsK
ICAgICBpbnQgcm93U3BhbiA9IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbigpOwog
ICAgIGlmIChyb3dTcGFuID09IC0xKSB7Ci0gICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IHJhbmdlOwotICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJh
bmdlKHJhbmdlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4ocmFu
Z2Uuc2Vjb25kKSwgMSk7CisgICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpyb3dJbmRleFJhbmdlKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChyYW5nZS5zZWNv
bmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7CiAgICAgfQogCiAgICAgQVhDb3JlT2JqZWN0
KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKQEAgLTEzMiwyMSArMTM0LDIyIEBA
IHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRl
eCh1bnNpZ25lZCByb3dJbmRleCkgY29uCiAgICAgcmV0dXJuIHJvd1NwYW47CiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiYgY29sdW1uUmFuZ2UpIGNvbnN0CitzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKCkg
Y29uc3QKIHsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZSB7
IDAsIDEgfTsKICAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOwogICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBj
b2x1bW5SYW5nZTsKIAogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50
KQogICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYgZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZSgpKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7CiAKICAgICBjb25zdCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOwogICAg
IHVuc2lnbmVkIGNoaWxkcmVuU2l6ZSA9IHNpYmxpbmdzLnNpemUoKTsKICAgICB1bnNpZ25lZCBp
bmRleFdpdGhTcGFuID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hpbGRyZW5T
aXplOyArK2spIHsKLSAgICAgICAgYXV0byBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOworICAg
ICAgICBhdXRvKiBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOwogICAgICAgICBpZiAoY2hpbGQg
PT0gdGhpcykgewogICAgICAgICAgICAgY29sdW1uUmFuZ2UuZmlyc3QgPSBpbmRleFdpdGhTcGFu
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTgsMTIgKzE2MSwxMyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4mCiAgICAgLy8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBo
ZXJlLgogICAgIGludCBjb2x1bW5TcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1
bW5TcGFuKCk7CiAgICAgaWYgKGNvbHVtblNwYW4gPT0gLTEpIHsKLSAgICAgICAgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gcmFuZ2U7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNvbHVtbkluZGV4UmFuZ2UocmFuZ2UpOworICAgICAgICBhdXRvIHJhbmdlID0gQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpOwogICAgICAgICBjb2x1bW5TcGFu
ID0gcmFuZ2Uuc2Vjb25kOwogICAgIH0KIAogICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IHN0ZDo6
bWF4KGNvbHVtblNwYW4sIDEpOworCisgICAgcmV0dXJuIGNvbHVtblJhbmdlOwogfQogCiBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91
cCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCmluZGV4IGU0MWEyNzBmZGYzNDU1ZDE0ZjNiOWIwYWJm
ZDZhODY5M2Q2YWUzNGYuLmU3ZmFlOTI5NmQ5MDMxMzY0N2Q1MTg2MjUxNzk0ZGY4ZDVhMDFmNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC0zNiwxMiArMzYsMTMgQEAgY2xhc3MgQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbCBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw+IGNyZWF0ZShS
ZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKCk7
Ci0gICAgCi0gICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBv
ZiBjZWxsCi0gICAgdm9pZCByb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+JiByb3dSYW5nZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8gZmlsbHMgaW4gdGhlIHN0YXJ0
IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiBjZWxsCi0gICAgdm9pZCBjb2x1bW5JbmRleFJh
bmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgCisKK3Byb3RlY3RlZDoKKyAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2Nh
dGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIC8vIFJldHVybnMg
dGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KKyAgICBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbChS
ZW5kZXJPYmplY3QqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCBiZDQ5ZDNmMDA4ZWI2MzczZGI4ZDVjZDQzZDViNDI5
M2MzZTEwOTBhLi42YjE1ZGUyOGMzNjExYThlZmFkNzQyZGZmZmYwOTg0NTczNTM0MGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aApAQCAtMTcxLDEzICsxNzEsMjEgQEAgcHVibGljOgogICAgIGludCBheENvbHVtbkNvdW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCisgICAgLy8gVGFibGUgY2VsbCBzdXBwb3J0LgorICAg
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4K
KyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4geyAwLCAxIH07IH0KKyAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBs
b2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCisgICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gY29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHsgMCwgMSB9OyB9CisgICAgaW50IGF4Q29sdW1uSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAtMTsgfQorICAgIGludCBheFJvd0luZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
LTE7IH0KKwogICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHVuc2lnbmVkIGNvbHVtbkluZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQogICAgIEFYQ29yZU9iamVjdCogY29sdW1uSGVhZGVyKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCAxNzA5ZmNmZjYz
YzFiMWFhYWNiZTUzZGU2YWNjMmE3MDJlZDkxMDAzLi4yMDRjOThhZTU1OGYwODliNDhhODIyOWY3
M2MxNGQwYTEzNzE3NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtNTUyLDYgKzU1Miwx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgYXhDb2x1bW5Db3VudCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGludCBheFJvd0NvdW50KCkgY29uc3QgPSAwOwogCisgICAgLy8gVGFibGUg
Y2VsbCBzdXBwb3J0LgorICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0ID0gMDsK
KyAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNl
bGwuCisgICAgdmlydHVhbCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJh
bmdlKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBj
b2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQg
YXhDb2x1bW5JbmRleCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBheFJvd0luZGV4KCkg
Y29uc3QgPSAwOworCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVSb3coKSBjb25zdCA9IDA7CiAK
ICAgICAvLyBUYWJsZSBjb2x1bW4gc3VwcG9ydC4KQEAgLTU1OSw4ICs1NjgsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjb2x1bW5JbmRleCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogY29sdW1uSGVhZGVyKCkgPSAwOwogCi0gICAgdmlydHVhbCBib29s
IGlzVGFibGVDZWxsKCkgY29uc3QgPSAwOwotCiAgICAgdmlydHVhbCBib29sIGlzRmllbGRzZXQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzQVJJQVRyZWVHcmlkUm93KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDFi
Y2U4ODY5MjdmNjMxMTkxMTRiMjdhMzZjZTEzZWY3Y2Y4ZGZlZmUuLmQzMzM4NGZmNzg3ZTI5OTMz
NDY5YjFiMGI0MzdjZjYyOGJlNDg0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKQEAgLTYzNywxOSArNjM3LDE2IEBAIEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFu
ZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgICAgICBBU1NFUlQoaXM8QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbD4oKmNoaWxkKSk7CiAgICAgICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw+KCpjaGlsZCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdl
OwotICAgICAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0g
ICAgICAgICAgICBhdXRvJiB0YWJsZUNlbGxDaGlsZCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw+KCpjaGlsZCk7Ci0gICAgICAgICAgICB0YWJsZUNlbGxDaGlsZC5jb2x1bW5JbmRl
eFJhbmdlKGNvbHVtblJhbmdlKTsKLSAgICAgICAgICAgIHRhYmxlQ2VsbENoaWxkLnJvd0luZGV4
UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGF1dG8gY29sdW1u
UmFuZ2UgPSBjaGlsZC0+Y29sdW1uSW5kZXhSYW5nZSgpOworICAgICAgICAgICAgYXV0byByb3dS
YW5nZSA9IGNoaWxkLT5yb3dJbmRleFJhbmdlKCk7CisKICAgICAgICAgICAgIGlmICgoY29sdW1u
ID49IGNvbHVtblJhbmdlLmZpcnN0ICYmIGNvbHVtbiA8IChjb2x1bW5SYW5nZS5maXJzdCArIGNv
bHVtblJhbmdlLnNlY29uZCkpCiAgICAgICAgICAgICAgICAgJiYgKHJvdyA+PSByb3dSYW5nZS5m
aXJzdCAmJiByb3cgPCAocm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gJnRhYmxlQ2VsbENoaWxkOworICAgICAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihjaGlsZCk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXgg
MDEzMjdkMmJiMGM2YzFiNDUzNzUzZTZjMzJkYjkyMjJhMTVlZWViMC4uY2I2ZjJkZTJkOGYyNDBm
MzAxNDU1YzA2ZjFlMDE2YjI0ZDMxNmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0xNjUsOCArMTY1
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc0NvbHVtbkhlYWRlckNlbGwoKSBj
b25zdAogICAgICAgICBpZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChwYXJlbnROb2RlLT5oYXNUYWdOYW1l
KHRhYmxlVGFnKSB8fCBwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkgewotICAgICAg
ICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0gICAgICAgICAg
ICByb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKKyAgICAgICAgICAgIGF1dG8gcm93UmFuZ2UgPSBy
b3dJbmRleFJhbmdlKCk7CiAgICAgICAgICAgICBpZiAoIXJvd1JhbmdlLmZpcnN0KQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkw
LDggKzE4OSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNSb3dIZWFkZXJDZWxs
KCkgY29uc3QKICAgICAvLyBDaGVja2luZyB0YWJsZVRhZyBhbGxvd3MgdG8gY2hlY2sgdGhlIGNh
c2Ugb2YgZGlyZWN0IHJvdyBwbGFjZW1lbnQgaW4gdGhlIHRhYmxlIGFuZCBsZXRzIHN0b3AgdGhl
IGxvb3AgYXQgdGhlIHRhYmxlIGxldmVsLgogICAgIGZvciAoTm9kZSogcGFyZW50Tm9kZSA9IG5v
ZGUoKTsgcGFyZW50Tm9kZTsgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUtPnBhcmVudE5vZGUoKSkg
ewogICAgICAgICBpZiAocGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgcGFyZW50
Tm9kZS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgcGFyZW50Tm9kZS0+aGFzVGFnTmFtZSh0YWJs
ZVRhZykpIHsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbFJh
bmdlOwotICAgICAgICAgICAgY29sdW1uSW5kZXhSYW5nZShjb2xSYW5nZSk7CisgICAgICAgICAg
ICBhdXRvIGNvbFJhbmdlID0gY29sdW1uSW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgaWYgKCFj
b2xSYW5nZS5maXJzdCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIyMiwxMiArMjIwLDkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjppc1RhYmxlQ2VsbEluU2FtZVJvd0dyb3VwKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
IG8KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbEluU2FtZUNvbEdy
b3VwKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbCkKIHsKLSAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJhbmdlKGNvbFJh
bmdlKTsKLSAgICAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBvdGhlckNvbFJh
bmdlOwotICAgIHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZShvdGhlckNvbFJhbmdlKTsKLSAg
ICAKKyAgICBhdXRvIGNvbFJhbmdlID0gY29sdW1uSW5kZXhSYW5nZSgpOworICAgIGF1dG8gb3Ro
ZXJDb2xSYW5nZSA9IHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZSgpOworCiAgICAgaWYgKGNv
bFJhbmdlLmZpcnN0IDw9IChvdGhlckNvbFJhbmdlLmZpcnN0ICsgb3RoZXJDb2xSYW5nZS5zZWNv
bmQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTUsMjEg
KzI1MCwxNSBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKAogICAgIC8vIElmIHRoZSBoZWFkZXJz
IGF0dHJpYnV0ZSByZXR1cm5lZCB2YWxpZCB2YWx1ZXMsIHRoZW4gZG8gbm90IGZ1cnRoZXIgc2Vh
cmNoIGZvciBjb2x1bW4gaGVhZGVycy4KICAgICBpZiAoIWhlYWRlcnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gaGVhZGVyczsKLSAgICAKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiByb3dSYW5nZTsKLSAgICByb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKLSAgICAKLSAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJh
bmdlKGNvbFJhbmdlKTsKLSAgICAKKworICAgIGF1dG8gcm93UmFuZ2UgPSByb3dJbmRleFJhbmdl
KCk7CisgICAgYXV0byBjb2xSYW5nZSA9IGNvbHVtbkluZGV4UmFuZ2UoKTsKKwogICAgIGZvciAo
dW5zaWduZWQgcm93ID0gMDsgcm93IDwgcm93UmFuZ2UuZmlyc3Q7IHJvdysrKSB7CiAgICAgICAg
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIHRhYmxlQ2VsbCA9IHBhcmVudC0+Y2VsbEZvckNvbHVt
bkFuZFJvdyhjb2xSYW5nZS5maXJzdCwgcm93KTsKICAgICAgICAgaWYgKCF0YWJsZUNlbGwgfHwg
dGFibGVDZWxsID09IHRoaXMgfHwgaGVhZGVycy5jb250YWlucyh0YWJsZUNlbGwpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
Y2hpbGRSb3dSYW5nZTsKLSAgICAgICAgdGFibGVDZWxsLT5yb3dJbmRleFJhbmdlKGNoaWxkUm93
UmFuZ2UpOwotICAgICAgICAgICAgCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIHNjb3BlID0g
dGFibGVDZWxsLT5nZXRBdHRyaWJ1dGUoc2NvcGVBdHRyKTsKICAgICAgICAgaWYgKHNjb3BlID09
ICJjb2xncm91cCIgJiYgaXNUYWJsZUNlbGxJblNhbWVDb2xHcm91cCh0YWJsZUNlbGwpKQogICAg
ICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVDZWxsKTsKQEAgLTI4NywxMSArMjc2LDggQEAg
QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6cm93SGVhZGVycygpCiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBo
ZWFkZXJzOwogCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0g
ICAgcm93SW5kZXhSYW5nZShyb3dSYW5nZSk7Ci0KLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBjb2xSYW5nZTsKLSAgICBjb2x1bW5JbmRleFJhbmdlKGNvbFJhbmdlKTsKKyAgICBh
dXRvIHJvd1JhbmdlID0gcm93SW5kZXhSYW5nZSgpOworICAgIGF1dG8gY29sUmFuZ2UgPSBjb2x1
bW5JbmRleFJhbmdlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGNvbHVtbiA9IDA7IGNvbHVtbiA8
IGNvbFJhbmdlLmZpcnN0OyBjb2x1bW4rKykgewogICAgICAgICBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsKiB0YWJsZUNlbGwgPSBwYXJlbnQtPmNlbGxGb3JDb2x1bW5BbmRSb3coY29sdW1uLCByb3dS
YW5nZS5maXJzdCk7CkBAIC0zMTYsMTEgKzMwMiwxMiBAQCBBY2Nlc3NpYmlsaXR5VGFibGVSb3cq
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKIH0KIAotdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+JiByb3dSYW5nZSkgY29uc3QKK3N0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25zdAogeworICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgMCwgMSB9OwogICAgIGlmICghaXM8UmVu
ZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAorICAgICAg
ICByZXR1cm4gcm93UmFuZ2U7CisKICAgICBSZW5kZXJUYWJsZUNlbGwmIHJlbmRlckNlbGwgPSBk
b3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCptX3JlbmRlcmVyKTsKIAogICAgIC8vIEFSSUEgMS4x
J3MgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRj
ZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZApAQCAtMzMyLDEzICszMTksMTYgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+JiByb3dSYW4KICAgICAKICAgICBpZiAoQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBw
YXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKSkKICAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBw
YXJlbnRSb3ctPnJvd0luZGV4KCk7CisKKyAgICByZXR1cm4gcm93UmFuZ2U7CiB9CiAgICAgCi12
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4mIGNvbHVtblJhbmdlKSBjb25zdAorc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpIGNv
bnN0CiB7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2UgeyAw
LCAxIH07CiAgICAgaWYgKCFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQotICAgICAg
ICByZXR1cm47Ci0gICAgCisgICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKKwogICAgIGNvbnN0
IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCA9IGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm1fcmVu
ZGVyZXIpOwogICAgIGNvbHVtblJhbmdlLmZpcnN0ID0gY2VsbC50YWJsZSgpLT5jb2xUb0VmZkNv
bChjZWxsLmNvbCgpKTsKIApAQCAtMzQ3LDkgKzMzNywxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2Uoc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4m
IGNvbAogICAgIC8vIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUgY29sc3Bhbiwg
ZXhwb3NlIHRoZSBBUklBIHZhbHVlLgogICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IGF4Q29sdW1u
U3BhbigpOwogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtblJhbmdlLnNlY29uZCkgIT0g
LTEpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwogCiAgICAg
Y29sdW1uUmFuZ2Uuc2Vjb25kID0gY2VsbC50YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLmNvbCgp
ICsgY2VsbC5jb2xTcGFuKCkpIC0gY29sdW1uUmFuZ2UuZmlyc3Q7CisKKyAgICByZXR1cm4gY29s
dW1uUmFuZ2U7CiB9CiAgICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjp0aXRsZVVJRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCmluZGV4IGZhMzYxYzY5NmU4
ZTZhZjAwNmI1YjhlYzg2NzBkZGUyNjk3MTRiYmEuLjc2NzViYjdjNTE4ZTc3MWJiMTMxNzkyZTUw
MjY1ZjEzM2M0ODBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCkBAIC0zOSwyMiArMzksMjIgQEAgY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNyZWF0ZShS
ZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVDZWxsKCk7Ci0g
ICAgCisKICAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1Rh
YmxlSGVhZGVyQ2VsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5IZWFkZXJDZWxsKCkgY29u
c3Q7CiAgICAgYm9vbCBpc1Jvd0hlYWRlckNlbGwoKSBjb25zdDsKLSAgICAKLSAgICAvLyBmaWxs
cyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIGNlbGwKLSAgICB2aXJ0dWFs
IHZvaWQgcm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFu
Z2UpIGNvbnN0OwotICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1u
IHNwYW4gb2YgY2VsbAotICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29uc3Q7CisKKyAgICAvLyBSZXR1
cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCisgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0
aGUgY2VsbC4KKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJh
bmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
Y29sdW1uSGVhZGVycygpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciByb3dIZWFkZXJzKCkgb3ZlcnJpZGU7CiAKLSAgICBpbnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0
OwotICAgIGludCBheFJvd0luZGV4KCkgY29uc3Q7CisgICAgaW50IGF4Q29sdW1uSW5kZXgoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBpbnQgYXhSb3dJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGludCBheENvbHVtblNwYW4oKSBjb25zdDsKICAgICBpbnQgYXhSb3dTcGFuKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRBWENvbEluZGV4RnJvbVJvdyhpbnQgaW5kZXgpIHsgbV9heENvbEluZGV4RnJv
bVJvdyA9IGluZGV4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCA3OWJmMDVmZmFkZDFkODQ4OWExMzNhMzUzODA5
N2U0YWJlZjljYWI5Li5jZjQyNTc4Mzg5NzUxNTQ1Mjk5MjUyYzA1YTgzN2I3MWRhZWNkMGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlUm93LmgKQEAgLTUxLDEwICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRDaGls
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgCiAgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92
ZXJyaWRlOwotICAgIAotICAgIGludCBheENvbHVtbkluZGV4KCkgY29uc3Q7Ci0gICAgaW50IGF4
Um93SW5kZXgoKSBjb25zdDsKLSAgICAKKworICAgIGludCBheENvbHVtbkluZGV4KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgaW50IGF4Um93SW5kZXgoKSBjb25zdCBvdmVycmlkZTsKKwogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhSZW5kZXJPYmplY3QqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAKaW5kZXggZDc4YmY0Y2Y3NjRk
MWI3M2MxMWYzZDczZDc4MjVmZTA1MWFmZDUyZS4uNmM3OTMxMTNkN2M4ODMwODkwMDU4OWU0ZmNm
ZjU5M2Y5NDc4MDU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCkBA
IC0xMjAsOCArMTIwLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29s
dW1uQXRJbmRleChBdGtUYWJsZSogdGFibGUsIGdpbnQgaW5kZXgpCiAKICAgICBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsKiBheENlbGwgPSBjZWxsQXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlm
IChheENlbGwpIHsKLSAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1u
UmFuZ2U7Ci0gICAgICAgIGF4Q2VsbC0+Y29sdW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7Cisg
ICAgICAgIGF1dG8gY29sdW1uUmFuZ2UgPSBheENlbGwtPmNvbHVtbkluZGV4UmFuZ2UoKTsKICAg
ICAgICAgcmV0dXJuIGNvbHVtblJhbmdlLmZpcnN0OwogICAgIH0KICAgICByZXR1cm4gLTE7CkBA
IC0xMzQsOCArMTMzLDcgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Um93
QXRJbmRleChBdGtUYWJsZSogdGFibGUsIGdpbnQgaW5kZXgpCiAKICAgICBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsKiBheENlbGwgPSBjZWxsQXRJbmRleCh0YWJsZSwgaW5kZXgpOwogICAgIGlmIChh
eENlbGwpIHsKLSAgICAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7
Ci0gICAgICAgIGF4Q2VsbC0+cm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CisgICAgICAgIGF1dG8g
cm93UmFuZ2UgPSBheENlbGwtPnJvd0luZGV4UmFuZ2UoKTsKICAgICAgICAgcmV0dXJuIHJvd1Jh
bmdlLmZpcnN0OwogICAgIH0KICAgICByZXR1cm4gLTE7CkBAIC0xNzgsOCArMTc2LDcgQEAgc3Rh
dGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlR2V0Q29sdW1uRXh0ZW50QXQoQXRrVGFibGUq
IHRhYmxlLCBnaW50IHJvdywgZ2kKIAogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2Vs
bCA9IGNlbGwodGFibGUsIHJvdywgY29sdW1uKTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwotICAgICAgICBheENl
bGwtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOworICAgICAgICBhdXRvIGNvbHVtblJh
bmdlID0gYXhDZWxsLT5jb2x1bW5JbmRleFJhbmdlKCk7CiAgICAgICAgIHJldHVybiBjb2x1bW5S
YW5nZS5zZWNvbmQ7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMTkyLDggKzE4OSw3IEBAIHN0
YXRpYyBnaW50IHdlYmtpdEFjY2Vzc2libGVUYWJsZUdldFJvd0V4dGVudEF0KEF0a1RhYmxlKiB0
YWJsZSwgZ2ludCByb3csIGdpbnQKIAogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIGF4Q2Vs
bCA9IGNlbGwodGFibGUsIHJvdywgY29sdW1uKTsKICAgICBpZiAoYXhDZWxsKSB7Ci0gICAgICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlOwotICAgICAgICBheENlbGwt
PnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOworICAgICAgICBhdXRvIHJvd1JhbmdlID0gYXhDZWxs
LT5yb3dJbmRleFJhbmdlKCk7CiAgICAgICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiAgICAg
fQogICAgIHJldHVybiAwOwpAQCAtMjA5LDggKzIwNSw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdl
YmtpdEFjY2Vzc2libGVUYWJsZUdldENvbHVtbkhlYWRlcihBdGtUYWJsZSogdGFibGUsIGdpbnQg
Y29sCiAgICAgICAgIGF1dG8gY29sdW1uSGVhZGVycyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZT4oKmFjY1RhYmxlKS5jb2x1bW5IZWFkZXJzKCk7CiAKICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBjb2x1bW5IZWFkZXIgOiBjb2x1bW5IZWFkZXJzKSB7Ci0gICAgICAgICAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKLSAgICAgICAgICAgIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjb2x1bW5IZWFkZXIpLmNvbHVtbkluZGV4UmFuZ2Uo
Y29sdW1uUmFuZ2UpOworICAgICAgICAgICAgYXV0byBjb2x1bW5SYW5nZSA9IGNvbHVtbkhlYWRl
ci0+Y29sdW1uSW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgaWYgKGNvbHVtblJhbmdlLmZpcnN0
IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW4pICYmIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihjb2x1bW4pIDwgY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEFUS19PQkpFQ1QoY29sdW1uSGVhZGVyLT53cmFwcGVyKCkpOwog
ICAgICAgICB9CkBAIC0yMjgsOCArMjIzLDcgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNj
ZXNzaWJsZVRhYmxlR2V0Um93SGVhZGVyKEF0a1RhYmxlKiB0YWJsZSwgZ2ludCByb3cpCiAgICAg
ICAgIGF1dG8gcm93SGVhZGVycyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKmFjY1Rh
YmxlKS5yb3dIZWFkZXJzKCk7CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByb3dIZWFkZXIg
OiByb3dIZWFkZXJzKSB7Ci0gICAgICAgICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiByb3dSYW5nZTsKLSAgICAgICAgICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+
KCpyb3dIZWFkZXIpLnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOworICAgICAgICAgICAgYXV0byBy
b3dSYW5nZSA9IHJvd0hlYWRlci0+cm93SW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgaWYgKHJv
d1JhbmdlLmZpcnN0IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3cpICYmIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyb3cpIDwgcm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEFUS19PQkpFQ1Qocm93SGVhZGVyLT53cmFwcGVyKCkpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwCmluZGV4
IGVkMTkyNWIyYTUzOTQwOTdmMDgyZjZiYTVjMGYyOTM4Nzc0NjUzYmEuLjI4OWQzYTcwMTVkZjg4
ZjdkYWQ2MmU4MTg2ZjA4MTEwZDQ1NTZjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUYWJsZUNlbGwuY3BwCkBAIC04NSwxMCArODUsNyBAQCBnaW50IHdlYmtpdEFjY2Vzc2li
bGVUYWJsZUNlbGxHZXRDb2x1bW5TcGFuKEF0a1RhYmxlQ2VsbCogY2VsbCkKICAgICBpZiAoIWlz
PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KGF4T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKLSAgICBkb3du
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqYXhPYmplY3QpLmNvbHVtbkluZGV4UmFuZ2Uo
Y29sdW1uUmFuZ2UpOwotCi0gICAgcmV0dXJuIGNvbHVtblJhbmdlLnNlY29uZDsKKyAgICByZXR1
cm4gYXhPYmplY3QtPmNvbHVtbkluZGV4UmFuZ2UoKS5zZWNvbmQ7CiB9CiAKIGdpbnQgd2Via2l0
QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFJvd1NwYW4oQXRrVGFibGVDZWxsKiBjZWxsKQpAQCAtMTAw
LDEwICs5Nyw3IEBAIGdpbnQgd2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFJvd1NwYW4oQXRr
VGFibGVDZWxsKiBjZWxsKQogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oYXhP
YmplY3QpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IHJvd1JhbmdlOwotICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCph
eE9iamVjdCkucm93SW5kZXhSYW5nZShyb3dSYW5nZSk7Ci0KLSAgICByZXR1cm4gcm93UmFuZ2Uu
c2Vjb25kOworICAgIHJldHVybiBheE9iamVjdC0+cm93SW5kZXhSYW5nZSgpLnNlY29uZDsKIH0K
IAogZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFBvc2l0aW9uKEF0a1RhYmxl
Q2VsbCogY2VsbCwgZ2ludCogcm93LCBnaW50KiBjb2x1bW4pCkBAIC0xMTUsMjMgKzEwOSwxOCBA
QCBnYm9vbGVhbiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVDZWxsR2V0UG9zaXRpb24oQXRrVGFibGVD
ZWxsKiBjZWxsLCBnaW50KiByb3csIGdpbgogICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4oYXhPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5Sb3dSYW5nZTsKICAgICBpZiAocm93KSB7CiAgICAg
ICAgIC8vIGFyaWEtcm93aW5kZXggaXMgMS1iYXNlZC4KLSAgICAgICAgaW50IHJvd0luZGV4ID0g
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmF4T2JqZWN0KS5heFJvd0luZGV4KCkg
LSAxOwotICAgICAgICBpZiAocm93SW5kZXggPD0gLTEpIHsKLSAgICAgICAgICAgIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpheE9iamVjdCkucm93SW5kZXhSYW5nZShjb2x1bW5S
b3dSYW5nZSk7Ci0gICAgICAgICAgICByb3dJbmRleCA9IGNvbHVtblJvd1JhbmdlLmZpcnN0Owot
ICAgICAgICB9CisgICAgICAgIGludCByb3dJbmRleCA9IGF4T2JqZWN0LT5heFJvd0luZGV4KCkg
LSAxOworICAgICAgICBpZiAocm93SW5kZXggPD0gLTEpCisgICAgICAgICAgICByb3dJbmRleCA9
IGF4T2JqZWN0LT5yb3dJbmRleFJhbmdlKCkuZmlyc3Q7CiAgICAgICAgICpyb3cgPSByb3dJbmRl
eDsKICAgICB9CiAgICAgaWYgKGNvbHVtbikgewogICAgICAgICAvLyBhcmlhLWNvbGluZGV4IGlz
IDEtYmFzZWQuCi0gICAgICAgIGludCBjb2x1bW5JbmRleCA9IGRvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw+KCpheE9iamVjdCkuYXhDb2x1bW5JbmRleCgpIC0gMTsKLSAgICAgICAgaWYg
KGNvbHVtbkluZGV4IDw9IC0xKSB7Ci0gICAgICAgICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsPigqYXhPYmplY3QpLmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUm93UmFuZ2UpOwot
ICAgICAgICAgICAgY29sdW1uSW5kZXggPSBjb2x1bW5Sb3dSYW5nZS5maXJzdDsKLSAgICAgICAg
fQorICAgICAgICBpbnQgY29sdW1uSW5kZXggPSBheE9iamVjdC0+YXhDb2x1bW5JbmRleCgpIC0g
MTsKKyAgICAgICAgaWYgKGNvbHVtbkluZGV4IDw9IC0xKQorICAgICAgICAgICAgY29sdW1uSW5k
ZXggPSBheE9iamVjdC0+Y29sdW1uSW5kZXhSYW5nZSgpLmZpcnN0OwogICAgICAgICAqY29sdW1u
ID0gY29sdW1uSW5kZXg7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDBiM2IyNjcyMzM5YmIxZGVlZjkxOWY0ODMxNzQ5YjQ4MTc5ZTgxZjQuLjgw
NjM2YzdjMGViNDNmZTM2NjBjODM0NTA4MzFkZjNhMWVmZjMzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMjI2LDEwICsxMjI2LDggQEAgc3RhdGljIHZv
aWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5n
ICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgLy8gR2V0IHRoZSByb3cg
YW5kIGNvbHVtbiByYW5nZSwgc28gd2UgY2FuIHVzZSB0aGVtIHRvIGZpbmQgdGhlIGhlYWRlcnMu
Ci0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2U7Ci0gICAgc3RkOjpw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2U7Ci0gICAgdGFibGVDZWxsLT5yb3dJ
bmRleFJhbmdlKHJvd1JhbmdlKTsKLSAgICB0YWJsZUNlbGwtPmNvbHVtbkluZGV4UmFuZ2UoY29s
dW1uUmFuZ2UpOworICAgIGF1dG8gcm93UmFuZ2UgPSB0YWJsZUNlbGwtPnJvd0luZGV4UmFuZ2Uo
KTsKKyAgICBhdXRvIGNvbHVtblJhbmdlID0gdGFibGVDZWxsLT5jb2x1bW5JbmRleFJhbmdlKCk7
CiAKICAgICBhdXRvIHJvd0hlYWRlcnMgPSB0YWJsZS0+cm93SGVhZGVycygpOwogICAgIGF1dG8g
Y29sdW1uSGVhZGVycyA9IHRhYmxlLT5jb2x1bW5IZWFkZXJzKCk7CkBAIC0xMjUwLDggKzEyNDgs
NyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJl
c3VsdCwgTlNTdHJpbmcgKnN0cmluZykKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJvd0hlYWRlciA6
IHJvd0hlYWRlcnMpIHsKICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigq
cm93SGVhZGVyKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiByb3dIZWFkZXJSYW5nZTsKLSAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbD4oKnJvd0hlYWRlcikucm93SW5kZXhSYW5nZShyb3dIZWFkZXJSYW5nZSk7
CisgICAgICAgIGF1dG8gcm93SGVhZGVyUmFuZ2UgPSByb3dIZWFkZXItPnJvd0luZGV4UmFuZ2Uo
KTsKICAgICAgICAgaWYgKHJvd1JhbmdlSW5kZXggPj0gcm93SGVhZGVyUmFuZ2UuZmlyc3QgJiYg
cm93UmFuZ2VJbmRleCA8IHJvd0hlYWRlclJhbmdlLmZpcnN0ICsgcm93SGVhZGVyUmFuZ2Uuc2Vj
b25kKSB7CiAgICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBw
ZXIgPSByb3dIZWFkZXItPndyYXBwZXIoKSkKICAgICAgICAgICAgICAgICBbaGVhZGVycyBhZGRP
YmplY3Q6d3JhcHBlcl07CkBAIC0xMzY0LDkgKzEzNjEsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRT
dHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykK
ICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKiB0YWJsZUNlbGwgPSBbc2VsZiB0YWJsZUNlbGxQ
YXJlbnRdOwogICAgIGlmICghdGFibGVDZWxsKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2Uo
TlNOb3RGb3VuZCwgMCk7Ci0gICAgCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
cm93UmFuZ2U7Ci0gICAgdGFibGVDZWxsLT5yb3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKKworICAg
IGF1dG8gcm93UmFuZ2UgPSB0YWJsZUNlbGwtPnJvd0luZGV4UmFuZ2UoKTsKICAgICByZXR1cm4g
TlNNYWtlUmFuZ2Uocm93UmFuZ2UuZmlyc3QsIHJvd1JhbmdlLnNlY29uZCk7CiB9CiAKQEAgLTEz
NzgsOSArMTM3NCw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5TTXV0YWJs
ZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqIHRhYmxlQ2VsbCA9IFtzZWxmIHRhYmxlQ2VsbFBhcmVudF07CiAgICAgaWYgKCF0YWJs
ZUNlbGwpCiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKLSAgICAK
LSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZTsKLSAgICB0YWJs
ZUNlbGwtPmNvbHVtbkluZGV4UmFuZ2UoY29sdW1uUmFuZ2UpOworCisgICAgYXV0byBjb2x1bW5S
YW5nZSA9IHRhYmxlQ2VsbC0+Y29sdW1uSW5kZXhSYW5nZSgpOwogICAgIHJldHVybiBOU01ha2VS
YW5nZShjb2x1bW5SYW5nZS5maXJzdCwgY29sdW1uUmFuZ2Uuc2Vjb25kKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCBhNmIwMTBhM2U4NzBkZmZmMzk0OTlmYzYxMDg1ODMz
MjhmM2E5NWUxLi5kNDk0NmQ1YTNhY2ZjYzE2OTcyOGRmYmFlNGUxOWQ5NTk1ZjQxOWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTE0LDcgKzExNCw2IEBAIHZvaWQgQVhJc29s
YXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBvYmplY3Qs
IGJvb2wgaXNSb290CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWRP
cHRpb25BY3RpdmUsIG9iamVjdC5pc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkpOwogICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1NsaWRlciwgb2JqZWN0LmlzU2xpZGVyKCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1N0eWxlRm9ybWF0R3JvdXAsIG9iamVjdC5p
c1N0eWxlRm9ybWF0R3JvdXAoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
VGFibGVDZWxsLCBvYmplY3QuaXNUYWJsZUNlbGwoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzVGFibGVSb3csIG9iamVjdC5pc1RhYmxlUm93KCkpOwogICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpJc1RleHRDb250cm9sLCBvYmplY3QuaXNUZXh0Q29udHJvbCgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNUcmVlLCBvYmplY3QuaXNUcmVl
KCkpOwpAQCAtMjM2LDYgKzIzNSwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxp
emVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBib29sIGlzUm9vdAogICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhSb3dDb3VudCwgb2JqZWN0LmF4Um93Q291
bnQoKSk7CiAgICAgfQogCisgICAgaWYgKG9iamVjdC5pc1RhYmxlQ2VsbCgpKSB7CisgICAgICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCwgb2JqZWN0LmlzVGFibGVD
ZWxsKCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sdW1uSW5kZXhS
YW5nZSwgb2JqZWN0LmNvbHVtbkluZGV4UmFuZ2UoKSk7CisgICAgICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpSb3dJbmRleFJhbmdlLCBvYmplY3Qucm93SW5kZXhSYW5nZSgpKTsKKyAg
ICAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkhlYWRl
cnMsIG9iamVjdC5jb2x1bW5IZWFkZXJzKCkpOworICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6Um93SGVhZGVycywgb2JqZWN0LnJvd0hlYWRlcnMoKSk7Cisg
ICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBWENvbHVtbkluZGV4LCBvYmplY3Qu
YXhDb2x1bW5JbmRleCgpKTsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFY
Um93SW5kZXgsIG9iamVjdC5heFJvd0luZGV4KCkpOworICAgIH0KKwogICAgIGlmIChvYmplY3Qu
aXNUYWJsZUNvbHVtbigpKSB7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c1RhYmxlQ29sdW1uLCBvYmplY3QuaXNUYWJsZUNvbHVtbigpKTsKICAgICAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkluZGV4LCBvYmplY3QuY29sdW1uSW5kZXgoKSk7CkBA
IC03NDIsNiArNzUxLDE2IEBAIE9wdGlvblNldDxUPiBBWElzb2xhdGVkT2JqZWN0OjpvcHRpb25T
ZXRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAgICAgKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0ZDo6cGFpcjxULCBUPiBBWElzb2xhdGVkT2JqZWN0Ojpw
YWlyQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAorewor
ICAgIGF1dG8gdmFsdWUgPSBtX2F0dHJpYnV0ZU1hcC5nZXQocHJvcGVydHlOYW1lKTsKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbih2YWx1ZSwKKyAgICAgICAgW10gKHN0ZDo6cGFpcjxULCBUPiYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7
IHJldHVybiBzdGQ6OnBhaXI8VCwgVD4oMCwgMSk7IH0KKyAgICApOworfQorCiB1aW50NjRfdCBB
WElzb2xhdGVkT2JqZWN0Ojp1aW50NjRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IG1fYXR0cmlidXRlTWFwLmdldChw
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGU3ZjJhNWViNmZhYTVl
NGIxY2NjYTQ0OWEzZDY5ZTMyMzM2NTM2NjEuLjVhMDNmZDBlNzAxOWEwYjA1MTdlYWExY2QzNTJh
OWQyMTE0OGVlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTk5LDcgKzk5LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgQVJJQVJvbGVBdHRyaWJ1dGUsCiAgICAgICAgIEFSSUFPd25zRWxl
bWVudHMsCiAgICAgICAgIEFYQ29sdW1uQ291bnQsCisgICAgICAgIEFYQ29sdW1uSW5kZXgsCiAg
ICAgICAgIEFYUm93Q291bnQsCisgICAgICAgIEFYUm93SW5kZXgsCiAgICAgICAgIEJsb2NrcXVv
dGVMZXZlbCwKICAgICAgICAgQm91bmRpbmdCb3hSZWN0LAogICAgICAgICBDYW5IYXZlU2VsZWN0
ZWRDaGlsZHJlbiwKQEAgLTEyMyw2ICsxMjUsNyBAQCBwcml2YXRlOgogICAgICAgICBDb2x1bW5I
ZWFkZXIsCiAgICAgICAgIENvbHVtbkhlYWRlcnMsCiAgICAgICAgIENvbHVtbkluZGV4LAorICAg
ICAgICBDb2x1bW5JbmRleFJhbmdlLAogICAgICAgICBDb21wdXRlZExhYmVsLAogICAgICAgICBD
b21wdXRlZFJvbGVTdHJpbmcsCiAgICAgICAgIEN1cnJlbnRTdGF0ZSwKQEAgLTI4NCw2ICsyODcs
NyBAQCBwcml2YXRlOgogICAgICAgICBSb3dzLAogICAgICAgICBSb3dDb3VudCwKICAgICAgICAg
Um93SGVhZGVycywKKyAgICAgICAgUm93SW5kZXhSYW5nZSwKICAgICAgICAgU2VsZWN0ZWRDaGls
ZHJlbiwKICAgICAgICAgU2VsZWN0ZWRSYWRpb0J1dHRvbiwKICAgICAgICAgU2VsZWN0ZWRUYWJJ
dGVtLApAQCAtMzMwLDggKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIEFjY2Vzc2liaWxpdHlU
ZXh0U291cmNlIHRleHRTb3VyY2U7CiAgICAgICAgIFZlY3RvcjxBWElEPiB0ZXh0RWxlbWVudHM7
CiAgICAgfTsKLSAgICAKLSAgICB1c2luZyBBdHRyaWJ1dGVWYWx1ZVZhcmlhbnQgPSBWYXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgZmxv
YXQsIHVpbnQ2NF90LCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFJlY3QsIEFYSUQsIElu
dFBvaW50LCBPcHRpb25TZXQ8U3BlYWtBcz4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRU
cmVlVGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVN
YXRoTXVsdGlzY3JpcHRQYWlyPiwgVmVjdG9yPFN0cmluZz4+OworCisgICAgdXNpbmcgQXR0cmli
dXRlVmFsdWVWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgU3RyaW5nLCBib29sLCBp
bnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQ29sb3IsIFVSTCwgTGF5b3V0
UmVjdCwgRmxvYXRSZWN0LCBBWElELCBJbnRQb2ludCwgT3B0aW9uU2V0PFNwZWFrQXM+LCBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlJc29sYXRlZFRy
ZWVUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZU1h
dGhNdWx0aXNjcmlwdFBhaXI+LCBWZWN0b3I8U3RyaW5nPj47CiAgICAgdm9pZCBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZSwgQXR0cmlidXRlVmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVt
b3ZlID0gZmFsc2UpOwogICAgIHZvaWQgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUs
IEFYQ29yZU9iamVjdCopOwogICAgIHZvaWQgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWUsIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpAQCAtMzUwLDYg
KzM1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCByZWN0QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFZlY3RvcjxUPiB2ZWN0b3JBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZSkgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uU2V0PFQ+IG9wdGlvblNldEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGQ6
OnBhaXI8VCwgVD4gcGFpckF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lKSBjb25zdDsKIAog
ICAgIHZvaWQgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwogICAgIHZvaWQgc2V0TWF0aHNjcmlw
dHMoQVhQcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCYpOwpAQCAtNDAwLDYgKzQwNSwxNSBAQCBw
cml2YXRlOgogICAgIGludCBheENvbHVtbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
aW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uQ291bnQpOyB9CiAgICAg
aW50IGF4Um93Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6QVhSb3dDb3VudCk7IH0KIAorICAgIC8vIFRhYmxlIGNlbGwgc3Vw
cG9ydC4KKyAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCk7IH0KKyAgICAvLyBS
ZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCisgICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHBhaXJBdHRyaWJ1dGVWYWx1ZTx1bnNpZ25lZD4oQVhQcm9wZXJ0eU5hbWU6
OlJvd0luZGV4UmFuZ2UpOyB9CisgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5k
IGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgorICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYWlyQXR0cmli
dXRlVmFsdWU8dW5zaWduZWQ+KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5JbmRleFJhbmdlKTsgfQor
ICAgIGludCBheENvbHVtbkluZGV4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uSW5kZXgpOyB9CisgICAgaW50IGF4Um93
SW5kZXgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6QVhSb3dJbmRleCk7IH0KKwogICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJs
ZVJvdyk7IH0KIAogICAgIC8vIFRhYmxlIGNvbHVtbiBzdXBwb3J0LgpAQCAtNDA3LDcgKzQyMSw2
IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgY29sdW1uSW5kZXgoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB1bnNpZ25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2x1bW5JbmRl
eCk7IH0KICAgICBBWENvcmVPYmplY3QqIGNvbHVtbkhlYWRlcigpIG92ZXJyaWRlIHsgcmV0dXJu
IG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2x1bW5IZWFkZXIpOyB9CiAK
LSAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCk7IH0KICAgICBib29sIGlzRmll
bGRzZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzRmllbGRzZXQpOyB9CiAgICAgYm9vbCBpc0dyb3VwKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0dyb3VwKTsg
fQogICAgIGJvb2wgaXNBUklBVHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQVJJQVRyZWVHcmlkUm93KTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAzODQ5OTQ5YmY2MzNm
NGE0MzZkZjA0MGE3ODUyNDE0OGE0NTU0MGJiLi42NTdlM2Y3MDBiOGJhYjg0M2I1YTUwNWY5M2Fj
ZDE5OTYxMzcxYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpA
QCAtMjc1OCwyOSArMjc1OCwyOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
PigqYmFja2luZ09iamVjdCkpIHsKLSAgICAgICAgYXV0byYgY2VsbCA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw+KCpiYWNraW5nT2JqZWN0KTsKKyAgICBpZiAoYmFja2luZ09iamVj
dC0+aXNUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAg
ICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZTsKLSAgICAgICAgICAg
IGNlbGwucm93SW5kZXhSYW5nZShyb3dSYW5nZSk7CisgICAgICAgICAgICBhdXRvIHJvd1Jhbmdl
ID0gYmFja2luZ09iamVjdC0+cm93SW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgcmV0dXJuIFtO
U1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJvd1JhbmdlLmZpcnN0LCByb3dSYW5n
ZS5zZWNvbmQpXTsKICAgICAgICAgfQorCiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsK
LSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlOwot
ICAgICAgICAgICAgY2VsbC5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKKyAgICAgICAg
ICAgIGF1dG8gY29sdW1uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5jb2x1bW5JbmRleFJhbmdlKCk7
CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uo
Y29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCldOwogICAgICAgICB9CisKICAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlD
b2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGNlbGwuY29sdW1uSGVhZGVycygpKTsKKyAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbHVtbkhlYWRlcnMoKSk7CiAKICAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dI
ZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGNlbGwucm93SGVhZGVycygpKTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGJhY2tpbmdPYmplY3QtPnJvd0hlYWRlcnMoKSk7CiAKICAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQ29sdW1uSW5kZXhB
dHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIEAoY2VsbC5heENvbHVtbkluZGV4KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+YXhDb2x1bW5JbmRleCgpKTsKIAog
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eUFSSUFSb3dJbmRleEF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gQChjZWxsLmF4Um93
SW5kZXgoKSk7CisgICAgICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5heFJvd0luZGV4
KCkpOwogICAgIH0KIAogICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RyZWUoKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>