<?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>114010</bug_id>
          
          <creation_ts>2013-04-05 01:23:37 -0700</creation_ts>
          <short_desc>Clean the chromium bits of WebCore&apos;s WebDatabase</short_desc>
          <delta_ts>2013-04-05 13:50:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>mark.lam</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>869629</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-05 01:23:37 -0700</bug_when>
    <thetext>Clean the chromium bits of WebCore&apos;s WebDatabase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869630</commentid>
    <comment_count>1</comment_count>
      <attachid>196594</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-05 01:24:08 -0700</bug_when>
    <thetext>Created attachment 196594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869755</commentid>
    <comment_count>2</comment_count>
      <attachid>196594</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-04-05 07:37:42 -0700</bug_when>
    <thetext>Comment on attachment 196594
Patch

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

LGTM with the getCachedVersion() issue addressed.  Thanks.

&gt; Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp:-533
&gt; -    return getVersionFromDatabase(actualVersion, true);

We will want to adopt this for WK2 instead of the getCachedVersion() below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869909</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-05 11:39:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 196594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196594&amp;action=review
&gt; 
&gt; LGTM with the getCachedVersion() issue addressed.  Thanks.
&gt; 
&gt; &gt; Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp:-533
&gt; &gt; -    return getVersionFromDatabase(actualVersion, true);
&gt; 
&gt; We will want to adopt this for WK2 instead of the getCachedVersion() below.

I am not sure what you are asking.

You want to keep dead code around? Or you want to remove the #else part and use the former chromium part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869971</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-04-05 12:56:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 196594 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196594&amp;action=review
&gt; &gt; 
&gt; &gt; LGTM with the getCachedVersion() issue addressed.  Thanks.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/webdatabase/DatabaseBackendBase.cpp:-533
&gt; &gt; &gt; -    return getVersionFromDatabase(actualVersion, true);
&gt; &gt; 
&gt; &gt; We will want to adopt this for WK2 instead of the getCachedVersion() below.
&gt; 
&gt; I am not sure what you are asking.
&gt; 
&gt; You want to keep dead code around? Or you want to remove the #else part and use the former chromium part?

I meant to say that we should keep the chromium version here and get rid of the other.  In this one case, the chromium version is the correct one to use because of WK2’s needs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870056</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-05 13:50:52 -0700</bug_when>
    <thetext>Committed r147796: &lt;http://trac.webkit.org/changeset/147796&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196594</attachid>
            <date>2013-04-05 01:24:08 -0700</date>
            <delta_ts>2013-04-05 12:28:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114010-20130405012356.patch</filename>
            <type>text/plain</type>
            <size>54108</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZjMjUxYWNkNzk1ZTIw
M2ViMTliOTRhOTgxZjdiOGQyNDY3MTQ5My4uZDAyN2M1ZTNiYWI1YThiYmU4MjVlMDkwZDU5OGFk
YzBhYzMyMjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEzLTA0LTA1ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAorICAgICAgICBDbGVhbiB0aGUg
Y2hyb21pdW0gYml0cyBvZiBXZWJDb3JlJ3MgV2ViRGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0
cmFjdERhdGFiYXNlU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFu
Z2VWZXJzaW9uV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VWZXJzaW9uV3Jh
cHBlcjo6cGVyZm9ybVByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpDaGFuZ2VWZXJzaW9u
V3JhcHBlcjo6cGVyZm9ybVBvc3RmbGlnaHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
aDoKKyAgICAgICAgKERhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6Om9w
ZW5BbmRWZXJpZnlWZXJzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQmFja2VuZEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9uZUNyZWF0aW5nRGF0YWJh
c2VPbkV4aXRDYWxsZXI6On5Eb25lQ3JlYXRpbmdEYXRhYmFzZU9uRXhpdENhbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpnZXRBY3R1YWxWZXJzaW9u
Rm9yVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kQmFzZTo6
aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmg6CisgICAgICAgIChEYXRhYmFzZUJhY2tlbmRCYXNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZFN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kU3luYzo6b3BlbkFuZFZlcmlmeVZlcnNp
b24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6ZGF0YWJhc2VFeGNlZWRlZFF1b3Rh
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAg
KERhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlU2VydmVyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTZXJ2ZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OmNhbkVzdGFibGlzaERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6cmV0cnlDYW5Fc3RhYmxpc2hEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGF0
YWJhc2VUcmFja2VyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVu
dEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMU3RhdGVtZW50QmFja2VuZDo6ZXhl
Y3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0ZW1lbnRCYWNrZW5kOjpzZXREYXRhYmFz
ZURlbGV0ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0ZW1lbnRCYWNrZW5kOjpz
ZXRWZXJzaW9uTWlzbWF0Y2hlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFN0YXRlbWVu
dEJhY2tlbmQ6OnNldEZhaWx1cmVEdWVUb1F1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuaDoKKyAgICAgICAgKFNRTFN0YXRlbWVudEJhY2tl
bmQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50
Q2FsbGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZXhl
Y3V0ZVNRTCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om9wZW5U
cmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlv
bkJhY2tlbmQ6OnJ1bkN1cnJlbnRTdGF0ZW1lbnRBbmRHZXROZXh0U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpuZXh0U3RhdGVGb3JDdXJyZW50U3RhdGVt
ZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpwb3N0
ZmxpZ2h0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2Vu
ZDo6YWNxdWlyZU9yaWdpbkxvY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25C
YWNrZW5kOjpyZWxlYXNlT3JpZ2luTG9ja0lmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oOgorICAgICAgICAoU1FMVHJhbnNhY3Rp
b25CYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZFN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5k
U3luYzo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kU3lu
Yzo6Y29tbWl0KToKKworMjAxMy0wNC0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdl
YmtpdC5vcmc+CisKICAgICAgICAgUmVtb3ZlIHRoZSBjaHJvbWl1bSBjb2RlIGZvciBXZWJDb3Jl
J3MgaW5kZXhlZGRiIG1vZHVsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE0MDA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgKaW5kZXggOTQ3ODNlZjFk
Njg4MTFiY2Q1MzA4Zjc4NWQ1MTliNzNjNmUxZDEzNy4uZmRiZGM1N2E3NjA2ZWUxZDFlZDM5NTIz
ZjNlMzgxNjJjN2YzZjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgKQEAgLTYxLDcgKzYxLDYg
QEAgcHVibGljOgogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhw
ZWN0ZWRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVz
dGltYXRlZFNpemUsCiAgICAgICAgIGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFi
YXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgT3BlbkF0dGVtcHQgPSBGaXJzdFRyeVRv
T3BlbkRhdGFiYXNlKSA9IDA7CiAKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdmlydHVh
bCBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgPSAwOwpAQCAtNzYsMTAgKzc1LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKSA9IDA7CiAKLSNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIHZp
cnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7Ci0jZW5kaWYgLy8gUExBVEZPUk0o
Q0hST01JVU0pCi0KICAgICB2aXJ0dWFsIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29u
dGV4dChjb25zdCBEYXRhYmFzZUJhY2tlbmRDb250ZXh0KikgPSAwOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNp
b25XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwCmluZGV4IDNiZjRjNjU4YjI3YjkxZWViYzEwMThiMWUyNTgyYzQ3
NDUwZDcyOTQuLjZhMzk3YTY3MWJmNWU4Y2YwZTcwZDc3ZmRjZjVmZWU4MWMzNzk5OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldy
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwCkBAIC01MiwxNCArNTIsMTIgQEAgYm9vbCBDaGFuZ2VWZXJzaW9u
V3JhcHBlcjo6cGVyZm9ybVByZWZsaWdodChTUUxUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0
aW9uKQogICAgIFN0cmluZyBhY3R1YWxWZXJzaW9uOwogICAgIGlmICghZGF0YWJhc2UtPmdldFZl
cnNpb25Gcm9tRGF0YWJhc2UoYWN0dWFsVmVyc2lvbikpIHsKICAgICAgICAgaW50IHNxbGl0ZUVy
cm9yID0gZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCk7Ci0gICAgICAgIGRh
dGFiYXNlLT5yZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KDEsIFNRTEVycm9yOjpVTktOT1dOX0VS
Uiwgc3FsaXRlRXJyb3IpOwogICAgICAgICBtX3NxbEVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShT
UUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmFibGUgdG8gcmVhZCB0aGUgY3VycmVudCB2ZXJzaW9u
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlRXJyb3IsIGRh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIGlmIChhY3R1YWxWZXJzaW9uICE9IG1fb2xkVmVyc2lvbikg
ewotICAgICAgICBkYXRhYmFzZS0+cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCgyLCBTUUxFcnJv
cjo6VkVSU0lPTl9FUlIsIDApOwogICAgICAgICBtX3NxbEVycm9yID0gU1FMRXJyb3I6OmNyZWF0
ZShTUUxFcnJvcjo6VkVSU0lPTl9FUlIsICJjdXJyZW50IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNl
IGFuZCBgb2xkVmVyc2lvbmAgYXJndW1lbnQgZG8gbm90IG1hdGNoIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkBAIC03NSwxNSArNzMsMTIgQEAgYm9vbCBDaGFuZ2VWZXJzaW9uV3Jh
cHBlcjo6cGVyZm9ybVBvc3RmbGlnaHQoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlv
bikKIAogICAgIGlmICghZGF0YWJhc2UtPnNldFZlcnNpb25JbkRhdGFiYXNlKG1fbmV3VmVyc2lv
bikpIHsKICAgICAgICAgaW50IHNxbGl0ZUVycm9yID0gZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNl
KCkubGFzdEVycm9yKCk7Ci0gICAgICAgIGRhdGFiYXNlLT5yZXBvcnRDaGFuZ2VWZXJzaW9uUmVz
dWx0KDMsIFNRTEVycm9yOjpVTktOT1dOX0VSUiwgc3FsaXRlRXJyb3IpOwogICAgICAgICBtX3Nx
bEVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmFibGUg
dG8gc2V0IG5ldyB2ZXJzaW9uIGluIGRhdGFiYXNlIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3FsaXRlRXJyb3IsIGRhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGRhdGFi
YXNlLT5zZXRFeHBlY3RlZFZlcnNpb24obV9uZXdWZXJzaW9uKTsKLQotICAgIGRhdGFiYXNlLT5y
ZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcAppbmRleCA3Y2FiY2ZkOTZjMTY4YTI1NzgxNWYxZWFmNzBkYzFiODQ4MzZlODkxLi40ZDk2
YmYyNDQyMjE0ZjExZDNkOWFiNWFjNjc2MzI4YzAwOTU5ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjg2LDE5ICsyODYsNiBA
QCBTZWN1cml0eU9yaWdpbiogRGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICBy
ZXR1cm4gMDsKIH0KIAotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotdm9pZCBEYXRhYmFzZTo6cmVw
b3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JD
b2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQotewotICAgIGJhY2tlbmQoKS0+cmVwb3J0U3RhcnRU
cmFuc2FjdGlvblJlc3VsdChlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JD
b2RlKTsKLX0KLQotdm9pZCBEYXRhYmFzZTo6cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQo
aW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkK
LXsKLSAgICBiYWNrZW5kKCktPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KGVycm9yU2l0
ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNvZGUpOwotfQotCi0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAppbmRleCAwY2U0
MjMzZTkzMGRlNTEyMmVkNTljZWNiMjZjZjA1MjIyOTViZTdjLi4wNjg0NjhhY2JjYTIzNGM4NDBh
ZDNhODAxZjA4MTE2MDVlMzE0Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5oCkBAIC04NiwxNCArODYsNiBAQCBwcml2YXRlOgogCiAgICAgVmVj
dG9yPFN0cmluZz4gcGVyZm9ybUdldFRhYmxlTmFtZXMoKTsKIAotI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQotICAgIHZvaWQgcmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JTaXRl
LCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKLSAgICB2b2lkIHJl
cG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJv
ckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOwotI2Vsc2UKLSAgICB2b2lkIHJlcG9ydFN0YXJ0
VHJhbnNhY3Rpb25SZXN1bHQoaW50LCBpbnQsIGludCkgeyB9Ci0gICAgdm9pZCByZXBvcnRDb21t
aXRUcmFuc2FjdGlvblJlc3VsdChpbnQsIGludCwgaW50KSB7IH0KLSNlbmRpZgotCiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBtX2RhdGFiYXNlVGhyZWFkU2VjdXJpdHlPcmlnaW47CiAgICAg
UmVmUHRyPERhdGFiYXNlQ29udGV4dD4gbV9kYXRhYmFzZUNvbnRleHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcApp
bmRleCA2MmYxNTIxMzA4NmIxZGYyYzY1NDMzNmQwNmQ4NThjZDVkYzgzYTY1Li5jNzU1M2VhM2Rk
ZWU0ZDE2NjRiZDdkMzUzMGIwYTFlZjBhNDVjOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCkBAIC01NSw5ICs1
NSw2IEBAIGJvb2wgRGF0YWJhc2VCYWNrZW5kOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNl
dFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzCiAgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQo
KS0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQo
KS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnByZXBhcmVUb09wZW5EYXRhYmFzZSh0aGlzKTsKLSNlbmRpZgogICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOwogICAgIE93blB0cjxEYXRhYmFzZU9wZW5UYXNrPiB0YXNrID0gRGF0YWJh
c2VPcGVuVGFzazo6Y3JlYXRlKHRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCAmc3luY2hy
b25pemVyLCBlcnJvciwgZXJyb3JNZXNzYWdlLCBzdWNjZXNzKTsKICAgICBkYXRhYmFzZUNvbnRl
eHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKHRhc2sucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VCYWNrZW5kQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCmluZGV4IGU4MDEzZjI1NjhkZGUyYzI3ZDQyMDUxOTI5
OTE5MTVmOGIyYmZhZmEuLjkyMjJhMDdkMDIzN2JkZjNiYzdlMTU2MjVlNGQwYTlkYTJjNmIyZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VC
YWNrZW5kQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUJhY2tlbmRCYXNlLmNwcApAQCAtNTEsMTAgKzUxLDYgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYg
UExBVEZPUk0oQ0hST01JVU0pCi0jaW5jbHVkZSAiRGF0YWJhc2VPYnNlcnZlci5oIiAvLyBGb3Ig
ZXJyb3IgcmVwb3J0aW5nLgotI2VuZGlmCi0KIC8vIFJlZ2lzdGVyaW5nICJvcGVuZWQiIGRhdGFi
YXNlcyB3aXRoIHRoZSBEYXRhYmFzZVRyYWNrZXIKIC8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBEYXRhYmFzZVRyYWNrZXIg
bWFpbnRhaW5zIGEgbGlzdCBvZiBkYXRhYmFzZXMgdGhhdCBoYXZlIGJlZW4KQEAgLTI5NCwxMiAr
MjkwLDcgQEAgcHVibGljOgogICAgIH0KICAgICB+RG9uZUNyZWF0aW5nRGF0YWJhc2VPbkV4aXRD
YWxsZXIoKQogICAgIHsKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmRvbmVDcmVhdGluZ0RhdGFiYXNlKG1fZGF0YWJhc2UpOwotI2Vs
c2UKLSAgICAgICAgaWYgKCFtX29wZW5TdWNjZWVkZWQpCi0gICAgICAgICAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5mYWlsZWRUb09wZW5EYXRhYmFzZShtX2RhdGFiYXNlKTsKLSNlbmRp
ZiAgICAgICAgICAgIAogICAgIH0KIAogICAgIHZvaWQgc2V0T3BlblN1Y2NlZWRlZCgpIHsgbV9v
cGVuU3VjY2VlZGVkID0gdHJ1ZTsgfQpAQCAtMzE5LDcgKzMxMCw2IEBAIGJvb2wgRGF0YWJhc2VC
YWNrZW5kQmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzCiAgICAgY29uc3QgaW50IG1heFNxbGl0ZUJ1c3lXYWl0VGltZSA9IDMwMDAwOwog
CiAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLm9wZW4obV9maWxlbmFtZSwgdHJ1ZSkpIHsKLSAg
ICAgICAgcmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KDEsIElOVkFMSURfU1RBVEVfRVJSLCBtX3Nx
bGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpKTsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0
RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSIsIG1fc3FsaXRlRGF0YWJhc2Uu
bGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzM3LDMwICszMjcsMTIgQEAgYm9vbCBEYXRhYmFzZUJh
Y2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5l
d0RhdGFiYXMKICAgICAgICAgICAgIC8vIE1hcCBudWxsIHN0cmluZyB0byBlbXB0eSBzdHJpbmcg
KHNlZSB1cGRhdGVHdWlkVmVyc2lvbk1hcCgpKS4KICAgICAgICAgICAgIGN1cnJlbnRWZXJzaW9u
ID0gZW50cnktPnZhbHVlLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IGVudHJ5LT52YWx1ZS5p
c29sYXRlZENvcHkoKTsKICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiQ3VycmVudCBjYWNo
ZWQgdmVyc2lvbiBmb3IgZ3VpZCAlaSBpcyAlcyIsIG1fZ3VpZCwgY3VycmVudFZlcnNpb24uYXNj
aWkoKS5kYXRhKCkpOwotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgICAgICAvLyBO
b3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJzIHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGlu
YWNjdXJhdGUsIGJ1dAotICAgICAgICAgICAgLy8gd2UgY2Fubm90IHJlYWQgdGhlIGFjdHVhbCB2
ZXJzaW9uIGZyb20gdGhlIGRhdGFiYXNlIHdpdGhvdXQgcG90ZW50aWFsbHkKLSAgICAgICAgICAg
IC8vIGluZHVjaW5nIGEgZm9ybSBvZiBkZWFkbG9jaywgYSBidXN5dGltZW91dCBlcnJvciB3aGVu
IHRyeWluZyB0bwotICAgICAgICAgICAgLy8gYWNjZXNzIHRoZSBkYXRhYmFzZS4gU28gd2UnbGwg
dXNlIHRoZSBjYWNoZWQgdmFsdWUgaWYgd2UncmUgdW5hYmxlIHRvIHJlYWQKLSAgICAgICAgICAg
IC8vIHRoZSB2YWx1ZSBmcm9tIHRoZSBkYXRhYmFzZSBmaWxlIHdpdGhvdXQgd2FpdGluZy4KLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYW4gYXN5bmMgb3BlbkRhdGFiYXNlIG1ldGhvZCB0byB0
aGUgRGF0YWJhc2VBUEkuCi0gICAgICAgICAgICBjb25zdCBpbnQgbm9TcWxpdGVCdXN5V2FpdFRp
bWUgPSAwOwotICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5zZXRCdXN5VGltZW91dChub1Nx
bGl0ZUJ1c3lXYWl0VGltZSk7Ci0gICAgICAgICAgICBTdHJpbmcgdmVyc2lvbkZyb21EYXRhYmFz
ZTsKLSAgICAgICAgICAgIGlmIChnZXRWZXJzaW9uRnJvbURhdGFiYXNlKHZlcnNpb25Gcm9tRGF0
YWJhc2UsIGZhbHNlKSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gdmVyc2lv
bkZyb21EYXRhYmFzZTsKLSAgICAgICAgICAgICAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcChtX2d1
aWQsIGN1cnJlbnRWZXJzaW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fc3FsaXRl
RGF0YWJhc2Uuc2V0QnVzeVRpbWVvdXQobWF4U3FsaXRlQnVzeVdhaXRUaW1lKTsKLSNlbmRpZgog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJObyBjYWNoZWQg
dmVyc2lvbiBmb3IgZ3VpZCAlaSIsIG1fZ3VpZCk7CiAKICAgICAgICAgICAgIFNRTGl0ZVRyYW5z
YWN0aW9uIHRyYW5zYWN0aW9uKG1fc3FsaXRlRGF0YWJhc2UpOwogICAgICAgICAgICAgdHJhbnNh
Y3Rpb24uYmVnaW4oKTsKICAgICAgICAgICAgIGlmICghdHJhbnNhY3Rpb24uaW5Qcm9ncmVzcygp
KSB7Ci0gICAgICAgICAgICAgICAgcmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KDIsIElOVkFMSURf
U1RBVEVfRVJSLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpKTsKICAgICAgICAgICAgICAg
ICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVuIGRhdGFi
YXNlLCBmYWlsZWQgdG8gc3RhcnQgdHJhbnNhY3Rpb24iLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RF
cnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAg
ICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzcxLDE0ICszNDMsMTIgQEAgYm9vbCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3Jt
T3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXMKICAgICAgICAg
ICAgICAgICBtX25ldyA9IHRydWU7CiAKICAgICAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5
IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFD
RSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCgzLCBJTlZBTElEX1NUQVRFX0VSUiwg
bV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVycm9y
TWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZh
aWxlZCB0byBjcmVhdGUgJ2luZm8nIHRhYmxlIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3Io
KSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICAgICAg
IHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0
YWJhc2UuY2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWdldFZlcnNpb25Gcm9tRGF0YWJh
c2UoY3VycmVudFZlcnNpb24sIGZhbHNlKSkgewotICAgICAgICAgICAgICAgIHJlcG9ydE9wZW5E
YXRhYmFzZVJlc3VsdCg0LCBJTlZBTElEX1NUQVRFX0VSUiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0
RXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNz
YWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIHJlYWQgY3VycmVudCB2ZXJz
aW9uIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKICAg
ICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CkBAIC0zOTAsNyArMzYwLDYg
QEAgYm9vbCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXMKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fbmV3
IHx8IHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSB7CiAgICAgICAgICAgICAgICAgTE9H
KFN0b3JhZ2VBUEksICJTZXR0aW5nIHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgJXMgdGhhdCB3YXMg
anVzdCBjcmVhdGVkIiwgbV9leHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNl
RGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIGlmICghc2V0VmVy
c2lvbkluRGF0YWJhc2UobV9leHBlY3RlZFZlcnNpb24sIGZhbHNlKSkgewotICAgICAgICAgICAg
ICAgICAgICByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoNSwgSU5WQUxJRF9TVEFURV9FUlIsIG1f
c3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCkpOwogICAgICAgICAgICAgICAgICAgICBlcnJvck1l
c3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBvcGVuIGRhdGFiYXNlLCBmYWls
ZWQgdG8gd3JpdGUgY3VycmVudCB2ZXJzaW9uIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3Io
KSwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICAgICAg
IHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0
YWJhc2UuY2xvc2UoKTsKQEAgLTQxMSw3ICszODAsNiBAQCBib29sIERhdGFiYXNlQmFja2VuZEJh
c2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJh
cwogICAgIC8vIElmIHRoZSBleHBlY3RlZCB2ZXJzaW9uIGlzbid0IHRoZSBlbXB0eSBzdHJpbmcs
IGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IGRhdGFiYXNlIHZlcnNpb24gd2UgaGF2ZSBtYXRjaGVz
IHRoYXQgdmVyc2lvbi4gT3RoZXJ3aXNlLCBzZXQgYW4gZXhjZXB0aW9uLgogICAgIC8vIElmIHRo
ZSBleHBlY3RlZCB2ZXJzaW9uIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gd2UgYWx3YXlzIHJl
dHVybiB3aXRoIHdoYXRldmVyIHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIHdlIGhhdmUuCiAgICAg
aWYgKCghbV9uZXcgfHwgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpICYmIG1fZXhwZWN0
ZWRWZXJzaW9uLmxlbmd0aCgpICYmIG1fZXhwZWN0ZWRWZXJzaW9uICE9IGN1cnJlbnRWZXJzaW9u
KSB7Ci0gICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCg2LCBJTlZBTElEX1NUQVRFX0VS
UiwgMCk7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwg
dmVyc2lvbiBtaXNtYXRjaCwgJyIgKyBtX2V4cGVjdGVkVmVyc2lvbiArICInIGRvZXMgbm90IG1h
dGNoIHRoZSBjdXJyZW50VmVyc2lvbiBvZiAnIiArIGN1cnJlbnRWZXJzaW9uICsgIiciOwogICAg
ICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQzMCw4ICszOTgsNiBAQCBib29sIERhdGFiYXNlQmFja2VuZEJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhcwogCiAgICAgaWYgKG1fbmV3
ICYmICFzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKICAgICAgICAgbV9leHBlY3RlZFZl
cnNpb24gPSAiIjsgLy8gVGhlIGNhbGxlciBwcm92aWRlZCBhIGNyZWF0aW9uQ2FsbGJhY2sgd2hp
Y2ggd2lsbCBzZXQgdGhlIGV4cGVjdGVkIHZlcnNpb24uCi0KLSAgICByZXBvcnRPcGVuRGF0YWJh
c2VSZXN1bHQoMCwgLTEsIDApOyAvLyBPSwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01Mjcs
MTQgKzQ5Myw4IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kQmFzZTo6c2V0Q2FjaGVkVmVyc2lvbihj
b25zdCBTdHJpbmcmIGFjdHVhbFZlcnNpb24pCiBib29sIERhdGFiYXNlQmFja2VuZEJhc2U6Omdl
dEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJpbmcgJmFjdHVhbFZlcnNpb24pCiB7CiAg
ICAgQVNTRVJUKG1fc3FsaXRlRGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwotI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQotICAgIC8vIE5vdGU6IEluIG11bHRpLXByb2Nlc3MgYnJvd3Nl
cnMgdGhlIGNhY2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZS4KLSAgICAvLyBTbyB3ZSByZXRy
aWV2ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVwZGF0ZSB0aGUgY2FjaGVkIHZh
bHVlIGhlcmUuCi0gICAgcmV0dXJuIGdldFZlcnNpb25Gcm9tRGF0YWJhc2UoYWN0dWFsVmVyc2lv
biwgdHJ1ZSk7Ci0jZWxzZQogICAgIGFjdHVhbFZlcnNpb24gPSBnZXRDYWNoZWRWZXJzaW9uKCk7
CiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKIH0KIAogdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNl
OjpkaXNhYmxlQXV0aG9yaXplcigpCkBAIC02MDIsNyArNTYyLDYgQEAgdm9pZCBEYXRhYmFzZUJh
Y2tlbmRCYXNlOjppbmNyZW1lbnRhbFZhY3V1bUlmTmVlZGVkKCkKICAgICBpbnQ2NF90IHRvdGFs
U2l6ZSA9IG1fc3FsaXRlRGF0YWJhc2UudG90YWxTaXplKCk7CiAgICAgaWYgKHRvdGFsU2l6ZSA8
PSAxMCAqIGZyZWVTcGFjZVNpemUpIHsKICAgICAgICAgaW50IHJlc3VsdCA9IG1fc3FsaXRlRGF0
YWJhc2UucnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCk7Ci0gICAgICAgIHJlcG9ydFZhY3V1
bURhdGFiYXNlUmVzdWx0KHJlc3VsdCk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0
T2spCiAgICAgICAgICAgICBtX2Zyb250ZW5kLT5sb2dFcnJvck1lc3NhZ2UoZm9ybWF0RXJyb3JN
ZXNzYWdlKCJlcnJvciB2YWN1dW1pbmcgZGF0YWJhc2UiLCByZXN1bHQsIG1fc3FsaXRlRGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpKTsKICAgICB9CkBAIC02MTksNDEgKzU3OCw2IEBAIGJvb2wgRGF0
YWJhc2VCYWNrZW5kQmFzZTo6aXNJbnRlcnJ1cHRlZCgpCiAgICAgcmV0dXJuIG1fc3FsaXRlRGF0
YWJhc2UuaXNJbnRlcnJ1cHRlZCgpOwogfQogCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0vLyBU
aGVzZSBhcmUgdXNlZCB0byBnZW5lcmF0ZSBoaXN0b2dyYW1zIG9mIGVycm9ycyBzZWVuIHdpdGgg
d2Vic3FsLgotLy8gU2VlIGFib3V0Omhpc3RvZ3JhbXMgaW4gY2hyb21pdW0uCi12b2lkIERhdGFi
YXNlQmFja2VuZEJhc2U6OnJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdChpbnQgZXJyb3JTaXRlLCBp
bnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQotewotICAgIERhdGFiYXNl
T2JzZXJ2ZXI6OnJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNx
bEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKLX0KLQotdm9pZCBEYXRhYmFzZUJhY2tlbmRC
YXNlOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxF
cnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCi17Ci0gICAgRGF0YWJhc2VPYnNlcnZlcjo6
cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29k
ZSwgc3FsaXRlRXJyb3JDb2RlKTsKLX0KLQotdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpyZXBv
cnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNv
ZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCi17Ci0gICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0
U3RhcnRUcmFuc2FjdGlvblJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwg
c3FsaXRlRXJyb3JDb2RlKTsKLX0KLQotdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpyZXBvcnRD
b21taXRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2Rl
LCBpbnQgc3FsaXRlRXJyb3JDb2RlKQotewotICAgIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydENv
bW1pdFRyYW5zYWN0aW9uUmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBz
cWxpdGVFcnJvckNvZGUpOwotfQotCi12b2lkIERhdGFiYXNlQmFja2VuZEJhc2U6OnJlcG9ydEV4
ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwg
aW50IHNxbGl0ZUVycm9yQ29kZSkKLXsKLSAgICBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRFeGVj
dXRlU3RhdGVtZW50UmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxp
dGVFcnJvckNvZGUpOwotfQotCi12b2lkIERhdGFiYXNlQmFja2VuZEJhc2U6OnJlcG9ydFZhY3V1
bURhdGFiYXNlUmVzdWx0KGludCBzcWxpdGVFcnJvckNvZGUpCi17Ci0gICAgRGF0YWJhc2VPYnNl
cnZlcjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQodGhpcywgc3FsaXRlRXJyb3JDb2RlKTsK
LX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuaAppbmRl
eCA1NWJkOTg5MmU2NmMzYmNiNzQ4ODA4MGQxZGRhZDdmZmVmMzY2MDQ3Li4wODAyZjc4Yjk5OGFm
OGQwYTFhN2RmMTExNzEwYTA2ZDEyZjg5MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuaApAQCAtMTE0LDIy
ICsxMTQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0
cmluZyYpOwogICAgIGJvb2wgZ2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKFN0cmluZyYg
dmVyc2lvbik7CiAKLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICB2b2lkIHJlcG9ydE9wZW5E
YXRhYmFzZVJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3Fs
aXRlRXJyb3JDb2RlKTsKLSAgICB2b2lkIHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoaW50IGVy
cm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7Ci0gICAg
dm9pZCByZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOwotICAgIHZvaWQgcmVwb3J0Q29tbWl0
VHJhbnNhY3Rpb25SZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50
IHNxbGl0ZUVycm9yQ29kZSk7Ci0gICAgdm9pZCByZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0
KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUp
OwotICAgIHZvaWQgcmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoaW50IHNxbGl0ZUVycm9yQ29k
ZSk7Ci0jZWxzZQotICAgIHZvaWQgcmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KGludCwgaW50LCBp
bnQpIHsgfQotICAgIHZvaWQgcmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChpbnQsIGludCwgaW50
KSB7IH0KLSAgICB2b2lkIHJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoaW50LCBpbnQsIGlu
dCkgeyB9Ci0gICAgdm9pZCByZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdChpbnQsIGludCwg
aW50KSB7IH0KLSAgICB2b2lkIHJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50LCBpbnQs
IGludCkgeyB9Ci0gICAgdm9pZCByZXBvcnRWYWN1dW1EYXRhYmFzZVJlc3VsdChpbnQpIHsgfQot
I2VuZGlmCi0KICAgICBzdGF0aWMgY29uc3QgY2hhciogZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7
CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3Jp
Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VCYWNrZW5kU3luYy5jcHAKaW5kZXggYjY4MDM4ZGUzZWFlNzZmYTc4NTY2ZmQ4NWE5
MzBjZGE0ZTcwOWEwYi4uYTI5YjQ4M2I5MmNlMzk2YmRlZDc0NmYzM2M0MTE4OWZiM2ViNmIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJh
Y2tlbmRTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQmFja2VuZFN5bmMuY3BwCkBAIC01NCw5ICs1NCw2IEBAIERhdGFiYXNlQmFja2VuZFN5
bmM6On5EYXRhYmFzZUJhY2tlbmRTeW5jKCkKIAogYm9vbCBEYXRhYmFzZUJhY2tlbmRTeW5jOjpv
cGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFz
ZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0jaWYgUExBVEZPUk0oQ0hS
T01JVU0pCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucHJlcGFyZVRvT3BlbkRhdGFi
YXNlKHRoaXMpOwotI2VuZGlmCiAgICAgcmV0dXJuIHBlcmZvcm1PcGVuQW5kVmVyaWZ5KHNldFZl
cnNpb25Jbk5ld0RhdGFiYXNlLCBlcnJvciwgZXJyb3JNZXNzYWdlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3Bw
CmluZGV4IDU4YTMwOWEyYTBjNjg2NmYwNzQwOWRhNjc3Y2EyMzcxNWQ2MWUyY2MuLjVjNzNiNWQ3
NDEyNjM1ODhmMzYwZDU1ZWQzNGNmN2RjZWM0ZTRiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIyNCwx
MSArMjI0LDkgQEAgdm9pZCBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdW90YShj
b25zdCBTdHJpbmcmIG5hbWUsIERhdGFiYXNlRGV0YWlscwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgp
KTsKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgYSBy
ZWFsIGltcGxlbWVudGF0aW9uOyB0aGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIGZvciB0ZXN0
aW5nLgogICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAy
NCAqIDEwMjQ7CiAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVvdGEpOwotI2Vu
ZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCA4NzhmOGI3
MWE4NjkyOGMxZDdmNGNhYjY3NmRiYzk5ODI5MWVkOWQ3Li4wYTA0MmUxZmZmYjBjMzkyODIwYzc3
ODZjZDM2ZmM0ZjllN2JkZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zNjMsNyArMzYzLDYgQEAgU3Ry
aW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcKICAgICByZXR1cm4gbV9zZXJ2ZXItPmZ1bGxQYXRoRm9yRGF0
YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKLSNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICByZXR1cm4gbV9zZXJ2ZXItPmhhc0VudHJ5
Rm9yT3JpZ2luKG9yaWdpbik7CkBAIC00MTQsMTMgKzQxMyw2IEBAIGJvb2wgRGF0YWJhc2VNYW5h
Z2VyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgcmV0dXJuIG1fc2VydmVyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUp
OwogfQogCi0jZWxzZSAvLyBQTEFURk9STShDSFJPTUlVTSkKLXZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjpjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIG1fc2VydmVyLT5jbG9zZURhdGFiYXNlc0lt
bWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOwotfQotI2VuZGlmIC8vIFBMQVRGT1JN
KENIUk9NSVVNKQotCiB2b2lkIERhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2Vz
Rm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIFJlZlB0
cjxEYXRhYmFzZUNvbnRleHQ+IGRhdGFiYXNlQ29udGV4dCA9IGV4aXN0aW5nRGF0YWJhc2VDb250
ZXh0Rm9yKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggMmRlNjVjYTE1M2I2NmVkMjExMWFmZmU1YzE2
NDRiMTU3NjZkZDcxZS4uZjg2NGUwYmJkOGMxYTg1NzM3MTA2OTM3NzEyMjMwMjIwMTE4Nzk0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5oCkBAIC04OSw3ICs4OSw2IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBmdWxsUGF0
aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNy
ZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7CiAKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAg
ICAgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIHZvaWQgb3Jp
Z2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpOwogICAgIGJvb2wg
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiosIFZlY3RvcjxTdHJpbmc+JiBy
ZXN1bHQpOwpAQCAtMTA0LDEwICsxMDMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxldGVPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0p
Ci0gICAgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSNlbmRpZiAvLyBQTEFURk9STShDSFJP
TUlVTSkKLQogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCmluZGV4IDlmNjM3NWQ2NjJj
YzJmNDliYjQzNTYyOWJmYmI5YjgzYzQ5NjRiMzUuLjE5NDIzOTc0ZTFiNzIyNThjOTBlNjAyNGMy
ZGFkMGUyMzA5MGY3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCkBAIC00MCwzNiArNDAsMjIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB2b2lkIERhdGFiYXNlU2VydmVyOjppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VQYXRoKQogewotI2lmICFQTEFURk9STShDSFJPTUlVTSkKICAgICBEYXRhYmFz
ZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNlUGF0aCk7Ci0jZWxzZQotICAgIFVO
VVNFRF9QQVJBTShkYXRhYmFzZVBhdGgpOwotI2VuZGlmCiB9CiAKIHZvaWQgRGF0YWJhc2VTZXJ2
ZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCkKIHsKLSNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50
KGNsaWVudCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShjbGllbnQpOwotI2VuZGlmCiB9CiAK
IFN0cmluZyBEYXRhYmFzZVNlcnZlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3QKIHsK
LSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwotI2Vsc2UKLSAgICByZXR1cm4gIiI7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBEYXRhYmFzZVNlcnZlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgpOwot
I2VuZGlmCiB9CiAKIFN0cmluZyBEYXRhYmFzZVNlcnZlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZE
b2VzTm90RXhpc3QpCkBAIC03Nyw3ICs2Myw2IEBAIFN0cmluZyBEYXRhYmFzZVNlcnZlcjo6ZnVs
bFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmCiAg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uo
b3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7CiB9CiAKLSNpZiAhUExBVEZPUk0o
Q0hST01JVU0pCiBib29sIERhdGFiYXNlU2VydmVyOjpoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQogewogICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pOwpAQCAtMTI4LDEzICsxMTMsNiBAQCBib29sIERh
dGFiYXNlU2VydmVyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRl
bGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CiB9CiAKLSNlbHNlIC8vIFBMQVRGT1JNKENIUk9N
SVVNKQotdm9pZCBEYXRhYmFzZVNlcnZlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdp
bklkZW50aWZpZXIsIG5hbWUpOwotfQotI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQotCiB2
b2lkIERhdGFiYXNlU2VydmVyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0
IERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0KTsKQEAg
LTE1MCwxMCArMTI4LDEwIEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFzZT4gRGF0YWJh
c2VTZXJ2ZXI6Om9wZW5EYXRhYmFzZShSZWZQdHI8RGF0YWJhc2VCYWNrCiAgICAgCiAgICAgc3dp
dGNoIChhdHRlbXB0KSB7CiAgICAgY2FzZSBGaXJzdFRyeVRvT3BlbkRhdGFiYXNlOgotICAgICAg
ICBzdWNjZXNzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuY2FuRXN0YWJsaXNoRGF0YWJh
c2UoYmFja2VuZENvbnRleHQuZ2V0KCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXpl
LCBlcnJvcik7CisgICAgICAgIHN1Y2Nlc3MgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5j
YW5Fc3RhYmxpc2hEYXRhYmFzZShiYWNrZW5kQ29udGV4dC5nZXQoKSwgbmFtZSwgZXN0aW1hdGVk
U2l6ZSwgZXJyb3IpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJldHJ5T3BlbkRhdGFiYXNl
OgotICAgICAgICBzdWNjZXNzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucmV0cnlDYW5F
c3RhYmxpc2hEYXRhYmFzZShiYWNrZW5kQ29udGV4dC5nZXQoKSwgbmFtZSwgZGlzcGxheU5hbWUs
IGVzdGltYXRlZFNpemUsIGVycm9yKTsKKyAgICAgICAgc3VjY2VzcyA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnJldHJ5Q2FuRXN0YWJsaXNoRGF0YWJhc2UoYmFja2VuZENvbnRleHQuZ2V0
KCksIG5hbWUsIGVzdGltYXRlZFNpemUsIGVycm9yKTsKICAgICB9CiAKICAgICBpZiAoc3VjY2Vz
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VT
ZXJ2ZXIuaAppbmRleCBjM2M2YmI2MWQ4ZjU1MTJmMzA2MGI1Mjg0YWFjMDQ4MmJjZWY3YWJjLi42
YTg2OGJkYzcxOWJkMzMyNWQ2NTdlODQ0MzFjZWU0OWQ4OTNmMDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCkBAIC00OSw3
ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplLAogICAgICAgICBib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LCBEYXRhYmFzZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIE9wZW5BdHRlbXB0KTsKIAot
I2lmICFQTEFURk9STShDSFJPTUlVTSkKICAgICB2aXJ0dWFsIGJvb2wgaGFzRW50cnlGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICB2aXJ0dWFsIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgYm9vbCBkYXRhYmFz
ZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7
CkBAIC02NCwxMCArNjMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZU9yaWdp
bihTZWN1cml0eU9yaWdpbiopOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSNlbHNlIC8vIFBMQVRGT1JNKENI
Uk9NSVVNKQotICAgIHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKLSNlbmRpZiAv
LyBQTEFURk9STShDSFJPTUlVTSkKLQogICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQmFja2VuZENvbnRleHQqKTsKIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVN5bmMuY3BwCmluZGV4IGZhYTljOWJmNWIxZWUxZTE5MjNmZjcyZTYwZGYzMmI2M2FiOGJjNmYu
LmY5MmMzNGZmMGFjYmM4ZmZmMjFlODQ0YWFkNjUwZTc5MDI2NTEwNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKQEAgLTc5
LDcgKzc5LDYgQEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5n
JiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnMKICAgICBBU1NFUlQobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBpZiAoc3FsaXRlRGF0
YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSkgewotICAgICAgICByZXBvcnRDaGFuZ2VW
ZXJzaW9uUmVzdWx0KDEsIFNRTEV4Y2VwdGlvbjo6REFUQUJBU0VfRVJSLCAwKTsKICAgICAgICAg
c2V0TGFzdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIGNoYW5nZVZlcnNpb24gZnJvbSB3aXRoaW4g
YSB0cmFuc2FjdGlvbiIpOwogICAgICAgICBlYyA9IFNRTEV4Y2VwdGlvbjo6REFUQUJBU0VfRVJS
OwogICAgICAgICByZXR1cm47CkBAIC05MywxNCArOTIsMTIgQEAgdm9pZCBEYXRhYmFzZVN5bmM6
OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5l
d1ZlcnMKIAogICAgIFN0cmluZyBhY3R1YWxWZXJzaW9uOwogICAgIGlmICghZ2V0VmVyc2lvbkZy
b21EYXRhYmFzZShhY3R1YWxWZXJzaW9uKSkgewotICAgICAgICByZXBvcnRDaGFuZ2VWZXJzaW9u
UmVzdWx0KDIsIFNRTEV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsIHNxbGl0ZURhdGFiYXNlKCkubGFz
dEVycm9yKCkpOwogICAgICAgICBzZXRMYXN0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gcmVhZCB0
aGUgY3VycmVudCB2ZXJzaW9uIiwgc3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgc3FsaXRl
RGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIGVjID0gU1FMRXhjZXB0aW9uOjpV
TktOT1dOX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhY3R1YWxWZXJz
aW9uICE9IG9sZFZlcnNpb24pIHsKLSAgICAgICAgcmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCgz
LCBTUUxFeGNlcHRpb246OlZFUlNJT05fRVJSLCAwKTsKICAgICAgICAgc2V0TGFzdEVycm9yTWVz
c2FnZSgiY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSBhbmQgYG9sZFZlcnNpb25gIGFy
Z3VtZW50IGRvIG5vdCBtYXRjaCIpOwogICAgICAgICBlYyA9IFNRTEV4Y2VwdGlvbjo6VkVSU0lP
Tl9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTExMiw3ICsxMDksNiBAQCB2b2lkIERhdGFiYXNl
U3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmlu
ZyYgbmV3VmVycwogICAgIH0KIAogICAgIGlmICghc2V0VmVyc2lvbkluRGF0YWJhc2UobmV3VmVy
c2lvbikpIHsKLSAgICAgICAgcmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCg0LCBTUUxFeGNlcHRp
b246OlVOS05PV05fRVJSLCBzcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpKTsKICAgICAgICAg
c2V0TGFzdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIHNldCB0aGUgbmV3IHZlcnNpb24iLCBzcWxp
dGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBzcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgZWMgPSBTUUxFeGNlcHRpb246OlVOS05PV05fRVJSOwogICAgICAgICByZXR1
cm47CkBAIC0xMjQsOCArMTIwLDYgQEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24o
Y29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoMCwgLTEsIDAp
OyAvLyBPSwotCiAgICAgc2V0RXhwZWN0ZWRWZXJzaW9uKG5ld1ZlcnNpb24pOwogICAgIHNldExh
c3RFcnJvck1lc3NhZ2UoIiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDlhZjcxZGNlYWE3MWY5Mzlj
NGNiNWIzNzVkYTgxOGEyODUwOWE1ODIuLjNmMzE0ZGU4NzU2NDcwZDAzZTI1Y2NjNWEwNDk2NTg0
MDllM2Y1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTE1Niw5ICsxNTYsOCBAQCBib29sIERhdGFiYXNl
VHJhY2tlcjo6aGFzQWRlcXVhdGVRdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCB1bnNpZ25lZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBEYXRhYmFzZVRyYWNrZXI6
OmNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZUVycm9yJiBlcnJvcikKK2Jvb2wgRGF0YWJhc2VUcmFj
a2VyOjpjYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJh
c2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlOYW1lKTsgLy8gQ2hy
b21pdW0gbmVlZHMgdGhlIGRpc3BsYXlOYW1lIGJ1dCB3ZSBkb24ndC4KICAgICBlcnJvciA9IERh
dGFiYXNlRXJyb3I6Ok5vbmU7CiAKICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRh
YmFzZUd1YXJkKTsKQEAgLTIwOSwxMyArMjA4LDggQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmNh
bkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqIGNvbnRleHQsIGNvbnMK
IC8vIGhhc0FkZXF1YXRlUXVvdGFGb3JPcmlnaW4oKSBzaW1wbGUgYW5kIGNvcnJlY3QgKGkuZS4g
YnVnIGZyZWUpLCBhbmQganVzdAogLy8gcmUtdXNlIGl0LiBBbHNvIG5vdGUgdGhhdCB0aGUgcGF0
aCBmb3Igb3BlbmluZyBhIGRhdGFiYXNlIGludm9sdmVzIElPLCBhbmQKIC8vIGhlbmNlIHNob3Vs
ZCBub3QgYmUgYSBwZXJmb3JtYW5jZSBjcml0aWNhbCBwYXRoIGFueXdheS4gCi1ib29sIERhdGFi
YXNlVHJhY2tlcjo6cmV0cnlDYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJhY2tlbmRDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VFcnJvciYgZXJyb3IpCiti
b29sIERhdGFiYXNlVHJhY2tlcjo6cmV0cnlDYW5Fc3RhYmxpc2hEYXRhYmFzZShEYXRhYmFzZUJh
Y2tlbmRDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgLy8gQ2hyb21pdW0g
bmVlZHMgdGhlIGRpc3BsYXlOYW1lIGluIGNhbkVzdGFibGlzaERhdGFiYXNlKCksIGJ1dCB3ZSBk
b24ndC4KLSAgICAvLyBUaG91Z2ggQ2hyb21pdW0gZG9lcyBub3QgdXNlIHJldHJ5Q2FuRXN0YWJs
aXNoRGF0YWJhc2UoKSwgd2Ugc2hvdWxkCi0gICAgLy8ga2VlcCB0aGUgcHJvdG90eXBlcyBmb3Ig
Y2FuRXN0YWJsaXNoRGF0YWJhc2UoKSBhbmQgaXRzIHJldHJ5IGZ1bmN0aW9uCi0gICAgLy8gdGhl
IHNhbWUuIEhlbmNlLCB3ZSBhbHNvIGhhdmUgYW4gdW5uZWVkZWQgZGlzcGxheU5hbWUgYXJnIGhl
cmUuCi0gICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlOYW1lKTsKICAgICBlcnJvciA9IERhdGFiYXNl
RXJyb3I6Ok5vbmU7CiAKICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1
YXJkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5oCmluZGV4IDUwNzc0YzIzM2ZlYWFjYjkwYjc5MzM3MzA0MmY2OTRkZmIyYzVh
OWIuLjgwZTNmMDk2NWMzZWIyY2NmZjA0OTM2OGJkNjk2OWVhY2IwMDEwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaApA
QCAtMzEsMzcgKzMxLDI5IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCisjaW5jbHVk
ZSAiRGF0YWJhc2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VFcnJvci5oIgorI2luY2x1
ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi0j
aW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIK
LSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKENIUk9NSVVNKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERhdGFiYXNlQmFja2VuZEJhc2U7CiBjbGFzcyBEYXRhYmFzZUJhY2tlbmRDb250ZXh0
OworY2xhc3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OwogY2xhc3MgT3JpZ2luTG9jazsKIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogCi0jaWYgIVBMQVRGT1JNKENIUk9NSVVNKQotY2xhc3MgRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50OwotCi0jZW5kaWYgLy8gIVBMQVRGT1JNKENIUk9NSVVNKQotCiBjbGFz
cyBEYXRhYmFzZVRyYWNrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFiYXNlVHJh
Y2tlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotI2lmICFQTEFURk9STShD
SFJPTUlVTSkKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplVHJhY2tlcihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlUGF0aCk7Ci0jZW5kaWYKKwogICAgIHN0YXRpYyBEYXRhYmFzZVRyYWNrZXImIHRy
YWNrZXIoKTsKICAgICAvLyBUaGlzIHNpbmdsZXRvbiB3aWxsIHBvdGVudGlhbGx5IGJlIHVzZWQg
ZnJvbSBtdWx0aXBsZSB3b3JrZXIgdGhyZWFkcyBhbmQgdGhlIHBhZ2UncyBjb250ZXh0IHRocmVh
ZCBzaW11bHRhbmVvdXNseS4gIFRvIGtlZXAgdGhpcyBzYWZlLCBpdCdzCiAgICAgLy8gY3VycmVu
dGx5IHVzaW5nIDQgbG9ja3MuICBJbiBvcmRlciB0byBhdm9pZCBkZWFkbG9jayB3aGVuIHRha2lu
ZyBtdWx0aXBsZSBsb2NrcywgeW91IG11c3QgdGFrZSB0aGVtIGluIHRoZSBjb3JyZWN0IG9yZGVy
OgpAQCAtNzAsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgLy8gbV9kYXRhYmFzZUd1YXJkIGFuZCBt
X29wZW5EYXRhYmFzZU1hcEd1YXJkIGN1cnJlbnRseSBkb24ndCBvdmVybGFwLgogICAgIC8vIG5v
dGlmaWNhdGlvbk11dGV4KCkgaXMgY3VycmVudGx5IGluZGVwZW5kZW50IG9mIHRoZSBvdGhlciBs
b2Nrcy4KIAotICAgIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZUVycm9yJik7Ci0gICAgYm9vbCByZXRy
eUNhbkVzdGFibGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSwgRGF0YWJhc2VFcnJvciYpOworICAgIGJvb2wgY2FuRXN0YWJsaXNoRGF0YWJhc2Uo
RGF0YWJhc2VCYWNrZW5kQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9u
ZyBlc3RpbWF0ZWRTaXplLCBEYXRhYmFzZUVycm9yJik7CisgICAgYm9vbCByZXRyeUNhbkVzdGFi
bGlzaERhdGFiYXNlKERhdGFiYXNlQmFja2VuZENvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VFcnJvciYpOwogCiAgICAgdm9p
ZCBzZXREYXRhYmFzZURldGFpbHMoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7
CiAgICAgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKTsKQEAgLTg5LDcg
KzgxLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaGFzQWRlcXVhdGVRdW90YUZvck9yaWdpbihT
ZWN1cml0eU9yaWdpbiosIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRGF0YWJhc2VFcnJv
ciYpOwogCi0jaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogcHVibGljOgogICAgIHZvaWQgc2V0RGF0
YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBkYXRhYmFzZURp
cmVjdG9yeVBhdGgoKSBjb25zdDsKQEAgLTE4MSwyNCArMTcyLDYgQEAgcHJpdmF0ZToKIAogICAg
IHN0YXRpYyB2b2lkIHNjaGVkdWxlRm9yTm90aWZpY2F0aW9uKCk7CiAgICAgc3RhdGljIHZvaWQg
bm90aWZ5RGF0YWJhc2VzQ2hhbmdlZCh2b2lkKik7Ci0jZWxzZSAvLyBQTEFURk9STShDSFJPTUlV
TSkKLXB1YmxpYzoKLSAgICB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOwotCi0gICAgdm9pZCBw
cmVwYXJlVG9PcGVuRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kQmFzZSopOwotICAgIHZvaWQgZmFp
bGVkVG9PcGVuRGF0YWJhc2UoRGF0YWJhc2VCYWNrZW5kQmFzZSopOwotCi1wcml2YXRlOgotICAg
IHR5cGVkZWYgSGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4gRGF0YWJhc2VTZXQ7Ci0gICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VTZXQqPiBEYXRhYmFzZU5hbWVNYXA7Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRGF0YWJhc2VOYW1lTWFwKj4gRGF0YWJhc2VPcmln
aW5NYXA7Ci0gICAgY2xhc3MgQ2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5VGFzazsKLQotICAg
IHZvaWQgY2xvc2VPbmVEYXRhYmFzZUltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRhYmFzZUJhY2tlbmRCYXNlKik7Ci0KLSAg
ICBNdXRleCBtX29wZW5EYXRhYmFzZU1hcEd1YXJkOwotICAgIG11dGFibGUgT3duUHRyPERhdGFi
YXNlT3JpZ2luTWFwPiBtX29wZW5EYXRhYmFzZU1hcDsKLSNlbmRpZiAvLyBQTEFURk9STShDSFJP
TUlVTSkKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuY3BwCmlu
ZGV4IDBkMjI3MDQ0MTM0ZjNkOWRjOWFlOGZiNzhmMTNkZDA1YTFjZTdiNmMuLjc3OTI0YmViNjY5
ZGZlNDQ2YjY5ZjA3YmFkN2MxMjRhOWNhMDZkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcApAQCAt
MTMyLDcgKzEzMiw2IEBAIGJvb2wgU1FMU3RhdGVtZW50QmFja2VuZDo6ZXhlY3V0ZShEYXRhYmFz
ZUJhY2tlbmQqIGRiKQogICAgICAgICAgICAgbV9lcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FM
RXJyb3I6OkRBVEFCQVNFX0VSUiwgImNvdWxkIG5vdCBwcmVwYXJlIHN0YXRlbWVudCIsIHJlc3Vs
dCwgImludGVycnVwdGVkIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fZXJyb3IgPSBT
UUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpTWU5UQVhfRVJSLCAiY291bGQgbm90IHByZXBhcmUg
c3RhdGVtZW50IiwgcmVzdWx0LCBkYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwotICAgICAgICBk
Yi0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCgxLCBtX2Vycm9yLT5jb2RlKCksIHJlc3Vs
dCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE0MSwyMCArMTQwLDE4IEBA
IGJvb2wgU1FMU3RhdGVtZW50QmFja2VuZDo6ZXhlY3V0ZShEYXRhYmFzZUJhY2tlbmQqIGRiKQog
ICAgIGlmIChzdGF0ZW1lbnQuYmluZFBhcmFtZXRlckNvdW50KCkgIT0gbV9hcmd1bWVudHMuc2l6
ZSgpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiQmluZCBwYXJhbWV0ZXIgY291bnQgZG9l
c24ndCBtYXRjaCBudW1iZXIgb2YgcXVlc3Rpb24gbWFya3MiKTsKICAgICAgICAgbV9lcnJvciA9
IFNRTEVycm9yOjpjcmVhdGUoZGItPmlzSW50ZXJydXB0ZWQoKSA/IFNRTEVycm9yOjpEQVRBQkFT
RV9FUlIgOiBTUUxFcnJvcjo6U1lOVEFYX0VSUiwgIm51bWJlciBvZiAnPydzIGluIHN0YXRlbWVu
dCBzdHJpbmcgZG9lcyBub3QgbWF0Y2ggYXJndW1lbnQgY291bnQiKTsKLSAgICAgICAgZGItPnJl
cG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoMiwgbV9lcnJvci0+Y29kZSgpLCAwKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICByZXN1bHQgPSBzdGF0ZW1lbnQuYmlu
ZFZhbHVlKGkgKyAxLCBtX2FyZ3VtZW50c1tpXSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gU1FM
UmVzdWx0RnVsbCkgewotICAgICAgICAgICAgc2V0RmFpbHVyZUR1ZVRvUXVvdGEoZGIpOworICAg
ICAgICAgICAgc2V0RmFpbHVyZUR1ZVRvUXVvdGEoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spIHsKICAg
ICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIGJpbmQgdmFsdWUgaW5kZXggJWkg
dG8gc3RhdGVtZW50IGZvciBxdWVyeSAnJXMnIiwgaSArIDEsIG1fc3RhdGVtZW50LmFzY2lpKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIGRiLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDMs
IFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIHJlc3VsdCk7CiAgICAgICAgICAgICBtX2Vycm9yID0g
U1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAiY291bGQgbm90IGJpbmQg
dmFsdWUiLCByZXN1bHQsIGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE3OSw3ICsxNzYsNiBAQCBib29sIFNRTFN0YXRl
bWVudEJhY2tlbmQ6OmV4ZWN1dGUoRGF0YWJhc2VCYWNrZW5kKiBkYikKICAgICAgICAgfSB3aGls
ZSAocmVzdWx0ID09IFNRTFJlc3VsdFJvdyk7CiAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxS
ZXN1bHREb25lKSB7Ci0gICAgICAgICAgICBkYi0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3Vs
dCg0LCBTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCByZXN1bHQpOwogICAgICAgICAgICAgbV9lcnJv
ciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgImNvdWxkIG5vdCBp
dGVyYXRlIHJlc3VsdHMiLCByZXN1bHQsIGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE4OSwxNCArMTg1LDEyIEBAIGJv
b2wgU1FMU3RhdGVtZW50QmFja2VuZDo6ZXhlY3V0ZShEYXRhYmFzZUJhY2tlbmQqIGRiKQogICAg
ICAgICAgICAgcmVzdWx0U2V0LT5zZXRJbnNlcnRJZChkYXRhYmFzZS0+bGFzdEluc2VydFJvd0lE
KCkpOwogICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNRTFJlc3VsdEZ1bGwpIHsKICAgICAgICAg
Ly8gUmV0dXJuIHRoZSBRdW90YSBlcnJvciAtIHRoZSBkZWxlZ2F0ZSB3aWxsIGJlIGFza2VkIGZv
ciBtb3JlIHNwYWNlIGFuZCB0aGlzIHN0YXRlbWVudCBtaWdodCBiZSByZS1ydW4KLSAgICAgICAg
c2V0RmFpbHVyZUR1ZVRvUXVvdGEoZGIpOworICAgICAgICBzZXRGYWlsdXJlRHVlVG9RdW90YSgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMUmVz
dWx0Q29uc3RyYWludCkgewotICAgICAgICBkYi0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3Vs
dCg2LCBTUUxFcnJvcjo6Q09OU1RSQUlOVF9FUlIsIHJlc3VsdCk7CiAgICAgICAgIG1fZXJyb3Ig
PSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpDT05TVFJBSU5UX0VSUiwgImNvdWxkIG5vdCBl
eGVjdXRlIHN0YXRlbWVudCBkdWUgdG8gYSBjb25zdGFpbnQgZmFpbHVyZSIsIHJlc3VsdCwgZGF0
YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGRiLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDUsIFNRTEVycm9y
OjpEQVRBQkFTRV9FUlIsIHJlc3VsdCk7CiAgICAgICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3Jl
YXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJjb3VsZCBub3QgZXhlY3V0ZSBzdGF0ZW1lbnQi
LCByZXN1bHQsIGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0yMDcsMjggKzIwMSwyNCBAQCBib29sIFNRTFN0YXRlbWVudEJhY2tlbmQ6
OmV4ZWN1dGUoRGF0YWJhc2VCYWNrZW5kKiBkYikKICAgICByZXN1bHRTZXQtPnNldFJvd3NBZmZl
Y3RlZChkYXRhYmFzZS0+bGFzdENoYW5nZXMoKSk7CiAKICAgICBtX3Jlc3VsdFNldCA9IHJlc3Vs
dFNldDsKLSAgICBkYi0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCgwLCAtMSwgMCk7IC8v
IE9LCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1FMU3RhdGVtZW50QmFja2VuZDo6c2V0
RGF0YWJhc2VEZWxldGVkRXJyb3IoRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKK3ZvaWQgU1FM
U3RhdGVtZW50QmFja2VuZDo6c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKQogewogICAgIEFTU0VS
VCghbV9lcnJvciAmJiAhbV9yZXN1bHRTZXQpOwotICAgIGRhdGFiYXNlLT5yZXBvcnRFeGVjdXRl
U3RhdGVtZW50UmVzdWx0KDYsIFNRTEVycm9yOjpVTktOT1dOX0VSUiwgMCk7CiAgICAgbV9lcnJv
ciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5hYmxlIHRvIGV4
ZWN1dGUgc3RhdGVtZW50LCBiZWNhdXNlIHRoZSB1c2VyIGRlbGV0ZWQgdGhlIGRhdGFiYXNlIik7
CiB9CiAKLXZvaWQgU1FMU3RhdGVtZW50QmFja2VuZDo6c2V0VmVyc2lvbk1pc21hdGNoZWRFcnJv
cihEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQordm9pZCBTUUxTdGF0ZW1lbnRCYWNrZW5kOjpz
ZXRWZXJzaW9uTWlzbWF0Y2hlZEVycm9yKCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IgJiYgIW1f
cmVzdWx0U2V0KTsKLSAgICBkYXRhYmFzZS0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCg3
LCBTUUxFcnJvcjo6VkVSU0lPTl9FUlIsIDApOwogICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3Jl
YXRlKFNRTEVycm9yOjpWRVJTSU9OX0VSUiwgImN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZGF0YWJh
c2UgYW5kIGBvbGRWZXJzaW9uYCBhcmd1bWVudCBkbyBub3QgbWF0Y2giKTsKIH0KIAotdm9pZCBT
UUxTdGF0ZW1lbnRCYWNrZW5kOjpzZXRGYWlsdXJlRHVlVG9RdW90YShEYXRhYmFzZUJhY2tlbmQq
IGRhdGFiYXNlKQordm9pZCBTUUxTdGF0ZW1lbnRCYWNrZW5kOjpzZXRGYWlsdXJlRHVlVG9RdW90
YSgpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yICYmICFtX3Jlc3VsdFNldCk7Ci0gICAgZGF0YWJh
c2UtPnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoOCwgU1FMRXJyb3I6OlFVT1RBX0VSUiwg
MCk7CiAgICAgbV9lcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlFVT1RBX0VSUiwg
InRoZXJlIHdhcyBub3QgZW5vdWdoIHJlbWFpbmluZyBzdG9yYWdlIHNwYWNlLCBvciB0aGUgc3Rv
cmFnZSBxdW90YSB3YXMgcmVhY2hlZCBhbmQgdGhlIHVzZXIgZGVjbGluZWQgdG8gYWxsb3cgbW9y
ZSBzcGFjZSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2VuZC5oCmluZGV4IDhlNzIxMzIxM2ZjZjllOGNhMmU3
ZmZhYjc0NzkxMDk0NTg2NTNlZGMuLmEyZDI2OTBkOTkwMzRmYjg2MmMzNTM1Njk5NzMzMjkzOWZh
ZjgwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50QmFja2VuZC5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1N0YXRlbWVudENhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDYWxsYmFjazsg
fQogICAgIGJvb2wgaGFzU3RhdGVtZW50RXJyb3JDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRXJyb3JDYWxsYmFjazsgfQogCi0gICAgdm9pZCBzZXREYXRhYmFzZURlbGV0ZWRFcnJvcihE
YXRhYmFzZUJhY2tlbmQqKTsKLSAgICB2b2lkIHNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IoRGF0
YWJhc2VCYWNrZW5kKik7CisgICAgdm9pZCBzZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOworICAg
IHZvaWQgc2V0VmVyc2lvbk1pc21hdGNoZWRFcnJvcigpOwogCiAgICAgQWJzdHJhY3RTUUxTdGF0
ZW1lbnQqIGZyb250ZW5kKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNRTEVycm9yPiBzcWxF
cnJvcigpIGNvbnN0OwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIFNRTFN0YXRlbWVu
dEJhY2tlbmQoUGFzc093blB0cjxBYnN0cmFjdFNRTFN0YXRlbWVudD4sIGNvbnN0IFN0cmluZyYg
c3RhdGVtZW50LAogICAgICAgICBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIGlu
dCBwZXJtaXNzaW9ucyk7CiAKLSAgICB2b2lkIHNldEZhaWx1cmVEdWVUb1F1b3RhKERhdGFiYXNl
QmFja2VuZCopOworICAgIHZvaWQgc2V0RmFpbHVyZUR1ZVRvUXVvdGEoKTsKICAgICB2b2lkIGNs
ZWFyRmFpbHVyZUR1ZVRvUXVvdGEoKTsKIAogICAgIE93blB0cjxBYnN0cmFjdFNRTFN0YXRlbWVu
dD4gbV9mcm9udGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggYjYwZTZiMDllMjQ5OWZjMDJhMzk0YmYxNGQy
NmRiYzIwNmVhMDI4MS4uMmI0ZjdiYjIyMGYwOTFmN2ZhNDUzMDNlODU5ZmJhMTljMGIxMjE2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKQEAgLTE1MCwxMSArMTUwLDkgQEAgU1FMVHJhbnNhY3Rpb25TdGF0ZSBTUUxU
cmFuc2FjdGlvbjo6ZGVsaXZlclRyYW5zYWN0aW9uQ2FsbGJhY2soKQogICAgIC8vIFNwZWMgNC4z
LjIgNTogSWYgdGhlIHRyYW5zYWN0aW9uIGNhbGxiYWNrIHdhcyBudWxsIG9yIHJhaXNlZCBhbiBl
eGNlcHRpb24sIGp1bXAgdG8gdGhlIGVycm9yIGNhbGxiYWNrCiAgICAgU1FMVHJhbnNhY3Rpb25T
dGF0ZSBuZXh0U3RhdGUgPSBTUUxUcmFuc2FjdGlvblN0YXRlOjpSdW5TdGF0ZW1lbnRzOwogICAg
IGlmIChzaG91bGREZWxpdmVyRXJyb3JDYWxsYmFjaykgewotICAgICAgICBtX2RhdGFiYXNlLT5y
ZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KDUsIFNRTEVycm9yOjpVTktOT1dOX0VSUiwgMCk7
CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6
OlVOS05PV05fRVJSLCAidGhlIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgd2FzIG51bGwgb3IgdGhy
ZXcgYW4gZXhjZXB0aW9uIik7CiAgICAgICAgIG5leHRTdGF0ZSA9IFNRTFRyYW5zYWN0aW9uU3Rh
dGU6OkRlbGl2ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CiAgICAgfQotICAgIG1fZGF0YWJh
c2UtPnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoMCwgLTEsIDApOyAvLyBPSwogICAgIHJl
dHVybiBuZXh0U3RhdGU7CiB9CiAKQEAgLTE5OCw3ICsxOTYsNiBAQCBTUUxUcmFuc2FjdGlvblN0
YXRlIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2soKQogICAgIG1fZXhl
Y3V0ZVNxbEFsbG93ZWQgPSBmYWxzZTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgbV9k
YXRhYmFzZS0+cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoMiwgU1FMRXJyb3I6OlVOS05P
V05fRVJSLCAwKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0
ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ0aGUgc3RhdGVtZW50IGNhbGxiYWNrIHJhaXNlZCBh
biBleGNlcHRpb24gb3Igc3RhdGVtZW50IGVycm9yIGNhbGxiYWNrIGRpZCBub3QgcmV0dXJuIGZh
bHNlIik7CiAgICAgICAgIHJldHVybiBuZXh0U3RhdGVGb3JUcmFuc2FjdGlvbkVycm9yKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IGJiNTQ4YmFkNjU0NTlhYTU1ZmRhNjhh
OTM1ZTQ0YWJmNDRlOGY0ZmQuLjA0OTA5ODI4YmM4YmE2MzNmZmM0NTZiYmUyODQ0MGE0OWRkYjA3
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uQmFja2VuZDo6ZXhlY3V0ZVNRTChQYXNzT3duUHRyPEFic3RyYWN0U1FMU3Rh
dGVtZW50PiBzdGF0ZW1lbgogICAgIHN0YXRlbWVudEJhY2tlbmQgPSBTUUxTdGF0ZW1lbnRCYWNr
ZW5kOjpjcmVhdGUoc3RhdGVtZW50LCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cywgcGVybWlzc2lv
bnMpOwogCiAgICAgaWYgKERhdGFiYXNlOjpmcm9tKG1fZGF0YWJhc2UuZ2V0KCkpLT5kZWxldGVk
KCkpCi0gICAgICAgIHN0YXRlbWVudEJhY2tlbmQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKG1f
ZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBzdGF0ZW1lbnRCYWNrZW5kLT5zZXREYXRhYmFzZURl
bGV0ZWRFcnJvcigpOwogCiAgICAgZW5xdWV1ZVN0YXRlbWVudEJhY2tlbmQoc3RhdGVtZW50QmFj
a2VuZCk7CiB9CkBAIC01NjksNyArNTY5LDYgQEAgU1FMVHJhbnNhY3Rpb25TdGF0ZSBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ6Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAKICAgICAvLyBJ
ZiB0aGUgZGF0YWJhc2Ugd2FzIGRlbGV0ZWQsIGp1bXAgdG8gdGhlIGVycm9yIGNhbGxiYWNrCiAg
ICAgaWYgKERhdGFiYXNlOjpmcm9tKG1fZGF0YWJhc2UuZ2V0KCkpLT5kZWxldGVkKCkpIHsKLSAg
ICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCgxLCBTUUxFcnJv
cjo6VU5LTk9XTl9FUlIsIDApOwogICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJv
cjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInVuYWJsZSB0byBvcGVuIGEgdHJhbnNh
Y3Rpb24sIGJlY2F1c2UgdGhlIHVzZXIgZGVsZXRlZCB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAg
cmV0dXJuIG5leHRTdGF0ZUZvclRyYW5zYWN0aW9uRXJyb3IoKTsKICAgICB9CkBAIC01OTEsNyAr
NTkwLDYgQEAgU1FMVHJhbnNhY3Rpb25TdGF0ZSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om9wZW5U
cmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgLy8gU3BlYyA0LjMuMi4xKzI6IE9wZW4gYSB0
cmFuc2FjdGlvbiB0byB0aGUgZGF0YWJhc2UsIGp1bXBpbmcgdG8gdGhlIGVycm9yIGNhbGxiYWNr
IGlmIHRoYXQgZmFpbHMKICAgICBpZiAoIW1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3Mo
KSkgewogICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkudHJhbnNh
Y3Rpb25JblByb2dyZXNzKCkpOwotICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRTdGFydFRyYW5z
YWN0aW9uUmVzdWx0KDIsIFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIG1fZGF0YWJhc2UtPnNxbGl0
ZURhdGFiYXNlKCkubGFzdEVycm9yKCkpOwogICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBT
UUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJ1bmFibGUgdG8gYmVnaW4g
dHJhbnNhY3Rpb24iLAogICAgICAgICAgICAgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5s
YXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7
CiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24uY2xlYXIoKTsKQEAgLTYwMyw3ICs2MDEsNiBA
QCBTUUxUcmFuc2FjdGlvblN0YXRlIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6b3BlblRyYW5zYWN0
aW9uQW5kUHJlZmxpZ2h0KCkKICAgICAvLyB0aGUgYWN0dWFsIHZlcnNpb24uIEluIHNpbmdsZS1w
cm9jZXNzIGJyb3dzZXJzLCB0aGlzIGlzIGp1c3QgYSBtYXAgbG9va3VwLgogICAgIFN0cmluZyBh
Y3R1YWxWZXJzaW9uOwogICAgIGlmICghbV9kYXRhYmFzZS0+Z2V0QWN0dWFsVmVyc2lvbkZvclRy
YW5zYWN0aW9uKGFjdHVhbFZlcnNpb24pKSB7Ci0gICAgICAgIG1fZGF0YWJhc2UtPnJlcG9ydFN0
YXJ0VHJhbnNhY3Rpb25SZXN1bHQoMywgU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgbV9kYXRhYmFz
ZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25F
cnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgInVuYWJsZSB0
byByZWFkIHZlcnNpb24iLAogICAgICAgICAgICAgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2Uo
KS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2co
KSk7CiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVBdXRob3JpemVyKCk7CkBAIC02MTksMTAg
KzYxNiw4IEBAIFNRTFRyYW5zYWN0aW9uU3RhdGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpvcGVu
VHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLmNs
ZWFyKCk7CiAgICAgICAgIG1fZGF0YWJhc2UtPmVuYWJsZUF1dGhvcml6ZXIoKTsKICAgICAgICAg
bV90cmFuc2FjdGlvbkVycm9yID0gbV93cmFwcGVyLT5zcWxFcnJvcigpOwotICAgICAgICBpZiAo
IW1fdHJhbnNhY3Rpb25FcnJvcikgewotICAgICAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3Rh
cnRUcmFuc2FjdGlvblJlc3VsdCg0LCBTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIDApOworICAgICAg
ICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikKICAgICAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJv
ciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5rbm93biBlcnJv
ciBvY2N1cnJlZCBkdXJpbmcgdHJhbnNhY3Rpb24gcHJlZmxpZ2h0Iik7Ci0gICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG5leHRTdGF0ZUZvclRyYW5zYWN0aW9uRXJyb3IoKTsKICAgICB9CiAKQEAg
LTY4Nyw3ICs2ODIsNyBAQCBTUUxUcmFuc2FjdGlvblN0YXRlIFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZDo6cnVuQ3VycmVudFN0YXRlbWVudEFuZEdldE5leHRTdGF0ZSgpCiAgICAgbV9kYXRhYmFzZS0+
cmVzZXRBdXRob3JpemVyKCk7CiAKICAgICBpZiAobV9oYXNWZXJzaW9uTWlzbWF0Y2gpCi0gICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudEJhY2tlbmQtPnNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3Io
RGF0YWJhc2U6OmZyb20obV9kYXRhYmFzZS5nZXQoKSkpOworICAgICAgICBtX2N1cnJlbnRTdGF0
ZW1lbnRCYWNrZW5kLT5zZXRWZXJzaW9uTWlzbWF0Y2hlZEVycm9yKCk7CiAKICAgICBpZiAobV9j
dXJyZW50U3RhdGVtZW50QmFja2VuZC0+ZXhlY3V0ZShtX2RhdGFiYXNlLmdldCgpKSkgewogICAg
ICAgICBpZiAobV9kYXRhYmFzZS0+bGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSgpKSB7CkBAIC03
MTksMTAgKzcxNCw4IEBAIFNRTFRyYW5zYWN0aW9uU3RhdGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5k
OjpuZXh0U3RhdGVGb3JDdXJyZW50U3RhdGVtZW50RXJyb3IoKQogICAgICAgICByZXR1cm4gU1FM
VHJhbnNhY3Rpb25TdGF0ZTo6RGVsaXZlclN0YXRlbWVudENhbGxiYWNrOwogCiAgICAgbV90cmFu
c2FjdGlvbkVycm9yID0gbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZC0+c3FsRXJyb3IoKTsKLSAg
ICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikgewotICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRD
b21taXRUcmFuc2FjdGlvblJlc3VsdCgxLCBTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAwKTsKKyAg
ICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0g
U1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidGhlIHN0YXRlbWVudCBm
YWlsZWQgdG8gZXhlY3V0ZSIpOwotICAgIH0KICAgICByZXR1cm4gbmV4dFN0YXRlRm9yVHJhbnNh
Y3Rpb25FcnJvcigpOwogfQogCkBAIC03MzMsMTAgKzcyNiw4IEBAIFNRTFRyYW5zYWN0aW9uU3Rh
dGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0KCkKICAgICAvLyBT
cGVjIDQuMy4yLjc6IFBlcmZvcm0gcG9zdGZsaWdodCBzdGVwcywganVtcGluZyB0byB0aGUgZXJy
b3IgY2FsbGJhY2sgaWYgdGhleSBmYWlsLgogICAgIGlmIChtX3dyYXBwZXIgJiYgIW1fd3JhcHBl
ci0+cGVyZm9ybVBvc3RmbGlnaHQodGhpcykpIHsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9y
ID0gbV93cmFwcGVyLT5zcWxFcnJvcigpOwotICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJv
cikgewotICAgICAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1
bHQoMywgU1FMRXJyb3I6OlVOS05PV05fRVJSLCAwKTsKKyAgICAgICAgaWYgKCFtX3RyYW5zYWN0
aW9uRXJyb3IpCiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3Jl
YXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInVua25vd24gZXJyb3Igb2NjdXJyZWQgZHVyaW5n
IHRyYW5zYWN0aW9uIHBvc3RmbGlnaHQiKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV4
dFN0YXRlRm9yVHJhbnNhY3Rpb25FcnJvcigpOwogICAgIH0KIApAQCAtNzUzLDE0ICs3NDQsMTEg
QEAgU1FMVHJhbnNhY3Rpb25TdGF0ZSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnBvc3RmbGlnaHRB
bmRDb21taXQoKQogICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsK
ICAgICAgICAgaWYgKG1fd3JhcHBlcikKICAgICAgICAgICAgIG1fd3JhcHBlci0+aGFuZGxlQ29t
bWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0KHRoaXMpOwotICAgICAgICBtX2RhdGFiYXNlLT5yZXBv
cnRDb21taXRUcmFuc2FjdGlvblJlc3VsdCg0LCBTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCBtX2Rh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpKTsKICAgICAgICAgbV90cmFuc2Fj
dGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5h
YmxlIHRvIGNvbW1pdCB0cmFuc2FjdGlvbiIsCiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5zcWxp
dGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIG5leHRTdGF0ZUZvclRyYW5zYWN0aW9uRXJy
b3IoKTsKICAgICB9CiAKLSAgICBtX2RhdGFiYXNlLT5yZXBvcnRDb21taXRUcmFuc2FjdGlvblJl
c3VsdCgwLCAtMSwgMCk7IC8vIE9LCi0KICAgICAvLyBWYWN1dW0gdGhlIGRhdGFiYXNlIGlmIGFu
eXRoaW5nIHdhcyBkZWxldGVkLgogICAgIGlmIChtX2RhdGFiYXNlLT5oYWREZWxldGVzKCkpCiAg
ICAgICAgIG1fZGF0YWJhc2UtPmluY3JlbWVudGFsVmFjdXVtSWZOZWVkZWQoKTsKQEAgLTg0OSwy
MSArODM3LDE3IEBAIFNRTFRyYW5zYWN0aW9uU3RhdGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpz
ZW5kVG9Gcm9udGVuZFN0YXRlKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmFjcXVp
cmVPcmlnaW5Mb2NrKCkKIHsKLSNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgQVNTRVJUKCFt
X29yaWdpbkxvY2spOwogICAgIG1fb3JpZ2luTG9jayA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLm9yaWdpbkxvY2tGb3IobV9kYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgbV9v
cmlnaW5Mb2NrLT5sb2NrKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6OnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKQogewotI2lmICFQTEFURk9STShDSFJPTUlV
TSkKICAgICBpZiAobV9vcmlnaW5Mb2NrKSB7CiAgICAgICAgIG1fb3JpZ2luTG9jay0+dW5sb2Nr
KCk7CiAgICAgICAgIG1fb3JpZ2luTG9jay5jbGVhcigpOwogICAgIH0KLSNlbmRpZgogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaAppbmRleCAwMGMyMjgwYjJl
OGJmZTAyMzA4YTgxZjcyZmFjZDYyYTE2YmRhZThlLi4xMmE1MDA5YTk5NTk3OWI2ZjU0ZjJlMjJl
YTlhODJmZWRlYmI2NGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgKQEAgLTEzMiw5ICsxMzIsNyBA
QCBwcml2YXRlOgogICAgIERlcXVlPFJlZlB0cjxTUUxTdGF0ZW1lbnRCYWNrZW5kPiA+IG1fc3Rh
dGVtZW50UXVldWU7CiAKICAgICBPd25QdHI8U1FMaXRlVHJhbnNhY3Rpb24+IG1fc3FsaXRlVHJh
bnNhY3Rpb247Ci0jaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogICAgIFJlZlB0cjxPcmlnaW5Mb2Nr
PiBtX29yaWdpbkxvY2s7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25CYWNrZW5kU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwCmluZGV4IGI4MDFjZjQ2MmY3NmJjMDlkNjk2N2M0
ZDk1NzU4ODQ3YjdiZjNkOTUuLjU1MjIyNjQwNWQ2ZTQzMWU3MGM5MjgwMGE0OGRmMTZjZTFmMmQ5
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmNwcApAQCAtMTMxLDcgKzEzMSw2IEBA
IEV4Y2VwdGlvbkNvZGUgU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYzo6YmVnaW4oKQogewogICAg
IEFTU0VSVChtX2RhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRo
cmVhZCgpKTsKICAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW5lZCgpKSB7Ci0gICAgICAgIG1fZGF0
YWJhc2UtPnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoMSwgU1FMRXhjZXB0aW9uOjpVTktO
T1dOX0VSUiwgMCk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoImNh
bm5vdCBiZWdpbiB0cmFuc2FjdGlvbiBiZWNhdXNlIHRoZSBkYXRhYmFzZSBpcyBub3Qgb3BlbiIp
OwogICAgICAgICByZXR1cm4gU1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUjsKICAgICB9CkBAIC0x
NTMsNyArMTUyLDYgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jOjpi
ZWdpbigpCiAgICAgLy8gQ2hlY2sgaWYgYmVnaW4oKSBzdWNjZWVkZWQuCiAgICAgaWYgKCFtX3Nx
bGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX2RhdGFi
YXNlLT5zcWxpdGVEYXRhYmFzZSgpLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKLSAgICAgICAg
bV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCgyLCBTUUxFeGNlcHRpb246
OkRBVEFCQVNFX0VSUiwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7
CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBiZWdp
biB0cmFuc2FjdGlvbiIsCiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgp
Lmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvck1zZygp
KTsKICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5jbGVhcigpOwpAQCAtMTY1LDE0ICsxNjMs
MTIgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jOjpiZWdpbigpCiAg
ICAgLy8gdGhlIGFjdHVhbCB2ZXJzaW9uLiBJbiBzaW5nbGUtcHJvY2VzcyBicm93c2VycywgdGhp
cyBpcyBqdXN0IGEgbWFwIGxvb2t1cC4KICAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbjsKICAgICBp
ZiAoIW1fZGF0YWJhc2UtPmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihhY3R1YWxWZXJz
aW9uKSkgewotICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0
KDMsIFNRTEV4Y2VwdGlvbjo6REFUQUJBU0VfRVJSLCBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFz
ZSgpLmxhc3RFcnJvcigpKTsKICAgICAgICAgbV9kYXRhYmFzZS0+c2V0TGFzdEVycm9yTWVzc2Fn
ZSgidW5hYmxlIHRvIHJlYWQgdmVyc2lvbiIsCiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5zcWxp
dGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgcm9sbGJhY2soKTsKICAgICAgICAgcmV0dXJuIFNRTEV4
Y2VwdGlvbjo6REFUQUJBU0VfRVJSOwogICAgIH0KICAgICBtX2hhc1ZlcnNpb25NaXNtYXRjaCA9
ICFtX2RhdGFiYXNlLT5leHBlY3RlZFZlcnNpb24oKS5pc0VtcHR5KCkgJiYgKG1fZGF0YWJhc2Ut
PmV4cGVjdGVkVmVyc2lvbigpICE9IGFjdHVhbFZlcnNpb24pOwotICAgIG1fZGF0YWJhc2UtPnJl
cG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoMCwgLTEsIDApOyAvLyBPSwogICAgIHJldHVybiAw
OwogfQogCkBAIC0xOTQsNyArMTkwLDYgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmRTeW5jOjpjb21taXQoKQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBpZiAoIW1fZGF0YWJhc2Ut
Pm9wZW5lZCgpKSB7Ci0gICAgICAgIG1fZGF0YWJhc2UtPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9u
UmVzdWx0KDEsIFNRTEV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsIDApOwogICAgICAgICBtX2RhdGFi
YXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gY29tbWl0IHRyYW5zYWN0aW9uIGJl
Y2F1c2UgdGhlIGRhdGFiYXNlIGlzIG5vdCBvcGVuLiIpOwogICAgICAgICByZXR1cm4gU1FMRXhj
ZXB0aW9uOjpVTktOT1dOX0VSUjsKICAgICB9CkBAIC0yMDcsNyArMjAyLDYgQEAgRXhjZXB0aW9u
Q29kZSBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jOjpjb21taXQoKQogCiAgICAgLy8gSWYgdGhl
IGNvbW1pdCBmYWlsZWQsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIHN0aWxsIGJlIG1hcmtlZCBhcyAi
aW4gcHJvZ3Jlc3MiCiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkg
ewotICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdCgyLCBT
UUxFeGNlcHRpb246OkRBVEFCQVNFX0VSUiwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5s
YXN0RXJyb3IoKSk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoInVu
YWJsZSB0byBjb21taXQgdHJhbnNhY3Rpb24iLAogICAgICAgICAgICAgbV9kYXRhYmFzZS0+c3Fs
aXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBTUUxFeGNlcHRpb246OkRBVEFCQVNFX0VS
UjsKQEAgLTIyMiw4ICsyMTYsNiBAQCBFeGNlcHRpb25Db2RlIFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZFN5bmM6OmNvbW1pdCgpCiAgICAgLy8gVGhlIGNvbW1pdCB3YXMgc3VjY2Vzc2Z1bC4gSWYgdGhl
IHRyYW5zYWN0aW9uIG1vZGlmaWVkIHRoaXMgZGF0YWJhc2UsIG5vdGlmeSB0aGUgZGVsZWdhdGVz
LgogICAgIGlmIChtX21vZGlmaWVkRGF0YWJhc2UpCiAgICAgICAgIG1fdHJhbnNhY3Rpb25DbGll
bnQtPmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oZGF0YWJhc2UoKSk7Ci0KLSAgICBtX2RhdGFi
YXNlLT5yZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdCgwLCAtMSwgMCk7IC8vIE9LCiAgICAg
cmV0dXJuIDA7CiB9CiAK
</data>
<flag name="review"
          id="218687"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>